![](/img/trans.png)
[英]LooseVersion instance has no attribute version - awx installation in openshift error
[英]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
。 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.