溫馨提示×

filebeat在ubuntu上的日志輪轉策略

小樊
38
2025-09-21 15:07:32
欄目: 智能運維

Filebeat在Ubuntu上的日志輪轉策略
Filebeat本身不直接處理日志文件的輪轉(如分割、壓縮),其設計定位是高效收集、轉發日志,日志輪轉通常由操作系統工具(如logrotate)或系統日志服務(如rsyslog/syslog-ng)完成。以下是Ubuntu系統上配置Filebeat日志輪轉的常見方法及詳細步驟:

一、推薦方法:使用logrotate工具(Ubuntu默認集成)

logrotate是Ubuntu系統自帶的日志管理工具,支持按時間/大小輪轉、壓縮、刪除舊日志等功能,與Filebeat配合可實現完善的日志生命周期管理。

1. 安裝logrotate(若未安裝)

Ubuntu系統通常預裝logrotate,可通過以下命令確認:

dpkg -l | grep logrotate

若未安裝,執行:

sudo apt update && sudo apt install logrotate

2. 創建Filebeat專用logrotate配置文件

/etc/logrotate.d/目錄下創建filebeat配置文件(如/etc/logrotate.d/filebeat),內容如下:

/var/log/filebeat/*.log {
    daily                # 每天輪轉一次(可選:weekly/monthly)
    missingok            # 若日志文件不存在,不報錯
    rotate 7             # 保留最近7個輪轉文件(可根據存儲空間調整)
    compress             # 使用gzip壓縮舊日志(節省空間)
    delaycompress        # 延遲壓縮(如第8個文件才壓縮第1個,避免壓縮當天日志)
    notifempty           # 若日志為空,不進行輪轉
    create 640 root adm  # 輪轉后創建新文件,權限640,屬主root,屬組adm
    sharedscripts        # 所有日志輪轉完成后統一執行postrotate腳本
    postrotate           # 輪轉后通知Filebeat重新打開日志文件(避免丟失日志)
        if [ -f /var/run/filebeat/filebeat.pid ]; then
            kill -USR1 $(cat /var/run/filebeat/filebeat.pid)
        fi
    endscript
}

配置說明

  • daily:輪轉頻率(可根據需求改為weekly/monthly);
  • rotate 7:保留7個舊日志文件(避免無限增長);
  • compress + delaycompress:平衡壓縮效率與日志可用性;
  • postrotate:通過kill -USR1向Filebeat進程發送信號,使其釋放舊日志文件的句柄,確保后續日志能正常寫入新文件。

3. 測試logrotate配置

手動執行以下命令,驗證配置是否正確:

sudo logrotate -vf /etc/logrotate.d/filebeat
  • -v:顯示詳細執行過程;
  • -f:強制立即輪轉(而非等待定時任務)。

4. 確保logrotate定期運行

Ubuntu的logrotate默認由cron.daily每日執行(路徑:/etc/cron.daily/logrotate),無需額外配置??赏ㄟ^以下命令查看cron任務:

cat /etc/cron.daily/logrotate

確認包含logrotate /etc/logrotate.conf語句(/etc/logrotate.conf是logrotate的主配置文件,會加載/etc/logrotate.d/下的子配置)。

二、備選方法:配置Filebeat自身日志輪轉

若需直接控制Filebeat自身日志(如/var/log/filebeat/filebeat.log)的輪轉,可通過修改Filebeat配置文件(/etc/filebeat/filebeat.yml)實現,但不推薦用于收集的外部日志(僅適用于Filebeat自身日志)。

1. 修改Filebeat配置文件

filebeat.yml中添加logging.file部分,示例如下:

logging.level: info       # 日志級別(info/debug/warning/error)
logging.to_files: true    # 啟用文件日志(默認true)
logging.files:
  path: /var/log/filebeat # 日志文件路徑
  name: filebeat.log      # 日志文件名
  keepfiles: 7            # 保留最近7個日志文件
  permissions: "640"      # 文件權限
  rotation.period: 24h    # 輪轉周期(24小時)
  rotation.max_size: 100MB # 單個日志文件最大大?。蛇x,觸發輪轉的條件之一)

說明

  • 此配置會自動輪轉Filebeat自身的日志文件,但無法管理外部日志源(如/var/log/syslog)的輪轉。

2. 重啟Filebeat服務

修改配置后,重啟Filebeat使生效:

sudo systemctl restart filebeat

三、可選補充:使用systemd管理Filebeat日志

若系統使用systemd(Ubuntu 16.04及以上默認使用),可通過journalctl集中管理Filebeat日志,無需單獨配置輪轉。但需調整Filebeat的服務配置,將日志輸出到journald

sudo mkdir -p /etc/systemd/system/filebeat.service.d/
sudo nano /etc/systemd/system/filebeat.service.d/override.conf

添加以下內容:

[Service]
StandardOutput=journal+console
StandardError=journal+console
SyslogIdentifier=filebeat

保存后,重新加載systemd配置并重啟Filebeat:

sudo systemctl daemon-reload
sudo systemctl restart filebeat

此時,Filebeat日志可通過journalctl查看:

journalctl -u filebeat -f  # 實時查看Filebeat日志

注意事項

  1. 權限問題:確保/var/log/filebeat/目錄存在,且Filebeat進程有權限寫入(通常屬主為root,屬組為adm);
  2. 路徑匹配logrotate配置中的paths(如/var/log/filebeat/*.log)需與Filebeat配置中的filebeat.inputs.paths一致,避免漏輪轉;
  3. 性能影響:頻繁輪轉(如每分鐘)可能增加系統負載,建議根據日志量調整輪轉周期(如dailyweekly);
  4. 版本兼容:不同版本的Filebeat(如7.x/8.x)配置語法可能略有差異,建議參考對應版本的官方文檔。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女