跳至內容

如何在 Amazon Linux 上使用 Filebeat 和 Logstash 連線到 OpenSearch Service?

4 分的閱讀內容
0

我想使用 Amazon Linux 上的 Filebeat 和 Logstash 連線到 Amazon OpenSearch Service 叢集,但收到錯誤。

解決方法

設定安全連接埠

若要使用 Logstash 連線到 OpenSearch Service,請設定安全連接埠以轉送來自 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 Managers (RPMs) 下載到每個執行個體。為了防止管道中出現單點故障,請勿在同一個執行個體上執行 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 儀表板,您的管線將類似以下範例:

Filebeat > Logstash > Amazon OpenSearch Service/Dashboards

對 401、403 和 Logstash x-pack 安裝錯誤進行疑難排解

401 未授權錯誤

如果 Logstash 傳回「401 Unauthorized」錯誤,表示您的 OpenSearch Service 網域使用了以下其中一項安全性功能:

  • FGAC
  • Amazon Cognito 驗證

若要解決此問題,請將驗證憑證新增至 Logstash 組態檔案 /etc/logstash/conf.d/logstash.conf

組態範例:

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 Resource Name (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 外掛程式啟動錯誤,請關閉組態檔案中的 Index Life Management (ILM) 設定:
    在 Filebeat 中,設定 ilm.enabled: false
    在 Logstash 中,設定 ilm_enabled => false

相關資訊

使用 Logstash 將資料載入到 Amazon OpenSearch Service

AWS 官方已更新 7 個月前