我已经在三台服务器上完成了 Nagios 的安装和设置,因此服务器上的实例A还提供服务器报告乙&C(通过 NRPE)。
SSHD 有意监听每台主机上的不同端口,因此我编辑了每台主机上的 /etc/nagios3/conf.d/services_nagios2.cfg 文件以测试适当的端口。服务器上的 Nagios 本机 HTTP 实例乙&C确认 SSH 正在运行,但服务器上的报告A显示 SSH 严重故障乙&C。
我的印象是,NRPE 服务旨在在远程主机上运行本地检查,将其余部分转发回监控主机,然后监控主机将数据整理成一份针对所有机器的报告。
查看配置网页的服务部分(在服务器上A),Nagios 在所有三台服务器上测试相同的 SSH 端口,而不是不同的端口乙&C。有人能解释一下为什么吗?
到目前为止,我能纠正此问题的唯一方法是在服务器上的 conf.d/services_nagios2.cfg 文件中为每个远程主机创建不同的主机 group_name 和 check_commandA。
这不可能是唯一的办法吗?
当然,每次远程监控的服务器需要不同的服务配置时,文件的长度就会成倍增加!
答案1
好的,我一直在仔细阅读 Nagios3 文档,并回答了我的问题的端口配置部分......
答案在于 Nagios 配置文件中存在的对象继承模型。本质上,我在每个主机定义中创建了一个自定义变量,用于指定该机器上唯一的 ssh 端口:
define host {
use generic-host
host_name serverB
address 10.0.1.3
_sshport 67382
}
主机在 hostgroups_nagios2.cfg 文件中分组在一起:
# A list of your ssh-accessible servers
define hostgroup {
hostgroup_name ssh-servers
alias SSH servers
members localhost,serverB,serverC
}
该组在 services_nagios2.cfg 中由检查 SSH 的块引用:
# check that ssh services are running
define service {
hostgroup_name ssh-servers
service_description SSH
check_command check_ssh_port!$_HOSTSSHPORT
use generic-service
notification_interval 0 ; set > 0 if you want to be renotified
}
在 check_ssh_port 命令的末尾,您可以看到我$_HOSTSSHPORT
在运行检查时添加了从 ssh-servers 主机组内的每个主机继承的 sshport 变量。
现在,当添加新服务器时,我只需要使用新主机的详细信息修改我的 hosts_nagios2.cfg 文件。
为了实现向后兼容性,我还修改了我的 generic-host_nagios2.cfg 文件并添加了该行,_sshport 22
以便如果由于某种原因我需要监视在默认端口上运行 SSH 的某些系统,则端口配置将从通用主机模板继承。
我希望这能帮助那些陷入同样困境的人。我仍然想了解为什么远程检查不使用远程服务器上的自定义配置文件。