我如何使用nagios监视ssh隧道?

我有一个服务器,用于一堆反向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 web界面上查看服务时,我看到:

 Status Information: UNKNOWN (for 0d 2h 7m 50s) Usage:check_ssh [-46] [-t <timeout>] [-r <remote version>] [-p <port>] <host> 

有什么build议么?

命令的参数应该在命令定义中configuration。 就像是:

 define command { command_name check_tunneled_ssh command_line /usr/lib/nagios/plugins/check_ssh -p $ARG1$ $HOSTADDRESS$ } 

那么你会用

 check_command check_tunneled_ssh!12344 

在你的服务。

这是我的nagios / etc / objects / commands.cfg,我相信这是标准的。

 # 'check_ssh' command definition define command{ command_name check_ssh command_line $USER1$/check_ssh $ARG1$ $HOSTADDRESS$ } 

这意味着我认为你通过在你的check命令中指定$ HOSTADDRESS $出错了。 尝试在您的服务定义,而不是:

  check_command check_ssh!-p 12345 

另一个评论,与你的“真正的”问题没有关系……我不会为所有的远程服务器做一个单独的主机定义,我只是在本地主机上创build一个新的服务(看作是提供服务)为每个隧道。