补充说明
swatch(Simple Watcher)是一个 Perl 编写的日志监视工具。它持续跟踪指定的日志文件,用配置文件中定义的正则表达式匹配新产生的行,命中后执行相应动作:打印高亮、写入别的文件、发邮件、执行命令或调用外部程序。
规则写在 ~/.swatchrc 或 --config-file 指定的文件中,基本形式是 watchfor /正则/ 后跟若干 action。默认会忽略空行,并可用 ignore、threshold、until 等指令做去噪和抑制重复告警。
它适合在 syslog、auth.log、应用日志上做轻量级实时监控。若需要长期留存、检索和集中分析,应使用 rsyslog、journald 或 ELK/Loki 一类方案;swatch 定位是“边看边报警”的小工具。以守护方式运行时用 --pid-file 记录进程号,便于停止。
语法
swatch [选项]
选项
-c, --config-file 文件:指定规则文件,默认~/.swatchrc-t, --tail-file 文件:跟踪指定文件的新增内容-f, --examine 文件:只处理文件现有内容后退出-p, --pid-file 文件:写入守护进程的 PID-r, --restart-time 时间:每天在指定时间重启自身--no-restart:不自动重启-A, --awk-field-syntax:用$1、$2等字段引用匹配内容
规则示例
# ~/.swatchrc:登录失败时高亮并写日志
watchfor /Failed password/
echo red
write /var/log/ssh-failures.log
# 出现 OOM 时执行命令
watchfor /Out of memory/
exec "/usr/local/bin/notify-ops.sh"
实例
# 前台跟踪 syslog 并输出匹配行
swatch --config-file ~/.swatchrc --tail-file /var/log/syslog
# 只扫描现有日志内容,适合配合 cron
swatch -c ~/.swatchrc -f /var/log/auth.log
# 后台运行并记录 PID
swatch -c ~/.swatchrc -t /var/log/syslog -p /run/swatch.pid