如何在 Amazon Linux 上使用 Filebeat 和 Logstash 连接到 OpenSearch Service?
我想要在 Amazon Linux 上使用 Filebeat 和 Logstash 连接到 Amazon OpenSearch Service 集群,但是收到了错误。
解决方法
设置安全端口
要使用 Logstash 连接到 OpenSearch 服务,请设置安全端口以转发来自 Logstash 的日志。
完成以下步骤:
- 启动适用于 Filebeat 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例,然后启动另一个实例,让 Logstash 从中发送日志。
- 确认您的 EC2 实例与 OpenSearch Service 的虚拟私有云 (VPC) 位于同一个安全组中。
- 确保您的安全组中的端口 80、443 和 5044 处于打开状态,以便您能够在 Logstash 和 OpenSearch Service 之间发送数据。
更新 Filebeat、Logstash 和 OpenSearch Service 配置
最佳做法是使用将您的 OpenSearch Service 与旧版 Elasticsearch 版本相匹配的 Filebeat 和 Logstash 版本。使用与您的域版本相匹配的 Filebeat 和 Logstash 版本。
例如,如果您使用的是兼容模式的 OpenSearch Service 1.x,则 OpenSearch Service 报告的版本为 7.10。查看兼容性矩阵以选择正确版本的 Filebeat 和 Logstash。有关详细信息,请参阅 Elastic 网站上的支持矩阵或 OpenSearch 网站上的兼容性矩阵。
如果您使用 OpenSearch Service 版本 1.0 或更高版本,请在启动域时开启兼容模式。
为确保下载的软件保持同步,请将 Red Hat Package Manager (RPM) 下载到每个实例。为防止管道出现单点故障,请勿在同一实例上运行 Filebeat 和 Logstash。
在源 EC2 实例上安装 Filebeat
要在源实例上安装 Filebeat,请完成以下步骤:
-
运行以下命令以下载用于兼容 Filebeat 版本的 RPM:
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-oss-8.15.2-x86_64.rpm -
运行以下命令以安装 Filebeat RPM 文件:
rpm -ivh filebeat-oss-8.15.2-x86_64.rpm
在单独的 EC2 实例上安装和配置 Logstash
完成以下步骤:
-
运行以下命令以下载兼容的 Logstash RPM 文件:
wget https://artifacts.elastic.co/downloads/logstash/logstash-oss-8.15.2-x86_64.rpm -
运行以下命令以在您的 EC2 实例上安装 Java 或 OpenJDK:
yum install java-1.8.0-***注意:**前面的命令使用 Java 版本 8 (OpenJDK 1.8)。所有 Logstash 版本都支持 Java 版本 8。
-
运行以下命令以安装 Logstash RPM 文件:
rpm -ivh logstash-oss-8.15.2-x86_64.rpm -
运行以下命令以打开 Logstash 数据目录:
cd /usr/share/logstash/ -
运行以下命令以安装适用于 Logstash 的 OpenSearch Service 插件:
bin/logstash-plugin install logstash-output-opensearch -
要验证 Logstash 插件的安装,请运行以下命令:
bin/logstash-plugin list**注意:**对于 Logstash OSS 7.13 及更高版本,仅使用 logstash-output-opensearch 插件。版本 7.12.1 同时支持 logstash-output-elasticsearch 和 logstash-output-opensearch 插件。
-
要验证配置目录是否存在,请检查 /etc/filebeat 和 /etc/logstash 目录。
-
要通过 Logstash 发送日志,请在 /etc/filebeat/filebeat.yml 中创建 Filebeat 配置文件。
Filebeat 配置文件示例: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: ["your-domain-endpoint"] #protocol: "https" output.logstash: # The Logstash hosts hosts: ["Logstash-EC2-InstanceIP:5044"] setup.ilm.enabled: false ilm.enabled: false**注意:**请将 Logstash-EC2-InstanceIP:5044 替换为您的 Logstash 实例的 IP 地址,并将 your-domain-endpoint 替换为您的域端点。您也可以将日志直接发送到 OpenSearch Service。有关详细信息,请参阅 GitHub 网站上的 logstash-output-opensearch。
-
在 /etc/logstash/conf.d/logstash.conf 中创建 Logstash 配置文件。
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" } }
**注意:**请将 domain-endpoint、my-username 和 my-password 替换为您的值。 要测试与 OpenSearch Service 端点的连接,请运行以下命令:
curl -XGET https://your-domain-endpoint
**注意:**请将 your-domain-endpoint 替换为您的域端点。 (可选)如果您已启用精细访问控制 (FGAC),请运行以下命令:
curl -u my-username:my-password -XGET https://your-domain-endpoint
**注意:**请将 your-domain-endpoint 替换为您的域端点。 运行以下命令以启动 Filebeat 和 Logstash 服务:
systemctl start filebeat
systemctl start logstash
- 要确认 Filebeat 日志已发送,请对您的 OpenSearch Service 域运行以下 curl 命令:
curl -XGET https://your-domain-endpoint/_cat/indices
**注意:**请将 your-domain-endpoint 替换为您的域端点。
Filebeat 索引的输出示例:
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.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 Dashboard,则您的管道如下所示:
Filebeat > Logstash > Amazon OpenSearch Service/Dashboards
对 401、403 和 Logstash x-pack 安装错误进行故障排除
401 Unauthorized 错误
如果 Logstash 返回 "401 Unauthorized" 错误,则您的 OpenSearch Service 域将使用以下安全功能之一:
- FGAC
- Amazon Cognito 身份验证
要解决此问题,请在 /etc/logstash/conf.d/logstash.conf 的 Logstash 配置文件中添加身份验证凭证。
配置示例:
output { opensearch { hosts => ["https://your-domain-endpoint"] index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" ilm_enabled => false user => "my-username" password => "my-password" } }
**注意:**请将 your-domain-endpoint、my-username 和 my-password 替换为您的 OpenSearch Service 域的值。
403 Forbidden 错误
如果 Logstash 不具有访问 OpenSearch Service 所需的 AWS Identity and Access Management (IAM) 权限,则会出现 "403 Forbidden" 错误。
要解决此问题,请完成以下步骤:
-
运行以下命令以安装适用于 Logstash 的 OpenSearch Service 插件:
bin/logstash-plugin install logstash-output-opensearch -
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "es:ESHttp*" ], "Resource": "[Amazon-OpenSearch-Domain-ARN]" } ] }**注意:**请将 Amazon-OpenSearch-Domain-ARN 替换为您的 OpenSearch Service 域的 Amazon 资源名称 (ARN)。
-
在 /etc/logstash/conf.d/logstash.conf 中更新您的 Logstash 配置文件。
Logstash 配置文件示例:output { opensearch { hosts => ["domain-endpoint"] ssl => true region => "example_region" index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" } }**注意:**请将 domain-endpoint 和 example-region 替换为您的 OpenSearch Service 域的值。
Logstash x-pack 安装错误
如果 Logstash 由于 "x-pack plugin" 错误而无法启动,请完成以下步骤:
-
打开以下注册表文件:
/usr/share/logstash/logstash-core/lib/logstash/plugins/registry.rb -
找到以下代码行:
load_xpack unless LogStash::OSS -
将代码更新为以下示例:
#load_xpack unless LogStash::OSS -
为防止 x-pack plugin 启动错误,请关闭配置文件上的索引生命周期管理 (ILM) 设置:
在 Filebeat 中,配置 ilm.enabled: false。
在 Logstash 中,配置 ilm_enabled => false。
相关信息
- 语言
- 中文 (简体)
