NRPE是使用的Nagios服务器监控远程Linux系统中最常用的方法。 但在某些情况下,我们不希望远程系统上安装NRPE,或者我们可以不安装它。 在这种情况下很少有替代方式来监控远程系统。 在本教程中,我们提到
check_by_ssh方法。
第1步:设置基于密钥的SSH
首先要求其确保Nagios的服务器能够连接使用ssh客户端,而不提示密码。要做到这一点创建的Nagios服务器上的SSH密钥对
# su - nagios
$ ssh-keygen
复制公钥到远程主机的 ~/.ssh/authorized_keys文件中,可以手动或使用下面的命令
$ ssh-copy-id ~/.ssh/id_rsa.pub remote.example.com
第2步:验证SSH连接
让我们来看看,如果你能以没有密码ssh连接到远程计算机
$ ssh remote.example.com
测试使用check_by_ssh远程机器上执行的插件,确保其不会提示输入密码
# cd /usr/lib64/nagios/plugins
# ./check_by_ssh -H remote.example.com -p 22 -C 'ls -l'
如果上面的命令执行成功,你会看到的远程系统的文件列表。
第3步:在Nagios配置检查
正如我们已经完成环境设置使用SSH来检查远程服务器。让我们增加一个检查到我们的Nagios服务器。大多数的Nagios的管理员倾向于使用NagiosQL Web界面配置检查和某些管理员通过直接编辑文件使用命令行。
通过编辑文件添加检查:
在编辑器中测试服务检查的配置文件,并添加以下内容到远程系统上,运行ls -l命令。您可以与您首选的检查命令来更改此命令。如果使用NagiosQL来管理服务器,那么就不要直接编辑文件。
###############################################################################
#
# Service configuration file
#
###############################################################################
define service {
#NAGIOSQL_CONFIG_NAME MyRemoteServer
host_name remote.example.com
service_description Check Any By SSH
display_name Check Any By SSH
check_command check_by_ssh!22!ls -l!nagios
initial_state o
max_check_attempts 5
check_interval 40
retry_interval 40
active_checks_enabled 1
check_period 24x7
event_handler notify-service-by-email
notification_interval 60
notification_period 24x7
notifications_enabled 1
contacts Admin,Support
contact_groups Admin_Group
register 1
}
###############################################################################
#
# END OF FILE
#
###############################################################################
通过NagiosQL添加检查:
登录NagiosQL管理界面,并添加新的服务,所有的细节将类似于正常配置,除了检查命令。添加检查命令选项,如下面的截图。