我最近实现了 ISC DHCP 故障转移,它运行良好,但我想使用 Nagios 监控故障转移的当前状态。
最后,我希望我的 Nagios 检查:
不幸的是,监控dhcpd
进程是否正在运行并不是真正的解决方案——即使dhcpd
仍在运行时,故障转移状态也可能激活。
根据我的研究,似乎dhcpd
无法查询当前状态。除了解析日志文件之外,有人知道一种干净的方法来确定服务器dhcpd
当前是否处于故障转移状态吗?
答案1
为了监控故障转移设置,我将使用 OMAPI 命令(例如通过 omshell)来检查故障转移状态对象的状态。
考虑到您已正确配置 dhcpd 服务器以启用 OMAPI 访问,您可以使用以下命令:
$ cat check-failover.cmd <<EOF
server localhost
port 7911
key omapi_key <KEY>
connect
new failover-state
set name = "<FAILOVER NAME>"
open
EOF
然后像这样使用它:
$ omshell < check-failover.cmd | grep state
partner-state = 00:00:00:02
local-state = 00:00:00:02
状态是一个整数,其值在 dhcpd.8 手册页中描述(1 表示“启动”,2 表示“正常”,等等)。
从这里编写 Nagios/Shinken 探测器应该相当容易。
答案2
您是否考虑过简单地检查协议并尝试获取租约而不使用 dhclient -n 配置接口?
您可以通过检查 dhclient 打印到 stderr 的提供租约的服务器的 IP 地址来区分主服务器和辅助服务器。
答案3
据我所知,您必须使用 omshell。这是 OMAPI 调用的包装器,该 API 可用于与正在运行的 DHCP 服务器进行通信。omshell 通常包含在 dhcp 服务器包中(至少在我的 Debian Linux 机器上是这样的)。
但是,omshell 似乎不能轻易接受输入文件。你可能需要进行一些实验。
一旦 omshell 运行,您将需要在 nagios 中执行远程 shell 命令来运行 omshell 并将结果返回到 nagios 服务器。
答案4
听起来你需要 Nagios业务流程智能(BPI)附加组件。这允许您监视一组服务并根据启动的服务数量设置警报阈值。
新剑也内置有此功能。
check_dhcp
您可以使用Nagios 插件监控 DHCP——它会尝试从特定服务器获取租约,如果没有,则会发出警报。结合 BPI,您应该能够实现您所描述的目标。