Linux 命令速查
系统管理 man swatch

swatch

实时监视日志并按规则触发告警

返回

补充说明

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

参考链接