如何在 Amazon Linux 上使用 Filebeat 和 Logstash 连接到 OpenSearch Service?
我在 Amazon Linux 上使用 Filebeat 和 Logstash 连接到 Amazon OpenSearch Service 集群,但是收到了错误。
简短描述
要使用 Logstash 连接到 Amazon OpenSearch Service,请完成以下步骤:
1. 设置您的安全端口(例如端口 443),将日志转发到 OpenSearch Service。
2. 更新您的 Filebeat、Logstash 和 OpenSearch Service 配置。
3. 在您的源 Amazon Elastic Compute Cloud(Amazon EC2)实例上安装 Filebeat。确保正确安装和配置 YAML 配置文件。
4. 在从中发送日志的单独 Amazon EC2 实例上安装 Logstash。
**注意:**如果您没有正确设置或配置 Logstash,就会收到 401 授权错误、403 禁止访问错误或 x-pack 安装错误。
解决方法
设置您的安全端口
设置您的安全端口以转发来自 Logstash 的日志:
1. 创建一个 EC2 实例并安装好 Apache 和 Filebeat,以便该实例能够将日志从 Logstash 转发到 OpenSearch Service。
2. 确保您的 EC2 实例与 OpenSearch Service 的虚拟私有云(VPC)位于同一个安全组中。
3. 确保您的安全组中的端口 80、443 和 5044 处于打开状态,以便您能够在 Logstash 和 OpenSearch Service 之间发送数据。
更新您的 Filebeat、Logstash 和 OpenSearch Service 配置
当您使用的 Filebeat 和 Logstash 版本相同时,配备旧版 Elasticsearch 的 OpenSearch Service 运行效果最好。使用适合以下服务版本的兼容版本:
- Filebeat 版本 x.x
- Logstash 版本 x.x(Log4j 安全补丁的 v7.16.2 和 v6.8.22)
- 配备旧版 Elasticsearch 版本 x.x 的 OpenSearch Service
在前面的示例中,版本号的“x.x”必须与您的配置相匹配。
注意:
- 如果您使用的是兼容性模式的 OpenSearch Service 1.x,则 OpenSearch Service 报告的版本为 7.10。查看兼容性矩阵以选择正确版本的 Filebeat 和 Logstash。有关详细信息,请参阅 Elasticsearch 网站上的支持矩阵。
- 如果您使用的是 OpenSearch Service 版本 1.0 或更高版本,请确保在首次启动域时已启用兼容性模式。
为确保下载的软件保持同步,请将 RPM 下载到每个 EC2 实例。为防止管道出现单点故障,请勿在同一 EC2 实例上运行 Filebeat 和 Logstash。
在源 EC2 实例上安装 Filebeat
1. 为兼容的 Filebeat 版本下载 RPM:
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-oss-7.16.2-x86_64.rpm
2. 安装 Filebeat RPM 文件:
rpm -ivh filebeat-oss-7.16.2-x86_64.rpm
在从中发送日志的单独 EC2 实例上安装 Logstash
1. 为兼容的 Logstash 版本下载 RPM 文件:
wget https://artifacts.elastic.co/downloads/logstash/logstash-oss-7.16.2-x86_64.rpm
**注意:**此示例使用了版本 7.16 的 Filebeat 和 Logstash,且激活了兼容性模式的 OpenSearch Service 版本 1.1。
2. 在您的 EC2 实例上安装 Java 或 OpenJDK:
yum install java-1.8.0-*
3. 运行 rpm 命令安装您为 Logstash 下载的 RPM 文件:
rpm -ivh logstash-oss-7.16.2-x86_64.rpm
**注意:**Logstash 需要 Java 才能运行。此示例使用的是 Java 版本 8(Open JDK 1.8),所有版本的 Logstash 均支持这一版本。有关支持的 Java 和 Logstash 版本的详细信息,请参阅 Elasticsearch 网站上的支持矩阵。
4. 安装适用于 OpenSearch Service 的 Logstash 插件:
bin/logstash-plugin install logstash-output-opensearch
5. 验证是否已安装适用于 OpenSearch 的 Logstash 插件:
bin/logstash-plugin list
**注意:**Logstash OSS 版本 7.12.1 同时支持 logstash-output-elasticsearch 和 logstash-output-opensearch 插件。Logstash OSS 版本 7.13 及更高版本仅支持 logstash-output-opensearch 插件。
6. 检查 /etc/filebeat 和 /etc/logstash 目录以验证配置文件。
7. 对于 Filebeat,将输出更新到 Logstash 或 OpenSearch Service(从 GitHub 网站)。指定发送日志,然后启动您的服务。
**注意:**如果您尝试使用 Filebeat 将模板上传到 OpenSearch Dashboards,则上传会失败。Filebeat 假设您的集群支持 x-pack 插件。
8. 更新您的 Filebeat YAML 配置文件,将 Apache 访问日志发送到 Logstash。
YAML 文件示例:
filebeat.inputs: - type: log enabled: true paths: - /var/log/*.log filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: false setup.template.settings: index.number_of_shards: 1 index.codec: best_compression #output.elasticsearch: #hosts: ["vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com:443"] #protocol: "https" output.logstash: # The Logstash hosts hosts: ["Logstash-EC2-InstanceIP:5044"] setup.ilm.enabled: false ilm.enabled: false
9. 确保您的 Logstash 配置文件可以在端口 5044 上访问 Filebeat。通过访问端口 5044,Logstash 可以将请求转发到您的 OpenSearch Service VPC 端点。
Logstash 文件示例:
input { beats { port => 5044 } } output { opensearch { hosts => ["https://domain-endpoint:443"] ssl => true index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" user => "my-username" password => "my-password" } }
10. 确保您可以从您的 Logstash 实例访问 OpenSearch Service 端点:
curl -XGET https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com
11. (可选)如果您激活了细粒度访问控制(FGAC),请运行以下命令:
curl -u my-username:my-password -XGET https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com
**注意:**如果您遇到超时问题,请确保您的 Logstash EC2 实例与您的 OpenSearch Service 的 VPC 位于同一个安全组中。此外,请确保您的安全组中的端口 80、443 和 5044 处于打开状态。
12. 运行以下命令在每个实例上启动 Filebeat 和 Logstash 服务:
Filebeat
systemctl start filebeat (service filebeat start)
Logstash
cp /etc/logstash/logstash.conf /etc/logstash/conf.d/ systemctl start logstash (service logstash start)
13. 对您的 OpenSearch Service 域运行 cat indices API 调用,以确认正在发送 Filebeat 日志。如果您的日志发送成功,则您会收到以下响应:
curl -XGET https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com/_cat/indices green open filebeat-7.16.2-2022.01.27 f97c4WnuQ-CtsAJJaJHUlg 1 1 1511515 0 249.7mb 124.7mb green open .kibana_1 Ioco6fUoSCGkaOvHNCL39g 1 1 1 0 7.4kb 3.7kb
默认情况下,Filebeat 索引每天轮换。
Filebeat 索引的输出示例:
curl -XGET https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com/_cat/indices green open filebeat-7.16.2-2022.01.27 f97c4WnuQ-CtsAJJaJHUlg 1 1 1511515 0 249.7mb 124.7mb green open .kibana_1 Ioco6fUoSCGkaOvHNCL39g 1 1 1 0 7.4kb 3.7kb green open filebeat-7.16.2-2022.01.28 4i8W0smlRGGFcQOaDMxonA 1 1 89 0 207.1kb 118.1kb
如果您成功使用 Amazon EC2 Linux 配置了 Filebeat、Logstash 和 OpenSearch Dashboards,则您的管道如下所示:
Filebeat > Logstash > Amazon OpenSearch Service/Dashboards
401 未授权错误
来自 Logstash 的 401 未授权错误表明您的 OpenSearch Service 域受到 FGAC 或 Amazon Cognito 的保护。FGAC 要求用户或角色签署请求,您必须在域的访问策略中定义这些请求。如果您收到 401 未授权错误,请在 Logstash 配置文件中启用 FGAC。
Logstash 文件示例:
output { opensearch { hosts => ["https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com:443"] index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" ilm_enabled => false user => "my-username" password => "my-password" } }
403 禁止访问错误
当您使用 Logstash 向 OpenSearch Service 发送数据时,您可能会收到 403 禁止访问错误。当 Logstash 没有必要的权限并且无法验证您的 AWS Identity and Access Management(AWS IAM)身份时,就会出现此错误。要解决此问题,请使用您的 IAM 证书签署您的 OpenSearch Service 请求。
使用 Logstash 签署 OpenSearch 服务请求:
1. 安装适用于 OpenSearch Service 的 Logstash 插件:
bin/logstash-plugin install logstash-output-opensearch
2. 将 IAM 角色附加到实例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "es:ESHttp*" ], "Resource": "[Amazon-OpenSearch-Domain-ARN]" } ] }
3. 更新您的 Logstash 配置设置,使用“opensearch”Logstash 插件作为管道中的输出:
output { opensearch { hosts => ["domain-endpoint"] ssl => true region => "us-east-1" index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" } }
Logstash x-pack 安装错误
如果您在启动 Logstash 时遇到 x-pack 错误,请手动禁用注册表文件中的 x-pack 插件。
手动禁用 x-pack 插件:
1. 打开以下文件:
/usr/share/logstash/logstash-core/lib/logstash/plugins/registry.rb
2. 查找 load_xpack 并添加内联注释:
"load_xpack unless LogStash::OSS" >> "#load_xpack unless LogStash::OSS"
注意:您可以检查配置文件,以确认索引生命周期管理(ILM)设置 ilm.enabled 和ilm_enabled 均设置为 false。在配置文件中禁用这些 ILM 设置可以消除 x-pack 插件的启动错误。
相关信息
相关内容
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 3 年前