【问题标题】:Stream data to amazon elasticsearch using logstash?使用logstash将数据流式传输到亚马逊弹性搜索?
【发布时间】:2016-10-13 14:53:37
【问题描述】:

所以我启动了一个 2 实例 Amazon Elasticsearch 集群。

我已经安装了logstash-output-amazon_es 插件。这是我的 logstash 配置文件:

input {
    file {
        path => "/Users/user/Desktop/user/logs/*"
    }
}

filter {
  grok {
    match => {
      "message" => '%{COMMONAPACHELOG} %{QS}%{QS}'
    }
  }

  date {
    match => [ "timestamp", "dd/MMM/YYYY:HH:mm:ss Z" ]
    locale => en
  }

  useragent {
    source => "agent"
    target => "useragent"
  }
}

output {
    amazon_es {
        hosts => ["foo.us-east-1.es.amazonaws.com"]
        region => "us-east-1"
        index => "apache_elk_example"
        template => "./apache_template.json"
        template_name => "apache_elk_example"
        template_overwrite => true
    }
}

现在我从我的终端运行它:

/usr/local/opt/logstash/bin/logstash -f apache_logstash.conf

我得到错误:

Failed to install template: undefined method `credentials' for nil:NilClass {:level=>:error}

我想我完全搞错了。基本上我只想通过logstash向我的亚马逊elasticsearch集群提供一些虚拟日志输入。我应该如何进行?

编辑存储类型为实例,访问策略设置为可供所有人访问。

编辑

output {
    elasticsearch {
        hosts => ["foo.us-east-1.es.amazonaws.com"]
        ssl => true
    index => "apache_elk_example"
         template => "./apache_template.json"
          template_name => "apache_elk_example"
          template_overwrite => true

    }
}

【问题讨论】:

    标签: amazon-web-services elasticsearch logstash amazon-elasticsearch


    【解决方案1】:

    我也遇到了同样的问题,我通过在主机名后面提到端口来解决它。 这是因为主机名hosts => ["foo.us-east-1.es.amazonaws.com"] 指向foo.us-east-1.es.amazonaws.com:9200,这不是aws elasticsearch 的默认端口。所以通过将主机名更改为foo.us-east-1.es.amazonaws.com:80 即可解决问题。

    【讨论】:

      【解决方案2】:

      我能够在没有 AccessKey 的情况下与 AWS Elasticsearch 一起运行 logstash,我在 ES 服务中配置了策略。

      如果您手动启动logstash,它可以在没有密钥的情况下工作,如果您将logstash 作为服务启动,则插件不会工作。

      https://github.com/awslabs/logstash-output-amazon_es/issues/34

      【讨论】:

      • 这不是一个好主意,因为这意味着您的弹性搜索实例是公开可用的
      • 同意这不是最好的解决方案:)
      【解决方案3】:

      您需要提供以下两个参数:

      • aws_access_key_id
      • aws_secret_access_key

      尽管它们被描述为可选参数,但代码中的one comment 清楚地说明了这一点。

      此>插件当前需要 aws_access_key_id 和 aws_secret_access_key 才能正常工作。后续版本的凭证解析逻辑如下:

      【讨论】:

      • 这可能不是 logstash 问题,但更可能是 AWS IAM 端的错误安全设置。
      • 是的,我正在努力解决这个问题。与此同时,我想只使用 elasticsearch 输出插件......我得到了:connect timed out {:class=>"Manticore::ConnectTimeout", :level=>:error } 我已经为此添加了代码作为编辑,以防您提出建议。
      • 我要更新评论了。此问题已得到修复,我们有很多客户使用实例配置文件解析凭据
      猜你喜欢
      • 2016-12-16
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 2013-01-06
      • 2016-01-28
      • 1970-01-01
      相关资源
      最近更新 更多