簡體   English   中英

Openshift 3.11記錄到外部ElasticSearch實例

[英]Openshift 3.11 logging to external ElasticSearch instance

我有一個外部ElasticSearch實例,我希望Fluentd和Kibana在OSE 3.11中能夠相應地加以利用。 目前,ES實例尚不安全,因為這只是內部飛行員。 基於此處的OSE文檔( https://docs.openshift.com/container-platform/3.11/install_config/aggregate_logging.html#sending-logs-to-an-external-elasticsearch-instance ),我應該能夠更新 ElasticSearch部署配置中相應地包含許多ES_ *變量。 第一個問題是,文檔中引用的變量在ElasticSearch部署配置中不存在。

其次,我嘗試通過清單文件更新這些值。 例如,對於屬性openshift_logging_es_host ,描述聲稱: Fluentd應該在其中發送日志的Elasticsearch服務的名稱。

這些是我的清單文件中的值:

openshift_logging_install_logging=true
openshift_logging_es_ops_nodeselector={'node-role.kubernetes.io/infra':'true'}
openshift_logging_es_nodeselector={'node-role.kubernetes.io/infra':'true'}
openshift_logging_es_host='169.xx.xxx.xx'
openshift_logging_es_port='9200'
openshift_logging_es_ops_host='169.xx.xxx.xx'
openshift_logging_es_ops_port='9200'
openshift_logging_kibana_env_vars={'ELASTICSEARCH_URL':'http://169.xx.xxx.xx:9200'}
openshift_logging_es_ca=none
openshift_logging_es_client_cert=none
openshift_logging_es_client_key=none
openshift_logging_es_ops_ca=none
openshift_logging_es_ops_client_cert=none
openshift_logging_es_ops_client_key=none

在卸載/安裝日志后,似乎唯一粘在上面的變量是openshift_logging_kibana_env_vars。 我不確定為什么不尊重其他人-也許我想念一個觸發使用這些變量的人。

無論如何,在這些嘗試失敗之后,我最終找到了在日志記錄流暢的守護程序集上設置的值。 我可以通過CLI或控制台進行編輯以設置es主機,端口,客戶端密鑰,證書等。我還設置了ops等效項。 流利的日志確認已設置了這些值,但是,它嘗試將https與默認的fluentd / changeme id / pwd組合一起使用。

2019-03-08 11:49:00 -0600 [warn]: temporarily failed to flush the buffer. next_retry=2019-03-08 11:54:00 -0600 error_class="Fluent::ElasticsearchOutput::ConnectionFailure" error="Can not reach Elasticsearch cluster ({:host=>\"169.xx.xxx.xx\", :port=>9200, :scheme=>\"https\", :user=>\"fluentd\", :password=>\"obfuscated\"})!" plugin_id="elasticsearch-apps"

因此,理想情況下,我想將它們設置為庫存變量,並且一切正常。 如果有人建議解決該問題,請告訴我。

不太理想,我可以修改ES部署配置或Fluentd Dameon Set安裝后並設置所需的值,假設有人知道如何避免使用https?

感謝您的輸入。

更新:

我設法做到了這一點,但是沒有通過記錄的屬性或提供的建議來實現。 最后,我遍歷了各種劇本來確定正在使用的var。 我還必須設置雙向TLS,因為當我指定證書文件的位置為none / undefined時,日志指示“找不到文件”。 本質上,沒有或未定義的內容會翻譯為“”,並嘗試將其作為文件打開。 因此,這是屬性的神奇組合,可讓您獲得99.9%的收益。

openshift_logging_es_host=169.xx.xxx.xxx
openshift_logging_fluentd_app_host=169.xx.xxx.xxx
openshift_logging_fluentd_ops_host=169.xx.xxx.xxx
openshift_logging_fluentd_ca_path='/tmp/keys/client-ca.cer'
openshift_logging_fluentd_key_path='/tmp/keys/client.key'
openshift_logging_fluentd_cert_path='/tmp/keys/client.cer'
openshift_logging_fluentd_ops_ca_path='/tmp/keys/client-ca.cer'
openshift_logging_fluentd_ops_key_path='/tmp/keys/client.key'
openshift_logging_fluentd_ops_cert_path='/tmp/keys/client.cer'

筆記:

  • 您需要/tmp/keys復制到/tmp/keys
  • 完成后,您會注意到將不會在守護程序集上設置OPS_HOST。 我把它留在上面的屬性中,因為我認為它只是一個錯誤,也許會在我正在使用的3.11之后修復。 要進行調整,只需oc edit ds/logging-fluentd並進行相應修改。

通過這些更改,日志數據將發送到我的外部ES實例。

我的建議是一個不太理想的解決方案,該解決方案是使用secure-forward.conf forward.conf將日志發送到外部日志聚合器,有關更多故障,請參考配置流利的將日志發送到外部日志聚合器部分。

您可以配置無https secure_forward 輸出插件以及secure_forward插件。

對於Instnace,

# oc edit cm logging-fluentd -n openshift-logging
...
  secure-forward.conf: |
    <store>
      @type elasticsearch
      host external.es.example.com
      port 9200
    </store>
...

更新 :我已經針對外部fluentd而不是ES進行了測試,因為我手中沒有外部ES實例。 為了檢查日志激活,我還在測試期間將日志作為文件打印了出來。

  secure-forward.conf: |
    <store>
    @type forward
     <server>
       host external.fluented.example.com
       port 24224
     </server>
    </store>
    <store>
    @type file
    path /var/log/secure-forward-test.log
    </store>

我已驗證上述配置可以將日志傳輸到外部fluentd本地日志文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM