【Nagios】使用

被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,解压出来然后执行安装命令

141123988.jpg

如果下载的是msi安装包。下载之后直接安装,过程中会提示输入Nagios监控服务器地址和密码。地址填写正确,密码不用设置。

wKioL1VdP4bC2soFAAJp1Idp6vs747.jpg

注意:如果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前面的注释保留

141555903.jpg

在settings部分2处allowed_hosts加入允许主机访问的服务器IP地址,这里要对号入座,输入你的nagios服务器的IP即可

141606982.jpg

在nsclient部分开启NSClinet的默认监听端口12489以及允许访问本机的主机名称,编辑完以后保存退出

141733528.jpg

启动服务,在登陆标签里开始交互模式

wKiom1VdPnSRk3OYAADfaZFAPak135.jpg

再用命令netstat -aon|findstr "12489" 查看确认端口服务已经运行

141933927.jpg

再到服务器运行./check_nrpe �CH 要监控服务器的主机IP地址,看到如下图所示表示通过没有问题,如果allowed_hosts有一处没设置正确就会出现could not fetch information from server 等类似错处,可以通过客户端安装目录下面的log文件查看原因

142158172.jpg

监控端(nagios)配置:

Nagios安装好默认在objects目录下有一个window的配置文件,可以复制他来定义要添加的window主机,定义前先备份一份

142617647.jpg

配置windows.cfg,如下图

143431286.jpg

修改nagios主配置文件

[root@localhost objects]# vim /usr/local/nagios/etc/nagios.cfg

143114712.jpg


重启nagios:

[root@localhost objects]# service nagios restart

nagios页面显示:

143552153.jpg

刚添加的需要等待一会才能检测到,如果要添加或者删除一些服务,可以直接在window.cfg文件的服务定义处修改,如添加ping

[root@localhost objects]# vim windows.cfg

144105421.jpg
如果需要定义检测时间、周期,直接在对应服务的定义字段里添加,如:

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

144238387.jpg修改nagios页面中显示的名称,如上图winserver,在配置文件windows.cfg中所有winserver替换成想修改的名称,如修改为win2003

[root@localhost objects]# vim windows.cfg

在末行模式输入:% s/winserver/win2003/g

144831530.jpg

144832428.jpg

[root@localhost objects]# service nagios restart

144934390.jpg

摘录一些参数信息供参考

如果丢包率到达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插件。

145438367.jpg

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

150926143.jpg

出错,原因是没安装gcc编译器

&#8205;

[root@localhost nagios-plugins-1.4.16]# yum install gcc -y

151603185.jpg

再次编译

[root@localhost nagios-plugins-1.4.16]# ./configure

151745834.jpg

[root@localhost nagios-plugins-1.4.16]# make && make install

153127777.jpg

出错,根据提示觉得是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

154532739.jpg

[root@localhost nagios-plugins-1.4.16]#make install

154558321.jpg

装完以后确认一下相关数据文件是否存在

154709936.jpg

[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

155028188.jpg

[root@localhost nrpe-2.12]# make && make install

155540235.jpg

出错:根据提示是用户的原因,估计之前忘记创建nagios了

155541133.jpg

OK

155951230.jpg

编辑nrpe.cfg在allowed_hosts后面加上nagios服务器的IP地址.

[root@localhost nrpe-2.12]# vim /usr/local/nagios/etc/nrpe.cfg

160319228.jpg

启动服务然后查看服务端口的运行状态.

[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

160424485.jpg

关闭selinux、iptables里开启5666

[root@localhost nrpe-2.12]# vim /etc/selinux/config

160828901.jpg

[root@localhost nrpe-2.12]# vim /etc/sysconfig/iptables

160923599.jpg

[root@localhost nrpe-2.12]# service iptables restart

在服务器端做测试

160959944.jpg

监控主机(nagios)配置:

在nagios中定义nrpe

[root@localhost ~]# vim /usr/local/nagios/etc/objects/commands.cfg

在文末添加如下:

  1. # 'check_nrpe' command definition

  2. define command{  

  3.        command_name    check_nrpe  

  4.        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$  

  5.        }  

095920916.jpg

监控机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

161913459.jpg

修改配置文件nagios.cfg

[root@localhost objects]# vim /usr/local/nagios/etc/nagios.cfg

161732216.jpg

[root@localhost objects]# service nagios restart

Running configuration check... CONFIG ERROR!  Restart aborted.  Check your Nagios configuration.

重启报错,用检查命令检测下配置文件,根据提示来找错误

[root@localhost objects]# check

162159643.jpg

[root@localhost objects]# CentOS.cfg

162253798.jpg

重名了,这里修改成和配置文件同名CentOS

162441151.jpg

162504855.jpg

保存退出,用命令再检测下配置文件

[root@localhost objects]# check

162654758.jpg

[root@localhost objects]# vim CentOS.cfg

162811848.jpg

主机组重名,这里我们改成CentOS-servers,这里直接修改,别用上面说的全局替换,

163054998.jpg

保存退出,再检测下

[root@localhost objects]# check

163219667.jpg

OK

重启服务

[root@localhost objects]# service nagios restart

查看nagios页面:

165102916.jpg

CentOS主机的http开始报Connection refused是因为主机没安装或者没启动httpd,启动下就会出现上图的警告,解决方法:

165251123.jpg

165331285.jpg

添加mysql服务监控

被监控端:

检查系统是否安装mysql

103311156.jpg

系统没有安装

安装mysql

[root@localhost ~]# yum install mysql mysql-server -y

103758168.jpg

启动服务:

103909382.jpg


给root用户创建mysql密码

[root@localhost ~]# mysql_secure_installation

输入当前密码(默认为空,直接回车),然后回车输入新密码后一路回车

104840183.jpg

Tips:或者通过mysqladmin -u root -p password "123456" 直接修改为123456

105230763.jpg

输入:quit;退出mysql

被监控端设置好了

监控端
修改nagios配置文件,在文末添加如下

[root@localhost ~]# vim /usr/local/nagios/etc/objects/commands.cfg

  1. # 'check mysql' command definition

  2. define command{  

  3. command_name check_mysql  

  4. command_line $USER1$/check_mysql -H 10.15.72.136 -u nagios -d nagios -p redhat  

  5. }  

    110733914.jpg

修改对应监控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

       }

110417282.jpg重启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报危急)



你可能感兴趣的:(nagios)