我在 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 降级到以前的版本,它开始正常工作。