介绍
如果您曾经从事过技术支持工作,那么毫无疑问,您已经让用户告诉您“ Internet断开了”。作为一名技术人员,您可以确定没有人从互联网上拔下电源线。用户椅子和Internet之间的某处肯定出了问题。
假定它是一个技术问题,则开始寻找问题。也许用户的计算机已关闭,网络电缆已拔出,或者您组织的核心路由器刚刚潜水。无论问题是什么,最确定的一件事-互联网没有崩溃。该用户恰好无法访问它。
Nagios Core能够确定您正在监控的host处于DOWN还是UNREACHABLE状态。这些状态非常不同(尽管相关),可以帮助您快速确定网络问题的根本原因。以下是可达性逻辑如何区分这两种状态的方法。
示例网络
看一下下面的简单网络图。对于此示例,假设您正在监控所有显示的host(服务器,路由器,交换机等)。Nagios Core已安装并在Nagios Corehost上运行。
定义父/子host的关系
为了使Nagios Core能够区分被监控host的DOWN状态和UNREACHABLE状态,您需要告诉Nagios Core这些host如何相互连接-从Nagios Core守护程序的角度来看。为此,请跟踪数据包从Nagios Core守护程序到每个host的路径。数据包遇到或通过的每个交换机,路由器和服务器都被视为“跳数”,并且需要您在Nagios Core中定义父/子host关系。从Nagios Core的角度来看,host父母/子女的关系如下所示:
现在,您知道正在监控的host的父/子关系是什么样子,如何配置Nagios Core以反映它们?您可以通过host定义中的Parents指令执行此操作。在此示例中,具有父/子关系的(缩写)host定义如下所示:
define host {
host_name Nagios ; <-- The local host has no parent - it is the topmost host
}
define host {
host_name Switch1
parents Nagios
}
define host {
host_name Web
parents Switch1
}
define host {
host_name FTP
parents Switch1
}
define host
host_name Router1
parents Switch1
}
define host {
host_name Switch2
parents Router1
}
define host {
host_name Wkstn1
parents Switch2
}
define host {
host_name HPLJ2605
parents Switch2
}
define host {
host_name Router2
parents Router1
}
define host {
host_name somewebsite.com
parents Router2
}
可达性逻辑
现在,您已经为Nagios Core配置了与host正确的父/子关系,让我们看看出现问题时会发生什么。假设两个host-网络和路由器1 -脱机。
当host更改状态(即,从UP到DOWN)时,Nagios Core中的host可达性逻辑将启动。可达性逻辑将对任何host更改状态的父级和子级发起并行检查。这使Nagios Core可以在发生更改时快速确定网络基础结构的当前状态。
在此示例中,Nagios Core将确定Web和Router1都处于DOWN状态,因为这些host的“路径”未被阻止。
Nagios Core将确定Router1之下的所有host都处于UNREACHABLE状态,因为Nagios Core无法访问它们。Router1处于DOWN状态,并阻止了到其他host的路径。这些host可能运行良好,或者可能处于脱机状态-Nagios Core不知道,因为它无法访问它们。因此,Nagios Core认为它们是“不可拆卸的”而不是“下降”的。
无法到达的状态和通知
默认情况下,Nagios Core将通知联系人有关DOWN和UNREACHABLEhost状态的信息。作为管理员/技术人员,您可能不希望收到有关“host无法连接”的host的通知。您知道您的网络结构,并且如果Nagios Core通知您路由器/防火墙已关闭,您将知道其后面的所有内容均无法访问。
如果要在网络中断期间免于泛滥的UNREACHABLE通知,可以从host定义的notification_options指令和/或联系人定义的host_notification_options指令中排除unreachable(u)选项。