如何使用 nagios 监控 ssh 隧道?

如何使用 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 网络界面上检查该服务时,我看到:

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

另一条评论,与您的“真正”问题无关...我不会为所有远程服务器做出单独的主机定义,我只会在本地主机“主机”上为每个隧道创建一个新服务(被视为提供服务的主机)。

相关内容