是否可以为我在 icinga 配置中定义的每个 Windows 主机向 check_nt/check_nrpe 命令传递不同的密码?例如,我有 3 个 Windows 主机
define host {
use windows-server
host_name prod
address 10.0.0.1
}
define host {
use windows-server
host_name db
address 10.0.0.2
}
define host {
use windows-server
host_name test
address 10.0.0.3
}
并设置服务:
define service{
use generic-service
host_name prod,db,test
service_description Uptime
check_command check_nt!UPTIME
normal_check_interval 180
}
调用
define command {
command_name check_nt
command_line /usr/lib/nagios/plugins/check_nt -H '$HOSTADDRESS$' -p 12489 -v '$ARG1$'
}
这一切都运行良好,但我希望能够为每个主机设置不同的密码(无法从 Web 界面查看)。我知道 USERn 宏不会出现在 Web 界面中,但我不知道如何在这里使用它们。有没有一种简单的方法可以做到这一点,而无需创建 3 个不同的服务并在该阶段将密码作为参数传递?
答案1
是的,只需重写命令定义:
define command {
command_name check_nt_pwd
command_line /usr/lib/nagios/plugins/check_nt -H '$HOSTADDRESS$' -p 12489 -s '$ARG1$' -v '$ARG2$'
}
然后您可以使用三个服务定义,如下所示:
define service{
use generic-service
host_name prod
service_description Uptime
check_command check_nt!PWD1!UPTIME
normal_check_interval 180
}
define service{
use generic-service
host_name db
service_description Uptime
check_command check_nt!PWD2!UPTIME
normal_check_interval 180
}
或者如果您有一个现代 Nagios 设置主机变量 (_password) 并使用宏 ($_HOSTPASSWORD$),如下所示:
define host {
use windows-server
host_name prod
address 10.0.0.1
_password PWD1
}
define service{
use generic-service
host_name prod,db,test
service_description Uptime
check_command check_nt!$_HOSTPASSWORD$!UPTIME
normal_check_interval 180
}
或者如果您想以类似的方式将宏直接添加到命令定义中。