被Windows主机监控端配置:
nagios监控windows系统主机有三种实现方式:SNMP,NSClient++,NRPE,后面两种方式都需要在windows上安装agent,本文档只介绍使用NSClient++方式来监控Windows
下载地址:http://nsclient.org/nscp/downloads,下载对应版本的NSClient,如果是64位系统用32位的就会出现Explorer.exe: not running,安装错了直接使用nsclient++ /?获取卸载信息:nsclient++ -uninstall
这里我解压出放在了D盘下:D:\NSClient++-0.3.8-Win32,解压出来然后执行安装命令
如果下载的是msi安装包。下载之后直接安装,过程中会提示输入Nagios监控服务器地址和密码。地址填写正确,密码不用设置。
注意:如果nagios server是内昂IP 而nagios client是外网IP 那么在在nagios client配置文件中allowed_hosts中添加出口的外网IP,否则无法获取信息,监控页面中显示“could not fetch information from server”,通过服务器检测显示如下:
[root@localhost libexec]# ./check_nrpe -H IP CHECK_NRPE: Received 0 bytes from daemon. Check the remote server logs for error messages. [root@localhost libexec]#
你在nsclient.log日志里会看到这样的信息:
2015-08-19 13:18:59: error:modules\NSClientListener\NSClientListener.cpp:313: Unauthorized access from: ip
2015-08-19 13:20:37: error:modules\NRPEListener\NRPEListener.cpp:289: Unauthorize access from: IP
安装完成后编辑nsc.ini,把前面的分号去掉,如下图所示
(网上有的说只有CheckWMI.dll和RemoteConfiguration.dll前面的注释保留)
在settings部分2处allowed_hosts加入允许主机访问的服务器IP地址,这里要对号入座,输入你的nagios服务器的IP即可
在nsclient部分开启NSClinet的默认监听端口12489以及允许访问本机的主机名称,编辑完以后保存退出
启动服务,在登陆标签里开始交互模式
再用命令netstat -aon|findstr "12489" 查看确认端口服务已经运行
再到服务器运行./check_nrpe �CH 要监控服务器的主机IP地址,看到如下图所示表示通过没有问题,如果allowed_hosts有一处没设置正确就会出现could not fetch information from server 等类似错处,可以通过客户端安装目录下面的log文件查看原因
监控端(nagios)配置:
Nagios安装好默认在objects目录下有一个window的配置文件,可以复制他来定义要添加的window主机,定义前先备份一份
配置windows.cfg,如下图
修改nagios主配置文件
[root@localhost objects]# vim /usr/local/nagios/etc/nagios.cfg |
重启nagios:
[root@localhost objects]# service nagios restart |
nagios页面显示:
刚添加的需要等待一会才能检测到,如果要添加或者删除一些服务,可以直接在window.cfg文件的服务定义处修改,如添加ping
[root@localhost objects]# vim windows.cfg |
如果需要定义检测时间、周期,直接在对应服务的定义字段里添加,如:
define service{ use generic-service host_name winserver max_check_attempts 5 ;检查多少次,依然有问题时告警。nagios3.0.3配置里是没有这行的,默认就是3。好像2.x版本的有,不过我没用过2.x。 normal_check_interval 15 ;监控周期。有的文档里描述这行的单位是秒,但我试出来的是分钟。这行默认配置里也没有,默认好像是10分钟。 service_description PING check_command check_ping!100.0,20%!500.0,60% -s 123456 ;如果你在NSClient++-里设置了密码可以在这里设置! contact_groups admins ;这行也是默认情况下没有的。可填可不填,这里只是为了出错就给哪个组里的用户发短信发邮件 # check_command check_nt!PROCSTATE!-d SHOWALL -l CMD.EXE -s 123456 ;监控cmd.exe我照着网上的文档试着监控explorer.exe,全小写,或者写成Explorer.exe都能监控到,但是CMD或者firefox等用户进程,不管资源管理器里显示的大小写如何,这里必须写成大写,否则就检测失败。
[root@localhost objects]# service nagios restart |
修改nagios页面中显示的名称,如上图winserver,在配置文件windows.cfg中所有winserver替换成想修改的名称,如修改为win2003
[root@localhost objects]# vim windows.cfg |
在末行模式输入:% s/winserver/win2003/g
[root@localhost objects]# service nagios restart |
摘录一些参数信息供参考
如果丢包率到达20%则报warning,到达60%则报critical:
check_ping!100.0,20%!500.0,60%
如果可用空间低于20%会报Warning,如果可用空间低于10%则报Critical:
check_local_disk!20%!10%!/
监测远程主机当前的登录用户数量,如果大于20用户则报warning,如果大于50则报critical:
check_local_users!20!50
监测远程主机当前的进程总数,如果大于250进程则报warning,如果大于400进程则报critical:
check_local_procs!250!400!RSZDT
监测远程主机swap文件系统使用量,如果swap可用空间低于20%则报warning,低于10%则报critical:
check_local_swap!20!10
“-H 192.168.1.220”定义目标主机的地址,-w说明后面的一对值对应的是“WARNING”状态,“80%”是其临界值。“-c 500.0,100%” 其中“-c”说明后面的一对值对应的是" CRITICAL",“100%”是其临界值。“-p 1”说明每次探测发送一个包
check_ping -H 192.168.1.220 -w 300.0,80% -c 500.0,100% -p 1
检查http的80端口
check_http!80
用法: check_nt -H <hostname> -p <port> -v INSTANCES -l <counter object>
<counter object> 是一个windows性能对象计数 (eg. Process),
如果它是两个词,它应该引号括起来,返回的结果将是一个逗号分隔的对象
check_nt用法举例:
check_nt -H 192.168.1.2 -p 12489 -v CPULOAD -l 60,90,95 //显示最后60分钟waring为90%,critical为95%时的平均cpuload
check_nt -H 192.168.1.2 -p 12489 -v UPTIME //显示192.168.1.2从开机到现在运行时间
check_nt -H 192.168.1.2 -p 12489 -v USEDDISKSPACE -l c //显示192.168.1.2 C盘使用情况
check_nt -H 192.168.1.2 -p 12489 -v USEDDISKSPACE -l d -w 60 -c 95 //显示192.168.1.2 D盘设waring为90%,critical为95%时的空间使用信息
check_nt -H 192.168.1.2 -p 12489 -v MEMUSE //显示192.168.1.2内存使用情况
check_nt -H 192.168.1.2 -p 12489 -v SERVICESSTATE -d SHOWALL //显示192.168.1.2所有正在运行的服务
check_nt -H 192.168.1.2 -p 12489 -v SERVICESSTATE -d SHOWALL -l W3SVC //显示192.168.1.2上IIS网站服务运行情况
check_nt -H 192.168.1.2 -p 12489 �Cs 7758521 �Cv CLIENTVERSION //查看192.168.1.2上nsclient++版本
check_nt -H 192.168.1.2 -p 12489 �Cs 7758521 -v INSTANCES -l Process //列举192.168.1.2上运行的进程
被Linux主机监控端配置:
nagios监控linux服务器, 因为监控都是依靠插件去完成的,而监控linux主要使用NRPE插件。
NRPE总共由两部分组成:
check_nrpe插件:运行在监控主机上
NRPE daemon:运行在远程的linux主机上(通常就是被监控机)
整个的监控过程:
当Nagios需要监控某个远程linux主机的服务或者资源情况时:
1:nagios运行check_nrpe插件,我们要在nagios配置文件中告诉它要检查什么.
2:check_nrpe插件会通过SSL连接到远程的NRPE daemon.
3:NRPE daemon会运行相应的nagios插件来执行检查本地资源或服务.
4:NRPE daemon将检查的结果返回给check_nrpe插件,插件将其递交给nagios做处理.
注意:NRPE daemon需要nagios插件和Nrpe一起安装在远程被监控linux主机上,否则,daemon不能做任何的监控. 别外因为它们间的通信是加密的SSL,所以需要安装SSL
被监控端安装NRPE和 nagios-plugins
[root@localhost ~]# useradd nagios -s /sbin/nologin [root@localhost src]# wget http://sourceforge.net/projects/nagiosplug/files/nagiosplug/1.4.16/nagios-plugins-1.4.16.tar.gz/download [root@localhost src]# tar zxvf nagios-plugins-1.4.16.tar.gz [root@localhost src]# cd nagios-plugins-1.4.16 [root@localhost nagios-plugins-1.4.16]# ./configure |
出错,原因是没安装gcc编译器
‍
[root@localhost nagios-plugins-1.4.16]# yum install gcc -y |
再次编译
[root@localhost nagios-plugins-1.4.16]# ./configure |
[root@localhost nagios-plugins-1.4.16]# make && make install |
出错,根据提示觉得是openssl的版本和openssl没有安装的问题,就rpm查看了一下发现已经安装了
[root@localhost nagios-plugins-1.4.16]# rpm -qa|grep openssl
openssl-1.0.0-27.el6.i686
之前安装nagios也安装nagios-plugins,于是就到之前安装nagios那台机器上去查看
[root@localhost objects]# rpm -qa|grep openssl
openssl-1.0.0-27.el6_4.2.i686
openssl-devel-1.0.0-27.el6_4.2.i686
一对比发现少了openssl-devel,于是安装它
[root@localhost nagios-plugins-1.4.16]# yum install openssl-devel -y [root@localhost nagios-plugins-1.4.16]#make clean [root@localhost nagios-plugins-1.4.16]#./configure [root@localhost nagios-plugins-1.4.16]#make |
[root@localhost nagios-plugins-1.4.16]#make install |
装完以后确认一下相关数据文件是否存在
[root@localhost nagios-plugins-1.4.16]# cd /usr/local/src/ [root@localhost src]# wget http://sourceforge.net/projects/nagios/files/nrpe-2.x/nrpe-2.12/nrpe-2.12.tar.gz/download [root@localhost src]# tar zxvf nrpe-2.12.tar.gz [root@localhost src]# cd nrpe-2.12 [root@localhost nrpe-2.12]# ./configure |
[root@localhost nrpe-2.12]# make && make install |
出错:根据提示是用户的原因,估计之前忘记创建nagios了
OK
编辑nrpe.cfg在allowed_hosts后面加上nagios服务器的IP地址.
[root@localhost nrpe-2.12]# vim /usr/local/nagios/etc/nrpe.cfg |
启动服务然后查看服务端口的运行状态.
[root@localhost nrpe-2.12]# service nrpe start [root@localhost nrpe-2.12]# chkconfig nrpe on [root@localhost nrpe-2.12]# netstat -ant|grep 5666 |
关闭selinux、iptables里开启5666
[root@localhost nrpe-2.12]# vim /etc/selinux/config |
[root@localhost nrpe-2.12]# vim /etc/sysconfig/iptables |
[root@localhost nrpe-2.12]# service iptables restart |
在服务器端做测试
监控主机(nagios)配置:
在nagios中定义nrpe
[root@localhost ~]# vim /usr/local/nagios/etc/objects/commands.cfg |
在文末添加如下:
# 'check_nrpe' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
监控机linux的配置文件可以应用local.cfg,引用前先备份,这里被监控机配置文件命名为CentOS.cfg
[root@localhost objects]# cp localhost.cfg localhost.cfgbak [root@localhost objects]# cp localhost.cfg CentOS.cfg [root@localhost objects]# vim CentOS.cfg |
修改配置文件nagios.cfg
[root@localhost objects]# vim /usr/local/nagios/etc/nagios.cfg |
[root@localhost objects]# service nagios restart Running configuration check... CONFIG ERROR! Restart aborted. Check your Nagios configuration. |
重启报错,用检查命令检测下配置文件,根据提示来找错误
[root@localhost objects]# check |
[root@localhost objects]# CentOS.cfg |
重名了,这里修改成和配置文件同名CentOS
保存退出,用命令再检测下配置文件
[root@localhost objects]# check |
[root@localhost objects]# vim CentOS.cfg |
主机组重名,这里我们改成CentOS-servers,这里直接修改,别用上面说的全局替换,
保存退出,再检测下
[root@localhost objects]# check |
OK
重启服务
[root@localhost objects]# service nagios restart |
查看nagios页面:
CentOS主机的http开始报Connection refused是因为主机没安装或者没启动httpd,启动下就会出现上图的警告,解决方法:
添加mysql服务监控
被监控端:
检查系统是否安装mysql
系统没有安装
安装mysql
[root@localhost ~]# yum install mysql mysql-server -y |
启动服务:
给root用户创建mysql密码
[root@localhost ~]# mysql_secure_installation |
输入当前密码(默认为空,直接回车),然后回车输入新密码后一路回车
Tips:或者通过mysqladmin -u root -p password "123456" 直接修改为123456
输入:quit;退出mysql
被监控端设置好了
监控端
修改nagios配置文件,在文末添加如下
[root@localhost ~]# vim /usr/local/nagios/etc/objects/commands.cfg |
# 'check mysql' command definition
define command{
command_name check_mysql
command_line $USER1$/check_mysql -H 10.15.72.136 -u nagios -d nagios -p redhat
}
修改对应监控mysql对应主机配置文件,相应位置添加如下
[root@localhost ~]# vim /usr/local/nagios/etc/objects/CentOS.cfg |
# Define a service to "check mysql service" the local machine
define service{
use local-service
host_name CentOS
service_description check_mysql
check_command check_mysql
}
重启nagios,在nagios监控页面CentOS处就可看到check_mysql监控
[root@localhost ~]# service nagios restart |
至此,通过配置文件添加监控主机完成
补充:
nrpe监控类别说明:
监控对象 | 监控阀值 | |
主机存活: check_ping | -w 3000.0,80% -c 5000.0,100% -p 5(3000毫秒响应时间内, 丢包率超过80%报警告,5000毫秒响应时间内,丢包率超过 100%报危急,一共发送5个包) |
|
登录用户: check_user | -w 5 -c 10(w为警告,c为危急) | |
系统负载: check_load | -w 15,10,5 -c 30,25,20(1分钟,5分钟,15分钟大于对应 的等待进程数则警告或危急) |
|
磁盘占用率: check_disk | -w 20% -c 10% -p /(根分区剩余空间为总大小的20%警告, 10%危急,-p后是根分区) |
|
检测僵尸进程: check_zombie _procs | -w 5 -c 10 -s Z(有5个僵尸进程报警告,10个报危急) | |
检测交换分区使用率: check_swap | -w 20% -c 10%(交换分区剩余空间为总大小的20%警告, 10%危急) | |
监控服务端口: check_tcp | -H localhost2 -p 80(主机与对应的端口号) | |
监控页面响应时间: check_http | -H localhost2 -u http:\/\/localhost2/test.jsp �Cw 5 �Cc 10(检查页面,超过5s报警告,超过10s报危急) |