Nagios

Nagios check_ssh 返回使用資訊而不是狀態

  • October 19, 2015

我在 Ubuntu 桌面(Nagios 伺服器)上安裝了 Nagios,我想監控一個 Ubuntu 伺服器實例(受監控的客戶端)。我可以在兩台機器之間通過 SSH 連接,並且 SSH 沒有被阻止。PING 和 check_users 等 nagios 標準服務可以正常工作,但 check_ssh 從一開始就處於 UNKNOWN 狀態。狀態資訊傳遞“Usage:”,這是參數錯誤的指示符。

我可以在 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 Server)

/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$' 
}

謝謝!

應該有一個為“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$'
}

因此,預設情況下,主機地址被傳遞給命令,除了 use 之外,您無需執行任何操作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

引用自:https://serverfault.com/questions/729441