监控Ubuntu系统日志的常用方法与工具
Ubuntu系统的日志主要存储在/var/log目录下(如/var/log/syslog记录一般系统信息、/var/log/auth.log记录认证事件、/var/log/kern.log记录内核消息),以下是具体的监控方法:
tail -f命令:实时查看日志文件的新增内容,是最常用的实时监控方法。例如,监控系统通用日志:sudo tail -f /var/log/syslogsudo tail -f /var/log/apache2/access.log。grep命令:过滤日志中的关键词,快速定位特定事件。例如,查找系统日志中的“error”信息:sudo grep 'error' /var/log/syslog。journalctl命令:systemd提供的日志管理工具,支持更强大的查询功能。
sudo journalctl -f;sudo journalctl -p 3;sudo journalctl -u ssh;sudo journalctl --since "2025-10-01" --until "2025-10-31"。sudo apt-get install logwatch → sudo logwatch;--output mail --mailto your_email@example.com参数。使用logrotate工具自动轮转、压缩和删除旧日志文件,避免单个日志文件过大。
sudo apt-get install logrotate(Ubuntu默认已安装);/etc/logrotate.conf(全局配置)或/etc/logrotate.d/下的服务特定配置(如/etc/logrotate.d/rsyslog);sudo logrotate -f /etc/logrotate.conf。使用inotifywait工具(属于inotify-tools包)监控日志文件的修改、创建、删除等事件,实时触发检测逻辑。
sudo apt-get install inotify-tools;/var/log/syslog的变化,并输出事件信息:sudo inotifywait -m /var/log/syslog -e modify,attrib,close_write,move,create,delete | while read path action file; do echo "The file '$file' in directory '$path' was $action"; done。通过rsyslog或logwatch设置告警规则,当检测到异常(如SSH登录失败、磁盘空间不足)时发送通知。
/etc/rsyslog.conf或/etc/rsyslog.d/50-default.conf,添加规则(如将SSH登录失败的日志写入单独文件):if $programname == 'sshd' and $msg contains 'Failed password' then /var/log/failed_logins.log & stop;sudo systemctl restart rsyslog。logwatch的--mailto参数将报告发送到邮箱,或在配置文件中设置自定义告警规则。