我有一台服务器,用作一组反向 ssh 隧道的中间人。我想在该服务器上使用 nagios 来监控所有这些 ssh 隧道是否正常运行。
本质上我想要做与 nagios 相当的事情:
ssh -p 12344 localhost
ssh -p 12415 localhost
ssh -p 12544 localhost
我有以下定义:
define host{
use generic-host
host_name paniqui
address localhost
_PORT 12345
}
define hostgroup {
hostgroup_name chits-servers
alias CHITS servers
members paniqui
}
define service {
hostgroup_name chits-servers
service_description SSHTUNNEL
check_command check_ssh!-p $_HOSTPORT$ $HOSTADDRESS$
use generic-service
notification_interval 0 ; set > 0 if you want to be renotified
}
但是当我在 Nagios 网络界面上检查该服务时,我看到:
Status Information: UNKNOWN (for 0d 2h 7m 50s)
Usage:check_ssh [-46] [-t <timeout>] [-r <remote version>] [-p <port>] <host>
有什么建议么?
答案1
命令的参数应该在命令定义中配置。例如:
define command {
command_name check_tunneled_ssh
command_line /usr/lib/nagios/plugins/check_ssh -p $ARG1$ $HOSTADDRESS$
}
然后你会使用
check_command check_tunneled_ssh!12344
为您服务。
答案2
这是我的 nagios/etc/objects/commands.cfg,我相信它是标准的。
# 'check_ssh' command definition
define command{
command_name check_ssh
command_line $USER1$/check_ssh $ARG1$ $HOSTADDRESS$
}
这意味着我认为您在检查命令中指定 $HOSTADDRESS$ 是错误的。请在服务定义中尝试以下操作:
check_command check_ssh!-p 12345
另一条评论,与您的“真正”问题无关...我不会为所有远程服务器做出单独的主机定义,我只会在本地主机“主机”上为每个隧道创建一个新服务(被视为提供服务的主机)。