Openshift 3.11记录到外部ElasticSearch实例

时间:2019-03-11 04:01:07

标签: ansible openshift redhat ansible-inventory openshift-enterprise

我有一个外部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。我不确定为什么不尊重其他人-也许我想念一个触发使用这些变量的人。

无论如何,在这些尝试失败之后,我最终在日志流利的Daemon Set上找到了设置的值。我可以通过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
  • 完成后,您会注意到将不会在Daemon Set上设置OPS_HOST。我把它留在上面的属性中,因为我认为它只是一个错误,也许会在我正在使用的3.11之后修复。要简单地oc edit ds/logging-fluentd进行调整并进行相应的修改。

通过这些更改,日志数据将发送到我的外部ES实例。

0 个答案:

没有答案