在 openEuler 系統中安裝 Filebeat 來採集日誌,並實現日誌的傳輸(如發送到 Logstash/Elasticsearch),我會為你提供從環境準備到配置、啓動、驗證的完整步驟,適配 openEuler 的系統特性(如包管理器、權限機制)。 一、前置條件 系統環境:openEuler 20.03 LTS/22.03 LTS(x86_64/ARM64 架構,本文以 x86_64 為例)。 網絡要求:服務器能訪問外網(用於下載 Filebeat 安裝包或配置 Elastic YUM 源)。 權限要求:使用root用户或具有sudo權限的用户執行操作。 目標準備:若需將日誌發送到 Logstash/ES,確保目標服務已運行且網絡互通。 二、安裝 Filebeat(兩種方式,推薦官方 YUM 源) 方式 1:通過 Elastic 官方 YUM 源安裝(推薦,便於版本管理) 步驟 1:配置 Elastic YUM 源 創建 Elastic 官方源配置文件: bash 運行 vi /etc/yum.repos.d/elastic.repo 添加以下內容(適配 7.x 版本,與 ES/Logstash 版本保持一致,如 7.17.5): ini [elastic-7.x] name=Elastic repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md 步驟 2:導入 Elastic GPG 密鑰 bash 運行 rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch 步驟 3:安裝 Filebeat bash 運行

安裝指定版本(推薦,避免自動升級)

dnf install -y filebeat-7.17.5

安裝最新版本(不推薦,可能與ES/Logstash版本不兼容)

dnf install -y filebeat

安裝完成後,Filebeat 的默認路徑: 配置文件:/etc/filebeat/filebeat.yml 可執行文件:/usr/share/filebeat/bin/filebeat 日誌文件:/var/log/filebeat/filebeat.log 方式 2:手動下載 RPM 包安裝(無外網場景) 步驟 1:下載對應架構的 RPM 包 bash 運行

切換到臨時目錄

cd /tmp

x86_64架構

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.5-x86_64.rpm

ARM64架構(openEuler鯤鵬版)

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.5-aarch64.rpm

步驟 2:安裝 RPM 包 bash 運行 rpm -ivh filebeat-7.17.5-x86_64.rpm 三、配置 Filebeat(核心步驟,採集日誌併發送) Filebeat 的核心配置分為日誌輸入(inputs)和數據輸出(outputs),以下以採集系統日誌併發送到 Logstash為例(最常用場景),也可直接發送到 ES。 步驟 1:編輯 Filebeat 主配置文件 bash 運行 vi /etc/filebeat/filebeat.yml 步驟 2:配置日誌輸入(採集系統日誌 / 自定義日誌) 註釋默認的filebeat.inputs配置,添加以下內容(採集/var/log/messages系統日誌和/var/log/nginx/access.lognginx 訪問日誌,可根據需求修改): yaml filebeat.inputs:

輸入1:採集系統日誌

  • type: filestream # openEuler推薦使用filestream(替代舊的log類型) enabled: true # 啓用該輸入 paths:
    • /var/log/messages # 要採集的日誌路徑,支持通配符(如/var/log/*.log) tags: ["system-log"] # 標記日誌類型,便於後續過濾 fields: log_source: "openeuler-system" # 自定義字段,標識日誌來源

輸入2:採集nginx訪問日誌(若未安裝nginx,可註釋該部分)

  • type: filestream enabled: true paths:
    • /var/log/nginx/access.log tags: ["nginx-access-log"] fields: log_source: "openeuler-nginx"

禁用默認的模塊(如system、nginx,若需使用模塊可保留)

filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: false 步驟 3:配置數據輸出(發送到 Logstash,若直接發送到 ES 可替換為 output.elasticsearch) 註釋默認的output.elasticsearch,添加以下內容(指向 Logstash 的 5044 端口,即 Logstash 的 beats 輸入端口): yaml

輸出到Logstash

output.logstash: hosts: ["10.0.0.22:5044"] # 替換為你的Logstash服務器IP和端口

若直接發送到Elasticsearch,取消以下注釋並註釋output.logstash

output.elasticsearch:

hosts: ["10.0.0.22:9200"] # 替換為你的ES服務器IP和端口

