如何在 Amazon Linux 上使用 Filebeat 和 Logstash 連線至 Amazon OpenSearch Service?
我試圖使用 Amazon Linux 上的 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 Config 檔案。
4. 在傳送日誌之單獨的 Amazon EC2 執行個體上安裝 Logstash。
如果您未正確設定或配置 Logstash,則會收到下列其中一個錯誤:401 授權錯誤、403 禁止錯誤或 x-pack 安裝錯誤。
解決方案
請設定您的安全連接埠
請確定您有設定安全連接埠,以便您的 EC2 執行個體可以將日誌轉發到 OpenSearch Service。
若要設定安全性連接埠以從 Logstash 轉寄日誌,請執行下列步驟:
1. 請建立一個已安裝 Apache 和 Filebeat 的 EC2 執行個體。EC2 執行個體必須能夠將日誌從 Logstash 轉發到 OpenSearch Service。
2. 請確定您的 EC2 執行個體與 OpenSearch Service 的 Virtual Private Cloud (VPC) 位於同一個安全群組中。
3. 請確定您的安全群組中已開啟下列連接埠:80、443 和 5044。必須開啟這些連接埠,才能在 Logstash 和 OpenSearch Service 之間傳送資料。
請更新您的 Filebeat、Logstash 和 OpenSearch Service 組態
使用相同的 OSS 版本,可使 OpenSearch Service 執行效果最佳。因此,請嘗試為以下內容使用相容版本:
- Filebeat x.x OSS 版
- Logstash x.x OSS 版 (用於 Log4j 安全修補程式的 7.16.2 和 6.8.22 版)
- OpenSearch Service x.x 版
要確保下載的軟體保持同步,請將 RPM 下載到每個 (單獨的) EC2 執行個體。要防止管道中出現單點故障,請務必避免在同一 EC2 執行個體上執行 Filebeat 和 Logstash 服務。
**請注意:**如果您使用的是 1.0 或更高版本的 OpenSearch Service,請確保在首次啟動網域時啟用了相容模式。請注意,您只能透過 AWS 管理主控台啟用相容模式。
在來源 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
此範例使用 6.7 版來符合 OpenSearch Service 和 Filebeat 的版本編號。
2. 在安裝 Logstash RPM 檔案之前,在您的 EC2 執行個體上安裝 Java 或 OpenJDK:
yum install java-1.8.0-*
3. 安裝 Java 後,請使用 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. 請檢查 “/etc/filebeat” 和 ”/etc/logstash” 目錄以驗證組態檔案。
5. 對於 Filebeat,請將輸出更新為 Logstash 或 OpenSearch Service,並指定必須傳送日誌。然後,開始您的服務。
**注意:**若您嘗試使用 Filebeat 將範本上傳至 OpenSearch Dashboards,上傳會失敗。Filebeat 假設您的叢集具有 x-pack 外掛程式支援。
6. 請更新您的 Filebeat YAML 組態檔案以將 Apache 存取日誌發送到 Logstash。
例如:
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
7. 請確定您的 Logstash 組態檔案可以存取連接埠 5044 上的 Filebeat。此連接埠存取允許 Logstash 將請求轉寄到您的 OpenSearch Service VPC 端點。
例如:
input { beats { port => 5044 } } output { elasticsearch { hosts => ["https://domain-endpoint:443"] ssl => true index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" user => "my-username" password => "my-password" ilm_enabled => false } }
8. 請在每個執行個體上使用以下命令來啟動 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)
9. 請對您的 OpenSearch Service 網域執行 cat 索引 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 Service、Logstash 和 OpenSearch Dashboards (ELK),則您的管道會如下所示:
Filebeat > Logstash > Amazon OpenSearch Service/Dashboards
401 未經授權錯誤
由 Logstash 產生的 401 未經授權錯誤表示您的 OpenSearch Service 網域受到更精細的存取控制權 (FGAC) 或 Amazon Cognito 的保護。FGAC 需要使用者或角色簽署的請求,該請求必須在網域的存取政策中定義。如果收到 401 未經授權錯誤,請確定您已正確啟用 Logstash 組態檔案中的 FGAC。
例如:
output { elasticsearch { hosts => ["https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com:443"] index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" ilm_enabled => false user => "elastic" password => "changeme" } }
403 禁止錯誤
當使用並配置 Logstash 來將資料傳送到 OpenSearch Service 時,您可能會收到 403 禁止錯誤。當 Logstash 沒有所需許可且無法驗證您的 AWS Identity Access Management (IAM) 身分時,就會發生此錯誤。若要解決此問題,請務必使用您的 IAM 憑證,以將您的請求簽署至 OpenSearch Service。
如果要使用 Logstash 來簽署 OpenSearch Service 請求,請按下列步驟執行:
1. 請安裝 OpenSearch Service 的 Logstash 外掛程式:
bin/logstash-plugin install logstash-output-amazon_es
2. 請將 IAM 角色連接到 Amazon EC2 執行個體,如下所示:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "es:ESHttp*" ], "Resource": "[Amazon-OpenSearch-Domain-ARN]" }] }
3. 請更新您的 Logstash 組態設定以使用 “amazon_es” Logstash 外掛程式作為管道中的輸出:
output { amazon_es { 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"
**請注意:**您可以查看您的組態檔案,以確認 Index Life Management (ILM) 設定 (ilm.enabled 和 ilm_enabled) 是否都已設定為 「false」。 在您的組態檔案中停用這些 ILM 設定會消除 x-pack 外掛程式的啟動錯誤。
相關資訊
相關內容
- 已提問 1 年前lg...
- 已提問 1 年前lg...
- 已提問 2 年前lg...
- 已提問 1 年前lg...
- AWS 官方已更新 4 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 4 年前