使用 Logstash 加载数据 - Amazon Elasticsearch Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Logstash 加载数据

开源版本的 Logstash (Logstash OSS) 提供了一种使用批量 API 将数据上传到您的 Amazon ES 域的便捷方法。此服务支持所有标准 Logstash 输入插件,包括 Amazon S3 输入插件。Amazon ES 支持两个 Logstash 输出插件:标准 Elasticsearch 插件和 logstash-output-amazon-es 插件,后一种插件使用 IAM 凭证对 Logstash 事件进行签名并导出到 Amazon ES.

如果您的Amazon ES域使用与 HTTP 基本身份验证的精细访问控制,则配置类似于任何其他Elasticsearch集群。此示例配置文件从开源版本的 Filebeat (Filebeat OSS) 获取其输入。

input { beats { port => 5044 } } output { elasticsearch { hosts => ["https://domain-endpoint:443"] ssl => true index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" user => "some-user" password => "some-user-password" ilm_enabled => false } }

配置因 Beats 应用程序和使用案例而异,但您的 Filebeat OSS 配置可能如下所示:

filebeat.inputs: - type: log enabled: true paths: - /path/to/logs/dir/*.log filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: false setup.ilm.enabled: false setup.ilm.check_exists: false setup.template.settings: index.number_of_shards: 1 output.logstash: hosts: ["logstash-host:5044"]

如果您的域对 IAM 主用户使用基于 IAM 的域访问策略或精细访问控制,必须使用 IAM 凭证对所有 Amazon ES 请求进行签名。在这种情况下,签署来自 Logstash OSS 的请求的最简单解决方案是使用 logstash-output-amazon-es 插件。首先,安装该插件。

bin/logstash-plugin install logstash-output-amazon_es

然后,导出您的 IAM 凭证(或运行 aws configure).

export AWS_ACCESS_KEY_ID="your-access-key" export AWS_SECRET_ACCESS_KEY="your-secret-key" export AWS_SESSION_TOKEN="your-session-token"

最后,将您的配置文件更改为使用插件进行输出。此示例配置文件从 S3 存储桶中的文件获取其输入。

input { s3 { bucket => "my-s3-bucket" region => "us-east-1" } } output { amazon_es { hosts => ["domain-endpoint"] ssl => true region => "us-east-1" index => "production-logs-%{+YYYY.MM.dd}" } }

如果您的Amazon ES域位于 VPC 中,则 Logstash OSS 计算机必须能够连接到 VPC 并且可以通过 VPC 安全组访问域。有关更多信息,请参阅关于 VPC 域的访问策略.