跳至内容

如何在 Amazon Linux 上使用 Filebeat 和 Logstash 连接到 OpenSearch Service?

4 分钟阅读
0

我想要在 Amazon Linux 上使用 Filebeat 和 Logstash 连接到 Amazon OpenSearch Service 集群,但是收到了错误。

解决方法

设置安全端口

要使用 Logstash 连接到 OpenSearch 服务,请设置安全端口以转发来自 Logstash 的日志。

完成以下步骤:

  1. 启动适用于 Filebeat 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例,然后启动另一个实例,让 Logstash 从中发送日志。
  2. 确认您的 EC2 实例与 OpenSearch Service 的虚拟私有云 (VPC) 位于同一个安全组中。
  3. 确保您的安全组中的端口 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,请完成以下步骤:

  1. 使用 SSH 连接到您为 Filebeat 启动的实例

  2. 运行以下命令以下载用于兼容 Filebeat 版本的 RPM:

    wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-oss-8.15.2-x86_64.rpm
  3. 运行以下命令以安装 Filebeat RPM 文件:

    rpm -ivh filebeat-oss-8.15.2-x86_64.rpm

在单独的 EC2 实例上安装和配置 Logstash

完成以下步骤:

  1. 使用 SSH 连接到您为 Logstash 启动的实例

  2. 运行以下命令以下载兼容的 Logstash RPM 文件:

    wget https://artifacts.elastic.co/downloads/logstash/logstash-oss-8.15.2-x86_64.rpm
  3. 运行以下命令以在您的 EC2 实例上安装 Java 或 OpenJDK:

    yum install java-1.8.0-*

    **注意:**前面的命令使用 Java 版本 8 (OpenJDK 1.8)。所有 Logstash 版本都支持 Java 版本 8。

  4. 运行以下命令以安装 Logstash RPM 文件:

    rpm -ivh logstash-oss-8.15.2-x86_64.rpm
  5. 运行以下命令以打开 Logstash 数据目录:

    cd /usr/share/logstash/
  6. 运行以下命令以安装适用于 Logstash 的 OpenSearch Service 插件:

    bin/logstash-plugin install logstash-output-opensearch
  7. 要验证 Logstash 插件的安装,请运行以下命令:

    bin/logstash-plugin list

    **注意:**对于 Logstash OSS 7.13 及更高版本,仅使用 logstash-output-opensearch 插件。版本 7.12.1 同时支持 logstash-output-elasticsearchlogstash-output-opensearch 插件。

  8. 要验证配置目录是否存在,请检查 /etc/filebeat/etc/logstash 目录。

  9. 要通过 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

  10. /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-endpointmy-usernamemy-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
  1. 要确认 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-endpointmy-usernamemy-password 替换为您的 OpenSearch Service 域的值。

403 Forbidden 错误

如果 Logstash 不具有访问 OpenSearch Service 所需的 AWS Identity and Access Management (IAM) 权限,则会出现 "403 Forbidden" 错误。

要解决此问题,请完成以下步骤:

  1. 运行以下命令以安装适用于 Logstash 的 OpenSearch Service 插件:

    bin/logstash-plugin install logstash-output-opensearch
  2. 创建 IAM 角色

  3. 创建以下策略,然后将其附加到 IAM 角色

    {  
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "es:ESHttp*"
          ],
          "Resource": "[Amazon-OpenSearch-Domain-ARN]"
        }
      ]
    }

    **注意:**请将 Amazon-OpenSearch-Domain-ARN 替换为您的 OpenSearch Service 域的 Amazon 资源名称 (ARN)。

  4. /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-endpointexample-region 替换为您的 OpenSearch Service 域的值。

Logstash x-pack 安装错误

如果 Logstash 由于 "x-pack plugin" 错误而无法启动,请完成以下步骤:

  1. 打开以下注册表文件:

    /usr/share/logstash/logstash-core/lib/logstash/plugins/registry.rb
  2. 找到以下代码行:

    load_xpack unless LogStash::OSS
  3. 将代码更新为以下示例:

    #load_xpack unless LogStash::OSS
  4. 为防止 x-pack plugin 启动错误,请关闭配置文件上的索引生命周期管理 (ILM) 设置:
    在 Filebeat 中,配置 ilm.enabled: false
    在 Logstash 中,配置 ilm_enabled => false

相关信息

使用 Logstash 将数据加载到 Amazon OpenSearch Service

AWS 官方已更新 1 年前