Linux Trigger 系统监控实战指南
一 概念与适用场景
- 在 Linux 运维语境中,Trigger通常指由监控平台(如 Zabbix、Nagios)定义的“当监控项达到阈值时触发的事件”,用于自动告警、联动修复与可视化呈现。与之相关的“事件触发”也可通过系统自带的 inotify(文件系统事件)、systemd(服务状态变更)、cron/at(定时或一次性任务)来实现本地自动化。理解这些机制,有助于在不同层级构建可靠的监控与响应体系。
二 原生 Linux 事件触发监控
- 文件系统事件触发:使用 inotifywait 监听目录的创建、修改、删除等事件,适合配置变更、日志落地、代码发布等场景的即时响应。
- 示例要点:inotifywait -m -r -e create -e modify -e delete /path | while read event file; do … ; done
- 服务状态触发:借助 systemd 的单元与依赖关系,在服务进入失败或进入特定状态(如 active)时执行动作,适合守护进程异常自愈与联动。
- 示例要点:创建服务单元(ExecStart 指向脚本),通过 systemctl enable/start 管理,结合 Restart=always 实现故障重启。
- 定时与一次性触发:使用 cron 做周期性检查(如每小时巡检磁盘),使用 at 安排一次性维护任务;必要时启用 rsyslog 的 cron 日志以便审计与排错。
- 示例要点:编辑 /etc/rsyslog.d/50-default.conf 打开 cron.* 日志,重启 rsyslog,查看 /var/log/cron.log。
三 监控平台 Trigger 实战 Zabbix 示例
- 关键指标与触发器范式
- 时间同步异常:监控项 system.localtime,触发器使用表达式 fuzzytime(/模板/主机/system.localtime,60)=0,判定 NTP 不同步超过 60 秒即告警。
- 内存压力:监控项 vm.memory.size[pavailable],触发器判断可用内存百分比低于阈值(如 5%)触发严重告警。
- 登录安全:监控项 proc.num(可细化到登录相关进程或结合日志),当登录用户数超过阈值(如 35)触发告警并联动处置。
- 实施步骤
- 安装并配置 Zabbix Agent,在主机上关联系统模板或自定义监控项;必要时使用 system.run 执行受控命令采集数据。
- 在模板或主机上创建监控项(如 system.localtime、vm.memory.size[pavailable]、proc.num),设置合理更新间隔(如 5m)。
- 创建触发器并绑定动作(Action):配置告警媒介(邮件、短信、企业微信/钉钉 Webhook 等)、告警级别与升级策略,确保问题闭环。
四 资源与可靠性要点
- 触发器/脚本的资源影响与优化
- 关注 CPU、内存、I/O、网络 占用;优化触发逻辑、减少重复计算与频繁 I/O,批处理与限频执行,避免对业务产生抖动。
- 使用 time 测量脚本耗时,结合日志分析执行频率与持续时间,配合 top/htop/vmstat 等工具做运行时观测与瓶颈定位。
- 观测与排障工具
- 资源巡检:top/htop、vmstat、free -h、iostat、df -h、du -sh、sar、atop、glances、nmon,覆盖 CPU、内存、磁盘 I/O、文件系统、网络 等维度,便于验证触发器阈值是否合理、告警是否真实有效。