elasticsearch - 如何设置 logstash 配置输出以同时使用 HTTP 和其他 HTTPS 端点?
问题描述
我想从logstash向2个端点发送数据,其中一个是HTTP端点,另一个是HTTPS。
我尝试将 HTTPS 端点的用户名和密码放入 url 本身,但 logstash 也将这些字段 [用户名和密码] 用于另一个端点。
我当前的输出字段,如果喜欢:
output {
elasticsearch{
index => "index_name"
document_id => "%{index_id}"
hosts => ["https://elastic:pass@clusterid.asia-northeast1.gcp.cloud.es.io:9243",
"http://127.0.0.1:9200"]
}
}
在日志中获取此消息:
Elasticsearch pool URLs updated {:changes=>{:removed=>[], :added=>[https://elastic:xxxxxx@clusterid.asia-northeast1.gcp.cloud.es.io:9243/, https://elastic:xxxxxx@127.0.0.1:9200/]}}
和这个:
[logstash.agent] Failed to execute action {:id=>:"cloud-elastic", :action_type=>LogStash::ConvergeResult::FailedAction, :message=>"Could not execute action: PipelineAction::Create<cloud-elastic>, action_result: false", :backtrace=>nil}
解决方案
请尝试对 https 和 http 使用不同的 elasticsearch 输出,以下设置
if "Https" in [tag]{
elasticsearch {
hosts => [ "https://elastic:pass@clusterid.asia-northeast1.gcp.cloud.es.io:9243" ]
user => "${ES_USER:admin}"
password => "${ES_PWD:admin}"
ssl => true
ssl_certificate_verification => false
cacert => "${CERTS_DIR}/certs/ca.crt"
index => "%{[docInfo][index]}"
action => "index"
}
} else {
elasticsearch {
hosts => [ "http://127.0.0.1:9200" ]
index => "%{[docInfo][index]}"
action => "index"
}
}
在 .bashrc 文件中
设置以下环境变量
export ES_USER=elastic
export ES_PWD=pass
export CERTS_DIR=/home/abc
推荐阅读
- python - AWS Boto3 删除对象因 TypeError 失败:delete_objects() 仅接受关键字参数
- python - 这是通过考虑python中相应列表的元素从列表中选择某个索引的合理方法吗?
- php - 当表达式作为闭包内数字数组的索引传递时,为什么PHP会抛出错误
- godot - GD 脚本。如何在 Godot 中创建自己的库并从游戏脚本中访问它
- java - 如何在 Java 开关中使用开关盒外的变量?
- php - 为什么此服务提供商的绑定不起作用?
- python - 安装kivy时出错
- firebase - Firebase 可调用函数,限制调用到 APP
- java - 如何在java中添加新记录?
- uml - 系统是否应该成为社交网络应用程序用例图中的参与者