Nagios主动检查与被动检查的区别及配置疑问
Alright, let's break this down clearly since I've worked with Nagios monitoring setups quite a bit. Let's start with the core differences between active and passive checks, then dive into the external services for passive checks, configuration steps, and wrap up with details on active checks that you couldn't find easily.
Nagios主动检查 vs 被动检查:核心区别
- 主动检查:Nagios服务器是「主动出击」的一方。它会按照你设定的时间间隔,定期向被监控的主机或服务发送检查请求,运行对应的监控插件获取状态,然后自己判断结果是否正常。简单说就是Nagios主动上门问「你还好吗?」
- 被动检查:Nagios完全处于「被动接收」状态。它不会主动发起检查,而是由外部服务把监控好的结果主动推送给它,Nagios只负责接收、记录并根据结果触发告警。相当于别人主动来汇报「我这边情况正常/出问题了」。
被动检查中的「外部服务」指什么?
这些外部服务都是独立于Nagios服务器之外的工具、脚本或进程,它们自己完成监控任务,再把结果传给Nagios。常见的例子有:
- 反向模式的NRPE:通常NRPE是Nagios主动调用客户端执行检查,但反向模式下,NRPE客户端会主动把检查结果发回Nagios。
- 自定义监控脚本:比如你写了一个脚本监控服务器的磁盘IO使用率,这个脚本定期运行,然后用
send_nsca工具把结果推送给Nagios。 - 第三方监控代理:像部分云服务的监控组件、或者其他监控工具的代理(比如Zabbix代理如果和Nagios整合的话),都会主动推送监控数据给Nagios。
- 日志告警工具:比如Logstash或者自定义的日志分析脚本,当检测到异常日志(比如错误栈、访问失败)时,会立刻向Nagios发送告警状态。
如何配置被动检查?
我以最常用的send_nsca工具为例,一步步来:
在Nagios服务器上部署NSCA服务
- 安装NSCA包:Debian/Ubuntu用
sudo apt-get install nsca,CentOS/RHEL用sudo yum install nsca - 修改配置文件
/etc/nagios/nsca.cfg:- 设置
password:这个密码要和客户端的send_nsca配置一致,用来做身份验证 - 确保
server_port默认的5667端口在防火墙中是开放的,允许客户端的连接
- 设置
- 启动并开机自启服务:
sudo systemctl start nsca && sudo systemctl enable nsca
- 安装NSCA包:Debian/Ubuntu用
在Nagios中定义被动检查的服务
- 打开你的服务配置文件(比如
/etc/nagios/conf.d/services.cfg),添加如下配置:define service { host_name your-monitored-host # 被监控主机的名称 service_description Passive Disk Usage Check active_checks_enabled 0 # 关闭主动检查 passive_checks_enabled 1 # 开启被动检查 check_command check_dummy!0!"Passive check received" # 占位命令,被动检查不需要主动执行 max_check_attempts 1 check_interval 5 retry_interval 1 notification_interval 60 notification_period 24x7 notification_options w,u,c,r contact_groups admins # 告警通知的联系人组 } - 重启Nagios让配置生效:
sudo systemctl restart nagios
- 打开你的服务配置文件(比如
在被监控主机上配置send_nsca
- 安装send_nsca包:Debian/Ubuntu用
sudo apt-get install send-nsca,CentOS/RHEL用sudo yum install send-nsca - 修改
/etc/nagios/send_nsca.cfg:- 设置
server_address为Nagios服务器的IP地址 - 设置
password和NSCA服务器配置的密码一致 - 设置
port为5667
- 设置
- 测试发送结果:
echo -e "your-monitored-host\tPassive Disk Usage Check\t0\tDisk usage is under 80%" | send_nsca -H nagios-server-ip -c /etc/nagios/send_nsca.cfg - 把检查脚本和发送命令加入crontab,定期执行:
*/5 * * * * /path/to/your/disk-monitor-script.sh | send_nsca -H nagios-server-ip -c /etc/nagios/send_nsca.cfg
- 安装send_nsca包:Debian/Ubuntu用
关于主动检查的细节
你说找不到主动检查的内容,其实它是Nagios最基础、最常用的监控方式,默认配置大多都是主动检查:
- 工作流程:Nagios按照你设定的
check_interval,定期调用对应的监控插件(比如check_ping、check_http),插件执行后返回状态码(0=正常,1=警告,2=严重错误,3=未知),Nagios根据这个状态码判断是否触发告警。 - 常见应用场景:监控主机存活(ping)、网站可用性(HTTP/HTTPS)、端口开放情况(TCP/UDP)、系统资源使用(CPU/内存/磁盘,通过NRPE主动调用客户端插件)等。
- 配置示例:比如一个主动检查HTTP服务的配置:
define service { host_name your-web-server service_description Web Service Availability active_checks_enabled 1 passive_checks_enabled 0 check_command check_http!your-web-domain.com max_check_attempts 3 check_interval 5 retry_interval 1 notification_options w,c,r contact_groups admins } - 注意事项:主动检查要求Nagios服务器能访问被监控主机的对应端口(比如ping需要ICMP权限,HTTP需要80/443端口开放),如果网络不通,主动检查会返回「UNKNOWN」或者「CRITICAL」状态。
内容的提问来源于stack exchange,提问作者Virender Punia
相关产品推荐
相关产品推荐

