监控系统Nagios系列(四) 状态类型(soft & hard)

本文介绍了Nagios监控系统中的对象状态管理机制,包括软硬状态变化的概念、产生条件及处理方式。Nagios通过定义最大尝试次数来区分临时抖动与真实状态变化,有效减少误报警。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

监控系统Nagios系列(二) 架构中提到了如何定义对象的状态,对象状态根据是插件检查结果综合得到的。

对象状态如果发生了变化,Nagios会调用通知命令,发送警报。为了避免错误的警报,Nagios允许用户定义最大尝试次数(max_check_attempts),只有状态连续变化超过了最大尝试次数,才算是的状态变化。Nagios通过定义两种状态变化类型:softhard,分别表示在max_check_attempts内的状态变化,和超过了max_check_attempts的状态变化。这种做法能够解决的一个典型问题就是状态处于抖动不稳定的对象,通过max_check_attempts,避免重复的警报。

1. soft类型

soft类型状态变化产生的条件为:

  • 检查Service或Host状态的插件返回结果为non-OK或non-UP,且检查次数还未达到max_check_attempts,那么这个状态变化是soft类型,是一个soft error。
  • 一个Service或Host从soft error恢复(插件检查返回结果为OK或UP),那么这个状态变化是soft类型,是一个soft recovery。

当soft状态变化发生之后,Nagios对应的处理有:

  • 记录日志
  • 调用外部注册的事件处理回调命令。开发者可以注册事件处理回调命令,尝试修复soft error,在soft error变为hard error之前。

2. hard类型

hard类型状态变化产生条件为:

  • 检查Service或Host状态的插件返回结果为non-OK或non-UP,且检查次数已经达到max_check_attempts,那么这个状态变化是hard类型,是一个hard error。
  • 一个Service或Host的状态由一个hard类型变化为另外一个hard类型,这次变化也是hard类型。如从Warning变为Critical。
  • 一个Service的检查结果为non-OK状态,且与其关联的Host的状态是DOWN或UNREACHABLE,那么Service的状态变化是hard类型,是一个hard error。
  • 一个Service或Host从hard error恢复,那么这个状态变化是hard类型,是一个hard recovery。
  • Service或Host的状态检查类型为passive_check(由外部注入状态),且全局配置文件(nagios.cfg)中的配置项“ passive_host_checks_are_soft”为0,那么passive_check的检查结果导致的状态变化,都是hard类型。

当hard状态变化发生之后,Nagios对应的处理有:

  • 记录日志
  • 调用外部注册的事件处理回调命令。

  • 通知联系人。
原文网址:http://www.yunweipai.com/archives/3001.html
关于nagiosQL写得比较好的一篇博客:http://pengyl.blog.51cto.com/5591604/1227407

实际应用:
在执行时间处理办法的时候,软件问题会执行一次,当次数超过最大重试次数的时候,将会是硬件问题,同样也会执行一次命令。在这里不清楚为何通知联系人配置不起作用?

### 被动模式下仅代理的主机可用性检查配置 在监控系统中,对于被动模式下的仅代理主机可用性检查时间阈值设置为3分钟的情况,通常涉及以下几个方面: #### 配置文件调整 为了确保主机状态更新不超过设定的时间阈值,需要修改监控工具的相关配置文件。例如,在Nagios或Icinga这类常用的监控软件中,可以通过编辑`nagia.cfg`或类似的全局配置文件来定义host对象及其属性。 ```bash define host{ use generic-host ; Name of template to use host_name example_host ; The name we're giving to this host address 192.168.1.1 ; IP Address of the host check_command check-host-alive ; Default command used for active checks max_check_attempts 5 ; Re-check before going into a hard state normal_check_interval 5 ; Normal amount of time between scheduled checks (in minutes) retry_check_interval 1 ; Amount of time between rechecks when in soft states (minutes) passive_checks_enabled 1 ; Accept passive checks } ``` 上述配置示例展示了如何启用被动检查并指定常规检查间隔(normal_check_interval),这里设定了每5分钟一次主动健康状况查询[^1]。然而,针对特定需求——即希望基于接收到的数据包判断超过三分钟后仍未有新数据传入,则视为不可达的状态转换逻辑,需进一步定制化处理机制。 #### 自定义插件开发 如果现有的功能无法满足精确到秒级粒度的需求,可以编写自定义脚本作为外部命令处理器的一部分工作流程。此脚本负责接收来自远程客户端提交的服务/主机状态报告,并记录最后成功通信的确切时刻。一旦检测到现在时间和最后一次有效响应之间超过了预设时限(如180秒),就触发相应的告警动作或将该节点标记为down状态。 ```python import time from datetime import timedelta, datetime def process_passive_check(host_id, timestamp): current_time = int(time.time()) last_update_times = { "example_host": current_time - 120 # simulate previous update was two minutes ago } if host_id not in last_update_times or \ abs(current_time - last_update_times[host_id]) >= 180: print(f"Host {host_id} is considered down due to no updates within 3 mins.") handle_alert_or_state_change() else: print(f"Host {host_id} status updated at {datetime.fromtimestamp(timestamp)}") process_passive_check('example_host', int(time.time())) ``` 这段Python代码片段模拟了一个简单的被动检查处理器,它会根据给定的时间戳评估目标机器是否处于正常运行状态。当发现某台服务器在过去三个小时内没有任何活动迹象时,就会发出警告通知或者执行其他预定的操作以应对潜在的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值