# 若ES開啓認證,添加賬號密碼

# username: "elastic"

# password: "your-es-password"

開啓控制枱輸出(調試用,生產環境可註釋)

output.console:

pretty: true # 格式化輸出

步驟 4:配置文件權限(openEuler 安全機制要求) 確保 Filebeat 用户擁有配置文件和日誌文件的權限: bash 運行

賦予配置文件讀取權限

chmod 644 /etc/filebeat/filebeat.yml

遞歸賦予Filebeat目錄權限(若出現權限錯誤時執行)

chown -R filebeat:filebeat /etc/filebeat/ chown -R filebeat:filebeat /var/log/filebeat/ 四、啓動 Filebeat 並設置開機自啓 步驟 1:啓動 Filebeat 服務 bash 運行

啓動Filebeat

systemctl start filebeat

查看服務狀態(確保顯示active (running))

systemctl status filebeat 若啓動失敗,可查看日誌排查問題: bash 運行 tail -f /var/log/filebeat/filebeat.log 步驟 2:設置開機自啓 bash 運行

配置開機自啓

systemctl enable filebeat

驗證自啓配置

systemctl is-enabled filebeat 五、驗證 Filebeat 採集與傳輸(關鍵步驟) 步驟 1:驗證日誌採集 手動向採集的日誌文件中寫入測試數據,觸發 Filebeat 採集: bash 運行

向系統日誌中寫入測試數據

echo "Test log from Filebeat on openEuler $(date)" >> /var/log/messages

若採集nginx日誌,寫入測試數據

echo "Test nginx log from Filebeat on openEuler $(date)" >> /var/log/nginx/access.log

步驟 2:驗證數據傳輸 場景 1:發送到 Logstash 在 Logstash 服務器上查看日誌,確認是否接收到數據: bash 運行 tail -f /var/log/logstash/logstash-plain.log 若能看到來自 openEuler 的日誌數據,説明傳輸成功。 場景 2:直接發送到 ES 在 ES 服務器上查看索引,確認是否生成 Filebeat 索引: bash 運行

查看所有索引

curl -X GET "http://10.0.0.22:9200/_cat/indices?v"

查看Filebeat索引的文檔數量

curl -X GET "http://10.0.0.22:9200/filebeat-7.17.5-2025.12.23/_count?pretty" 若索引存在且文檔數量大於 0,説明傳輸成功。 六、openEuler 特有的問題排查 問題 1:dnf 安裝時提示 “無法驗證證書” 原因:openEuler 系統缺少根證書,導致無法驗證 Elastic 的 HTTPS 證書。解決方法:安裝 ca-certificates 包: bash 運行 dnf install -y ca-certificates update-ca-trust extract 問題 2:Filebeat 無法讀取日誌文件(權限被拒) 原因:openEuler 的 SELinux 默認開啓,或日誌文件屬於 root 用户且權限為 600。解決方法: bash 運行

臨時關閉SELinux(測試環境)

setenforce 0

永久關閉SELinux(編輯/etc/selinux/config,將SELINUX=enforcing改為SELINUX=disabled,重啓生效)

或賦予Filebeat讀取日誌的權限(推薦)

setfacl -m u:filebeat:r /var/log/messages # 為filebeat用户添加讀取權限 問題 3:網絡不通,無法連接 Logstash/ES 原因:openEuler 的防火牆默認開啓,攔截了 5044(Logstash)/9200(ES)端口。解決方法: bash 運行

開放5044端口(Logstash)

firewall-cmd --add-port=5044/tcp --permanent

開放9200端口(ES)

firewall-cmd --add-port=9200/tcp --permanent

重新加載防火牆規則

firewall-cmd --reload 總結 核心步驟:在 openEuler 中安裝 Filebeat 的關鍵是配置 Elastic YUM 源(或手動下載 RPM 包),然後配置日誌輸入和輸出,啓動服務並驗證傳輸。 openEuler 適配:需要處理證書驗證、SELinux 權限、防火牆端口開放等特有問題,確保 Filebeat 正常運行。 關鍵配置:使用filestream類型採集日誌(openEuler 推薦),通過tags和fields自定義日誌標識,便於後續過濾分析。