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

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

使用日志将数据加载到 Amazon Elasticsearch Service

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

如果您的亚马逊 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 的请求进行签名的最简单办法是使用对数据-输出-亚马逊插件。首先,安装该插件。

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 域的访问策略