使用 Logstash 将数据加载到 Amazon OpenSearch Service
开源版本的 Logstash (Logstash OSS) 提供了一种使用批量 API 将数据上传到您的 Amazon OpenSearch Service 域的便捷方法。该服务支持所有标准 Logstash 输入插件,包括 Amazon S3 输入插件。OpenSearch Service 支持 logstash-output-opensearch
配置
Logstash 配置因域使用的身份验证类型不同而不同。
无论使用何种身份验证方法,都必须在配置文件的输出部分中将 ecs_compatibility 设置为 disabled。Logstash 8.0 引入了一项突破性更改,其中所有插件都默认以 ECS 兼容模式
精细访问控制配置
如果您的 OpenSearch Service 域使用具有 HTTP 基本身份验证的对访问权限的精细控制,则配置与任何其他 OpenSearch 集群相似。此示例配置文件从开源版本的 Filebeat (Filebeat OSS) 获取其输入。
input { beats { port => 5044 } } output { opensearch { hosts => "https://domain-endpoint:443" user => "my-username" password => "my-password" index => "logstash-logs-%{+YYYY.MM.dd}" ecs_compatibility => disabled ssl_certificate_verification => 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 凭证对所有 OpenSearch Service 请求进行签名。以下基于身份的策略将所有 HTTP 请求授予域的子资源。
要设置 Logstash 配置,请将您的配置文件更改为使用插件进行输出。此示例配置文件从 S3 存储桶中的文件获取其输入:
input { s3 { bucket => "amzn-s3-demo-" region => "us-east-1" } } output { opensearch { hosts => ["domain-endpoint:443"] auth_type => { type => 'aws_iam' aws_access_key_id => 'your-access-key' aws_secret_access_key => 'your-secret-key' region => 'us-east-1' } index => "logstash-logs-%{+YYYY.MM.dd}" ecs_compatibility => disabled } }
如果您不想在配置文件中提供 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"
如果您的 OpenSearch Service 域位于 VPC 中,则 Logstash OSS 系统必须能够连接到 VPC,并且可以通过 VPC 安全组访问该域。有关更多信息,请参阅 关于 VPC 域的访问策略。