1. 調整Filebeat配置參數
filestream輸入類型(Filebeat 7.0+推薦,比log輸入更高效);設置close_inactive(如5m)關閉長時間未更新的文件處理器;設置ignore_older(如168h)忽略長期未修改的文件,減少不必要的處理;調整max_file_size和scan_frequency,避免頻繁掃描大文件。bulk_max_size(如2048),提高批量發送效率,減少網絡請求次數;啟用輸出壓縮(output.elasticsearch.compression: true),降低網絡傳輸量。harvester.limit限制同時運行的harvester數量,避免資源過度占用;調整queue.mem.events(如4096)控制內存隊列大小,或使用queue.type: persisted啟用持久化隊列(將事件寫入磁盤),減少內存壓力。grok、json解析),直接發送原始日志;使用條件過濾(如if語句)減少不必要的數據處理。2. 系統級資源限制
systemd修改Filebeat服務文件(/etc/systemd/system/filebeat.service),添加MemoryMax參數(如MemoryMax=2G),限制Filebeat最大內存使用;或使用ulimit -v命令設置虛擬內存上限。3. 監控與診斷
free -m查看系統內存使用情況,top或htop識別占用內存較高的進程;檢查Filebeat日志(/var/log/filebeat/filebeat)中的內存相關警告。4. 硬件與架構優化
5. 維護與調優
logrotate工具自動清理舊日志文件,減少Filebeat需要處理的日志量。cron作業定期重啟Filebeat(如每周一次),釋放內存并減少內存碎片。registry.clean_inactive(如72h),定期清理不活躍的注冊表條目,避免注冊表文件過大占用內存。