解决方案

解决方案

我在 Ubuntu 桌面(Nagios 服务器)上安装了 Nagios,我想监控 Ubuntu 服务器实例(受监控的客户端)。我可以通过 SSH 在两台机器之间进行连接,并且 SSH 未被阻止。nagios 标准服务(例如 PING 和 check_users)可以运行,但 check_ssh 从一开始就处于未知状态。状态信息显示“使用情况:”,这表明参数错误。

我可以在 nagios 服务器(Ubuntu 桌面)上手动执行检查

/usr/local/nagios/libexec/check_ssh -H 192.168.0.2

SSH OK - OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.3 (protocol 2.0) | time=0,012856s;;;0,000000;10,000000

以及主机(Ubuntu 服务器)

/usr/lib/nagios/plugins/check_ssh 192.168.0.2

SSH OK - OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.3 (protocol 2.0) | time=0.011613s;;;0.000000;10.000000

这是主机配置:

define host {
        use                          linux-server
        host_name                    backup
        alias                        Backup Server
        address                      192.168.0.2 
        register                     1
}

主机配置标准:

define service {
      host_name                       backup
      service_description             Check SSH
      check_command                   check_ssh
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

我也尝试手动添加主机的 IP:

define service {
      host_name                       backup
      service_description             Check SSH
      check_command                   check_ssh!192.168.0.2
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

我在这里遗漏了什么?

我还根据提示尝试了

根据 Dan 的评论,我可以弄清楚该服务实际上尝试提交此配置中的参数:

ssh_check $ARG1$ '$HOSTADDRESS$' 

验证备份系统上可用的 ssh_check 配置显示了这些可能性,但是标准 ssh_check 命令仍然不起作用。

cat /etc/nagios-plugins/config/ssh.cfg 
# 'check_ssh' command definition
define command{
    command_name    check_ssh
    command_line    /usr/lib/nagios/plugins/check_ssh '$HOSTADDRESS$'
    }

# 'check_ssh_port' command definition
define command{
    command_name    check_ssh_port
    command_line    /usr/lib/nagios/plugins/check_ssh -p '$ARG1$' '$HOSTADDRESS$'
    }

####
# use these checks, if you want to test IPv4 connectivity on IPv6 enabled systems
####

# 'check_ssh_4' command definition
define command{
        command_name    check_ssh_4
        command_line    /usr/lib/nagios/plugins/check_ssh -4 '$HOSTADDRESS$'
        }

# 'check_ssh_port_4' command definition
define command{
    command_name    check_ssh_port_4
    command_line    /usr/lib/nagios/plugins/check_ssh -4 -p '$ARG1$' '$HOSTADDRESS$'
    }

我进一步尝试将备份服务器的 IP 地址作为两个参数提交,但没有成功。

define service {
      host_name                       backup
      service_description             Check SSH
      check_command                   check_ssh!192.168.0.2!192.168.0.2
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

解决方案

我不知道如何处理客户端 nagios 插件配置 (/etc/nagios-plugins/config/ssh.cfg ) 中定义的服务命令。当我设置例如 ssh_check_4 时,我的 nagios 服务器抱怨未定义的服务。我最终配置了一个新的服务命令:

define service {
      host_name                       backup
      service_description             Check SSH
      check_command                   check_ssh_fix
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define command{
  command_name  check_ssh_fix
  command_line  /usr/lib/nagios/plugins/check_ssh '$HOSTADDRESS$' 
}

谢谢!

答案1

应该有一个针对“check_ssh”的定义命令

就像这样,例如在 Debian/Ubuntu 系统上/etc/nagios-plugins/config/ssh.cfg

define command{
  command_name  check_ssh
  command_line  /usr/lib/nagios/plugins/check_ssh '$HOSTADDRESS$'
}

因此,默认情况下,主机地址会传递给命令,您除了使用之外无需执行任何其他操作check_ssh

我猜你的命令是这样的:

define command{
  command_name  check_ssh
  command_line  /usr/lib/nagios/plugins/check_ssh '$HOSTADDRESS$' $ARG1$
}

因此将运行以下命令:

/usr/lib/nagios/plugins/check_ssh '1.2.3.4' 1.2.3.4

答案2

检查 nagios-client 的版本是否与您的监控系统兼容。我在本地运行正常时也遇到过类似的问题。但它没有更新我的监控(centron)。我将 nagios-client 降级到以前的版本,它开始正常工作。

相关内容