介绍
受监视的服务和主机的当前状态由两个组件确定:
- 服务或主机的状态(即OK,WARNING,UP,DOWN等)
- Tye 服务或主机处于的类型状态的
Nagios Core中有两种状态类型-软状态和硬状态。这些状态类型是监视逻辑的重要组成部分,因为它们用于确定何时执行事件处理程序以及何时最初发出通知。
本文档描述了SOFT和HARD状态之间的差异,它们如何发生以及何时发生。
服务和主机检查重试
为了防止因暂时性问题引起的误报,Nagios Core允许您定义在服务或主机被视为“实际”问题之前应被(重新)检查多少次。这由主机和服务定义中的max_check_attempts选项控制。了解主机和服务如何(重新)检查以确定是否存在实际问题对于了解状态类型的工作方式非常重要。
Soft状态
在以下情况下会发生软状态:
- 当服务或主机检查导致状态为非正常或非UP,并且尚未(重新)检查服务检查由服务或主机定义中的max_check_attempts指令指定的次数时。这称为软错误。
- 服务或主机从软错误中恢复时。这被认为是软恢复。
当主机或服务经历SOFT状态更改时,会发生以下情况:
- 记录SOFT状态。
- 执行事件处理程序以处理SOFT状态。
仅当在主配置文件中启用了log_service_retries或log_host_retries选项时,才会记录SOFT状态。
在软状态期间真正发生的唯一重要的事情是事件处理程序的执行。如果您想尝试在问题变为HARD状态之前主动解决问题,则使用事件处理程序可能特别有用。执行事件处理程序时,$HOSTSTATETYPE $或$SERVICESTATETYPE $宏的值将为“ SOFT ”,这使事件处理程序脚本知道何时应采取纠正措施。有关事件处理程序的更多信息,请参见此处。
Hard状态
在以下情况下,主机和服务会发生硬状态:
- 当主机或服务检查结果为非启动或非OK状态,并且已经(重新)检查了主机或服务定义中max_check_attempts选项指定的次数。这是一个硬错误状态。
- 当主机或服务从一个硬错误状态转换为另一错误状态时(例如,从“警告”变为“严重”)。
- 当服务检查导致状态不正常并且其对应的主机处于DOWN或UNREACHABLE状态时。
- 主机或服务从硬错误状态恢复时。这被认为是硬恢复。
- 当一个被动的主机检查被接收。除非启用了passive_host_checks_are_soft选项,否则被动主机检查将被视为HARD 。
主机或服务遇到HARD状态更改时,会发生以下情况:
- 记录HARD状态。
- 执行事件处理程序以处理HARD状态。
- 向主机通知主机或服务问题或恢复。
执行事件处理程序时 ,$HOSTSTATETYPE $或$SERVICESTATETYPE $宏的值将为“ HARD ”,这使事件处理程序脚本知道何时应采取纠正措施。有关事件处理程序的更多信息,请参见此处。
例
这是一个有关如何确定状态类型,何时发生状态更改以及何时发送事件处理程序和通知的示例。下表显示了一段时间内对服务的连续检查。该服务的max_check_attempts值为3。
时间 | 检查号码 | 州 | 状态类型 | 状态变更 | 笔记 |
---|---|---|---|---|---|
0 | 1个 | 好 | 硬 | 没有 | 服务的初始状态 |
1个 | 1个 | 危急 | 柔软的 | 是 | 首次检测到非OK状态。事件处理程序执行。 |
2 | 2 | 警告 | 柔软的 | 是 | 服务继续处于非OK状态。事件处理程序执行。 |
3 | 3 | 危急 | 硬 | 是 | 已达到最大检查尝试次数,因此服务进入HARD状态。执行事件处理程序,并发出问题通知。发生这种情况后,立即将检查编号重置为1。 |
4 | 3 | 警告 | 硬 | 是 | 服务更改为“硬警告”状态。执行事件处理程序,并发出问题通知。 |
5 | 3 | 警告 | 硬 | 没有 | 服务稳定在HARD问题状态。根据服务的通知间隔是多少,可能会发送另一个通知。 |
6 | 1个 | 好 | 硬 | 是 | 服务经历了硬恢复。执行事件处理程序,并发出恢复通知。 |
7 | 1个 | 好 | 硬 | 没有 | 服务还是可以的。 |
8 | 1个 | 未知 | 柔软的 | 是 | 检测到服务已更改为SOFT non-OK状态。事件处理程序执行。 |
9 | 2 | 好 | 柔软的 | 是 | 服务经历了软恢复。事件处理程序将执行,但不会发送通知,因为这不是“真正的”问题。发生这种情况后,状态类型将设置为HARD,并且将检查编号立即重置为1。 |
10 | 1个 | 好 | 硬 | 没有 | 服务稳定在OK状态。 |