在CentOS系統中,Filebeat本身并不直接處理日志輪轉。日志輪轉通常由系統的日志管理工具如logrotate
來處理。但是,你可以配置Filebeat以讀取已經被logrotate
處理過的日志文件。以下是如何配置Filebeat與logrotate
一起工作的步驟:
安裝Filebeat: 如果你還沒有安裝Filebeat,可以使用以下命令安裝:
sudo yum install filebeat
配置Filebeat:
編輯Filebeat的配置文件,通常位于/etc/filebeat/filebeat.yml
,確保它指向正確的日志文件路徑。例如:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
配置logrotate:
logrotate
的配置文件通常位于/etc/logrotate.d/
目錄下。你可以創建一個新的配置文件或者編輯現有的來處理Filebeat的日志文件。例如,如果你想要輪轉/var/log/filebeat/filebeat
文件,你可以創建一個名為filebeat
的文件:
sudo vi /etc/logrotate.d/filebeat
然后添加以下內容:
/var/log/filebeat/filebeat {
daily
rotate 7
compress
missingok
notifempty
create 640 root adm
}
這個配置將會每天輪轉日志文件,保留最近7天的日志,并且壓縮舊的日志文件。
重啟logrotate:
為了讓新的配置生效,你可以手動觸發一次logrotate
:
sudo logrotate -f /etc/logrotate.conf
確保Filebeat讀取新輪轉的日志:
logrotate
在輪轉日志時會創建一個新的空日志文件,并將舊日志文件重命名。Filebeat會自動檢測到這些變化并開始讀取新的日志文件。
請注意,如果你的日志文件在被logrotate
重命名之前已經被Filebeat打開,Filebeat可能不會立即讀取新的日志文件。為了確保Filebeat能夠讀取新輪轉的日志,你可以在filebeat.yml
中配置close_inactive
選項,這樣Filebeat會在一段不活動之后關閉文件,允許logrotate
重命名它們:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
close_inactive: 1m
在這個例子中,如果一個日志文件在1分鐘內沒有新的事件寫入,Filebeat將會關閉它,這樣logrotate
就可以重命名這個文件了。
確保在生產環境中測試任何配置更改,以確保它們按預期工作。