Filebeat 是一個輕量級的日志收集工具,用于將各種來源的日志轉發到 Elasticsearch 或其他輸出
在 Filebeat 的配置文件(通常為 filebeat.yml)中,您需要設置 input
部分以指定 MySQL 日志文件的路徑。例如:
filebeat.inputs:
- type: log
paths:
- /var/log/mysql/mysql-slow.log
對于 MySQL,您可以使用日志旋轉功能來管理日志文件的大小。這意味著當日志文件達到特定大小時,MySQL 會自動創建一個新的日志文件并關閉舊的日志文件。您可以在 MySQL 配置文件(通常為 my.cnf 或 my.ini)中設置日志旋轉參數。例如:
[mysqld]
slow_query_log=1
slow_query_log_file=/var/log/mysql/mysql-slow.log
long_query_time=1
log_slow_rate_limit=1000
log_slow_verbosity=query_plan,innodb
# Log rotation settings
log_bin=mysql-bin
max_binlog_size=100M
binlog_expire_logs_seconds=86400
這里,我們設置了 max_binlog_size
為 100MB,當日志文件達到這個大小時,MySQL 會自動創建一個新的日志文件。binlog_expire_logs_seconds
設置了日志文件的保留時間,這里設置為 86400 秒(1 天)。
您可以使用操作系統的定時任務(如 cron)來定期刪除或壓縮舊的日志文件。例如,您可以創建一個名為 cleanup_logs.sh
的腳本,內容如下:
#!/bin/bash
find /var/log/mysql/ -name "mysql-slow.*" -mtime +7 -exec gzip {} \;
這個腳本會查找 /var/log/mysql/
目錄下所有名為 mysql-slow.*
的文件,如果它們的修改時間超過 7 天,就會將它們壓縮為 .gz
格式。然后,您可以在 crontab 中添加一個定時任務來運行此腳本:
0 0 * * * /path/to/cleanup_logs.sh
這將每天凌晨 0 點運行腳本。
通過上述方法,您可以有效地處理 MySQL 日志文件過大的問題,確保 Filebeat 能夠正常收集和傳輸日志。