Nagios
Nagios check_ssh 返回使用資訊而不是狀態
我在 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