在 Linux 系统中,监控关键日志通常是为了及时发现系统异常、安全事件或服务故障。下面从日志来源 → 监控方式 → 实战示例 → 自动化告警几个层面系统说明。
常见关键日志位置(以 systemd 系统为例):
| 类型 | 路径 / 来源 |
|---|---|
| 系统日志 | /var/log/messages、/var/log/syslog |
| 认证安全 | /var/log/secure、/var/log/auth.log |
| 内核日志 | dmesg、/var/log/kern.log |
| 服务日志 | /var/log/nginx/、/var/log/mysql/ |
| systemd | journalctl |
| 应用自定义 | 应用自身日志目录 |
tail -f(最常用)tail -f /var/log/secure
适合:
✅ 可配合 grep:
tail -f /var/log/secure | grep "Failed password"
journalctl(systemd 系统推荐)journalctl -f
按服务监控:
journalctl -u nginx -f
按优先级(只看重错误):
journalctl -p err -f
multitail(多日志同屏)multitail /var/log/secure /var/log/messages
swatch(老牌日志监控)swatch --config-file swatch.conf --tail-file /var/log/secure
示例配置:
watchfor /Failed password/
echo
mail addresses=admin@xxx.com
logwatch(每日报告)logwatch --detail High --service All
适合:
rsyslog + 规则触发在 /etc/rsyslog.conf:
:msg, contains, "error" @@logserver:514
应用日志 → rsyslog / filebeat → ELK / Loki
↓
告警系统(Alertmanager)
grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c
journalctl -u nginx -f | grep -q "emerg" && systemctl restart nginx
dmesg -T | grep -i "error"
✅ 建议:
logrotate)如果你能告诉我:
我可以给你一套可直接用的配置方案。