首页 > 解决方案 > 如何设置 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}

标签: elasticsearchlogstashlogstash-configuration

解决方案


请尝试对 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

推荐阅读