nagios通过插件(如check_procs、nrpe)检测守护进程存活并告警,本地直接检查进程名,远程需nrpe执行;应监控master进程、避免仅端口探测,并可配置事件处理器自动重启。

Nagios 本身不直接管理进程生命周期,但它能可靠地检测守护进程是否存活,并在异常时触发告警——这是保障服务高可用的第一道防线。
Nagios 如何判断守护进程是否运行
核心逻辑是:Nagios 主程序周期性调用插件(如 check_procs、check_nrpe 或自定义脚本),由插件在目标主机上执行实际检查。
-
本地监控(如 Nagios 服务器自身):直接使用
check_procs -C nginx或check_procs -C mysqld判断进程名是否存在; -
远程监控(如业务服务器上的 Redis):必须通过 NRPE,在被监控端执行
check_procs,再将结果传回; - 不推荐仅依赖端口探测(如
check_tcp!6379),因为进程可能已僵死但端口仍被占用或由旧 worker 残留监听。
配置一个典型的进程存活服务
以监控远程主机 web01 上的 Nginx master 进程为例(需提前部署 NRPE):
define service{
host_name web01
service_description nginx-process
check_command check_nrpe!check_nginx_proc
check_period 24x7
max_check_attempts 3
normal_check_interval 2
retry_check_interval 1
notification_options w,c,r
contact_groups admins
}
对应被监控主机 /usr/local/nrpe/etc/nrpe.cfg 中需定义命令:
command[check_nginx_proc]=/usr/lib64/nagios/plugins/check_procs -C nginx -C "nginx: master" -w 1:2 -c 1:3
该命令要求至少 1 个 master 进程,最多 3 个,超限即告警(防 fork 爆炸)。
关键细节与避坑提示
-
区分 master 与 worker:Nginx、PHP-FPM 等多进程模型中,应重点监控 master 进程(通常带
master process字样),避免误判 worker 残留为正常; -
配合配置校验更稳妥:单纯进程存在≠服务可用。生产环境建议叠加
check_http或check_tcp做双重验证; -
NRPE 权限要放开:确保
nrpe用户能执行ps、pgrep等命令,必要时在 sudoers 中授权(如nrpe ALL=(ALL) NOPASSWD: /bin/pgrep); -
避免高频轮询:
normal_check_interval 1(每分钟查 60 次)易引发负载抖动,2–5 分钟更合理。
扩展:自动恢复可结合事件处理器
Nagios 支持定义 event_handler,当 nginx-process 状态变为 CRITICAL 时,自动执行重启脚本:
define service{
...
event_handler handle_nginx_restart
}
脚本 /usr/local/nagios/libexec/eventhandlers/handle_nginx_restart 内容需包含 nginx -t && systemctl restart nginx 流程,并记录日志。
不复杂但容易忽略











