logrotate负责日志切割,logwatch用于分析;通过配置logrotate实现日志定期轮转压缩,结合logwatch生成报告并邮件告警,二者协同提升日志管理效率。

Linux系统中日志文件会随着时间不断增长,过大的日志会影响系统性能,也不便于排查问题。因此,日志切割是运维中的常规操作。虽然常用的是logrotate工具,但有时也会借助第三方工具如logwatch进行日志分析与管理。下面介绍如何使用logwatch及相关方法实现日志的合理切割与监控。
logwatch简介及其与日志切割的关系
logwatch本身并不是专门的日志切割工具,而是一个日志分析工具,它可以按天、周或月汇总系统日志(如/var/log/messages、secure、maillog等),生成易读的报告。但它常与日志切割流程结合使用,帮助管理员在日志轮转后及时掌握系统状态。
实际应用中,通常由logrotate完成日志切割,logwatch负责后续分析。两者配合可实现“切割+监控”一体化。
使用logrotate实现基础日志切割
大多数Linux发行版默认安装logrotate,配置文件位于/etc/logrotate.conf,具体服务的日志策略放在/etc/logrotate.d/目录下。
例如,为自定义应用日志设置每日切割并保留7天:/etc/logrotate.d/myapp
/var/log/myapp.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 644 root root
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2>/dev/null` 2>/dev/null || true
endscript
}
该配置表示:每天切割一次日志,最多保留7个归档文件,压缩旧日志,不为空才轮转,并在切割后重新加载日志服务。
结合logwatch实现日志分析与告警
安装logwatch后,可通过定时任务定期发送日志摘要邮件,间接监督日志变化情况,辅助判断是否需要调整切割策略。
安装logwatch(以CentOS为例):yum install logwatch -y
生成当日报告:logwatch --detail High --output stdout --range 'Today'
配置每日邮件报告:编辑 /etc/cron.daily/0logwatch,确保内容包含:
#!/bin/sh /usr/sbin/logwatch --output mail --mailto admin@example.com --detail high
这样每天系统会自动发送一份日志分析邮件,帮助发现异常登录、服务错误等信息。
实用建议:切割与监控协同工作
日志管理不只是切割,更要便于查阅和预警。推荐做法:
- 使用logrotate设定合理的切割周期(daily/weekly)和保留数量
- 启用压缩减少磁盘占用
- 配合logwatch定期生成分析报告,尤其是安全相关日志(secure、auth.log)
- 将关键日志报告发送到运维邮箱,及时发现问题
- 对应用日志统一命名和路径,方便集中管理
基本上就这些。logwatch虽不直接切割日志,但作为分析工具,能有效提升日志管理效率。真正执行切割的还是logrotate,二者分工明确,搭配使用效果更佳。










