You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过NRPE让Nagios仅在客户端NRPE在线时监控其其他服务?

实现Nagios与NRPE的依赖监控及故障联动

完全可以实现你描述的场景!核心是利用Nagios的**服务依赖(Service Dependencies)**功能,让客户端的所有业务服务检查都依赖于NRPE状态检查,从而实现「NRPE离线时暂停其他服务监控+仅发送NRPE故障通知」的逻辑。下面是具体的实现步骤:

1. 配置NRPE状态检查服务

首先在Nagios服务器上为客户端创建一个专门检查NRPE是否存活的服务。你可以直接用check_nrpe命令本身(如果NRPE离线,该命令会返回CRITICAL状态),或者用check_tcp检查5666端口,这里推荐前者:

服务器端服务定义:

use                     generic-service  # 继承通用服务模板
    host_name               your-client-host # 替换为你的客户端主机名
    service_description     NRPE Status
    check_command           check_nrpe!check_ping  # 调用NRPE的check_ping插件(只要能连通NRPE即可)
    check_interval          1                   # 1分钟检查一次,比其他服务更频繁
    retry_interval          1
    notifications_enabled   1
    notification_options    c,r                 # 仅在CRITICAL(离线)和RECOVERY(恢复)时发通知
    notification_interval   30                  # 避免重复刷屏,30分钟重发一次通知
}

2. 配置服务依赖关系

接下来,让客户端的所有其他服务都依赖这个「NRPE Status」服务。这样当NRPE离线时,Nagios会自动暂停这些依赖服务的检查,并且不会发送它们的通知。

服务依赖定义:

host_name                       your-client-host
    service_description             NRPE Status
    dependent_host_name             your-client-host
    dependent_service_description   *  # 匹配该客户端下的所有服务
    execution_failure_criteria      c,u,p  # 当NRPE服务处于CRITICAL/UNKNOWN/PENDING时,不执行依赖服务的检查
    notification_failure_criteria   c,u,p  # 同样状态下,不发送依赖服务的通知
}

3. 验证与调整

  • 确认Nagios配置文件中已启用服务依赖:检查nagios.cfg里的enable_service_dependencies=1(默认是开启的)
  • 测试NRPE离线场景:手动停止客户端的NRPE服务,观察Nagios是否停止检查其他服务,且仅发送「NRPE Status」的故障通知
  • 自定义通知内容:可以修改NRPE Status服务的通知模板,明确告知运维人员「NRPE已离线,该客户端其他服务监控已暂停」

额外注意事项

  • 确保客户端NRPE配置文件(nrpe.cfg)中已添加Nagios服务器的IP到allowed_hosts列表,避免因权限问题导致误判NRPE离线
  • 如果客户端有大量服务,也可以按服务组来配置依赖,不用逐个服务设置

内容的提问来源于stack exchange,提问作者Paresh Gandhare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:25:33