2-23-Nagios监控

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2-23-Nagios监控相关的知识,希望对你有一定的参考价值。

补充:
1、       常见开源监控的对比和选择
cacti
      cacti不是监控工具,他是个依赖于SNMP的数据采集和数据呈现的工具。
功能:  数据采集、保存数据[SQL,txt]
数据展示(rrdtool绘图)
数据分析和报警(很一般)
nagios
功能: 数据报警(报警功能是Nagios的特色功能)[故障触发,故障恢复都可以]
依赖分析报警(能自动的识别到关键设备的故障,关联设备不会报警)
数据采集(采集的数据是弱项,他只关心警戒位,只关心正常与否的状态,状态转换时可以实现报警,所以它采集的数据不需要保存),当然也有插件弥补这个不足,如PNP4Nagios。

 

Nagios+cacti整合互相弥补不足!
zabbix
      nagios和cacti不适合超大规模的监控、由于大规模的带宽和网络限制,会导致监控的延迟等问题,所以有很多是nagios+cacti整合,但是依然不适合在大规模的环境中,不适合分布式部署,Nagios在大规模中就会出现延迟,失去Nagios本事的特色。     
那么zabbix同时整合了cacti和Nagios特点的工具,而且还具有了前两者不具有的工具,支持分布式等等。
补充工具:
netdata:托管在github上的一款类型zabbix的开源监控工具https:/ /github.com/firehol/netdata
open-falcon:小米公司开源的企业级监控工具
2、数据采集
      SNMP:简单网络管理协议
      Agent:代理的方式去采集数据
      Shell,脚本:通过脚本获取信息来采集
3、数据展示方式:
java、php、APP
4、报警方式:
mail、短信、及时通信工具
Nagios监控
Nagios是一款开源免费的网路监视工具,可以监控的设备:Windows,Linux,Unix,Router,Switch,具有报警功能,是一个网络监控系统。它可以监视你指定的主机和服务,并在那些设备“变坏”和“变好”的时候通知管理员。
在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。NagiosCore 原先设计在Linux下运行,当然,它在其他的Unix系统下应该也能进行工作。

 

官方网站:http://www.nagios.org
技术分享

 

也分为很多个Nagios版本
技术分享
其中,我们看到Nagios 4.0 数字版本命名的为开源免费的版本(core开源免费也有很多版本是收费的,如上图),Nagios XI 英文版后缀再跟版本的命名为商业版本,如下图
技术分享

 

针对于Nagios,我们需要配合许多组件和插件来工作(打开很慢,需要FQ):
https://www.nagios.org/downloads/nagios-core-frontends/        //Nagios界面很不美观,可以更换主题
https://exchange.nagios.org                                                        //各类拓展组件官方网站,包括脚本
https://exchange.nagios.org/directory/Addons                             //监控插件或脚本


Nagios运行模式和优点
运行模式:数据收集是C/S模式,用户查看监控信息是B/S模式
优点:    1:监控网路服务状态(HTTPD,FTP,SSH,mysql……)
              2:监控主机资源(处理器符合,硬盘利用率……)
              3:拓展,根据自己的需求实现拓展检测功能(插件开发)
              4:自动日志回滚
              5:具备定义网络分层结构的能力,用“parent”主机定义来表达网络主机间的关系
              6:警告,基于状态的警告:OK,Warning(警告),critical(关键),unknown(未知)
              7:可以支持并实现对主机的冗余监控
              8:WEB界面

 

Nagios运行原理
Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控、检测功能都是通过各种插件来完成的。
启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回来的状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来。
Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态。安装完成后,在nagios主目录下的/libexec里放有nagios自带的可以使用的所有插件,如,check_disk是检查磁盘空间的插件,check_load是检查CPU负载的,等等。每一个插件可以通过运行./check_xxx –h 来查看其使用方法和功能。

 

技术分享
两张比较经典的监控图
技术分享

 

在大规模生产环境中,如果需要浏览历史数据,需要结合db

 

获取数据的方式:主动发送、NRPE插件、SNMP、NSClient++
技术分享

 

Nagios 通过NRPE 来远端管理服务
1. Nagios 执行安装在它里面的check_nrpe 插件,并告诉check_nrpe 去检测哪些服务。
2. 通过SSL,check_nrpe 连接远端机子上的NRPE daemon
3. NRPE 运行本地的各种插件去检测本地的服务和状态(check_disk,..etc)
4. 最后,NRPE 把检测的结果传给主机端的check_nrpe,check_nrpe 再把结果送到Nagios状态队列中。
5. Nagios 依次读取队列中的信息,再把结果显示出来。
Nagios所需要的软件
LAMP环境,不需要mysql
nagios-3.5.1.tar.gz                             #Nagios核心文件,Nagios服务文件,不建议用最新,很多插件没做好
nagios-plugins-2.1.1.tar.gz                #Nagios 插件,用于存放脚本和命令
NSCP-0.5.0                                       #也就是Nsclient++,用来监控Windows,分为64为何32位版本
nrpe-2.15.tar.gz                                #代理服务,用于监控非Nagios服务器的服务器本地私有信息代理
vautour_style.zip                               #主题包

 

部署Nagios监控服务器
部署之前,需要做好最基本的环境,包括LAP环境的构建(这里直接使用yum方式安装即可,在做zabbix的时候我么你需要使用我们编译的LNMP环境来做)

 

解决依赖和安装LAP环境
  1. [[email protected] ~]# yum install -y gccglibc glibc-common php gd gd-devel libpng libmng libjpeg zlib
  2. [[email protected] ~]# yum install -y httpd ;service httpd restart
Nagios运行用户
  1. [[email protected] ~]# useraddnagios      //建立Nagios用户,这里不能使用nologin的shell,nagios会用到
  2. [[email protected] ~]# groupadd nagcmd      //建立一个组
  3. [[email protected] ~]# usermod -G nagcmd nagios    //将Nagios和apache加入该组
  4. [[email protected] ~]# usermod -G nagcmdapache
Nagios核心安装
  1. [[email protected] ~]# mkdirNagios            //所有软件包放在此目录下
  2.        [[email protected]~]# cd Nagios ; ls
  3. nagios-3.5.1.tar.gz          nrpe-2.15.tar.gz
  4. nagios-plugins-2.1.1.tar.gz  vautour_style.zip
  5. [[email protected] Nagios]# tar xvfnagios-3.5.1.tar.gz -C /usr/local/src/
  6. [[email protected] Nagios]# cd/usr/local/src/nagios/
[[email protected]]# ./configure  --with-command-group=nagcmd    //指定Nagios运行用户组
……
General Options:
-------------------------
        Nagiosexecutable:  nagios
        Nagiosuser/group:  nagios,nagios           #运行用户
       Commanduser/group:  nagios,nagcmd           #运行用户组
            EmbeddedPerl:  no
             EventBroker:  yes
        Install ${prefix}:  /usr/local/Nagios     #默认安装到了/usr/local/nagios
                Lockfile:  ${prefix}/var/nagios.lock
   Check result directory:  ${prefix}/var/spool/checkresults
           Initdirectory:  /etc/rc.d/init.d
  Apache conf.d directory:  /etc/httpd/conf.d       #Apache的conf.d配置文件目录
             Mailprogram:  /bin/mail
                  HostOS:  linux-gnu

Web Interface Options:
------------------------
                 htmlURL:  http://localhost/nagios/        #登陆地址
                  CGIURL:  http://localhost/nagios/cgi-bin/
Traceroute (used by WAP):  /bin/traceroute


Review the options above foraccuracy.  If they look okay,
type‘make all‘ to compile the main program andCGIs.
[[email protected] nagios]# makeall                     
                //根据上面提示,Make all,下图出现,就无问题
** Compile finished ***

If the main program and CGIs compiledwithout any errors, you
can continue with installing Nagios asfollows (type‘make‘
without any arguments for a list of allpossible options):         
#下面已经提示安装步骤,我们就使用这个步骤来操作

  make install
     - This installs the main program, CGIs, and HTML files

  make install-init
     - This installs the init scriptin /etc/rc.d/init.d

  make install-commandmode
     - This installs and configurespermissions on the
       directoryfor holding the external command file

make install-config
     - This installs *SAMPLE* config files in /usr/local/nagios/etc
       You‘ll have to modify thesesample files before you can
       useNagios.  Read the HTML documentation for more info
       ondoing this.  Pay particular attention to the docs on
       objectconfiguration files, as they determine what/how
       thingsget monitored!

make install-webconf
     - This installs the Apache config filefor the Nagios
       webinterface

  make install-exfoliation         #主题相关,不需要安装
     - This installs the Exfoliation themefor the Nagios
       webinterface

  make install-classicui           #主题相关,不需要安装,安装到web-conf就可以了
     - This installs the classic theme for theNagios
       webinterface


*** Support Notes*******************************************

If you have questions about configuring orrunning Nagios,
please make sure that you:

     - Look atthe sample config files
     - Read thedocumentation on the Nagios Library at:
           http://library.nagios.com

before you post a question to one of themailing lists.
Also make sure to include pertinentinformation that could
help others help you.  Thismight include:

     - Whatversion of Nagios you are using
     - Whatversion of the plugins you are using
     - Relevantsnippets from your config files
     - Relevanterror messages from the Nagios log file

For more information on obtaining supportfor Nagios, visit:

       http://support.nagios.com

*************************************************************

Enjoy.
  1. [[email protected] nagios]# make install && make install-init && makeinstall-commandmode && make install-config && makeinstall-webconf
         //若是单步执行,每次执行一部,都会提示你下一步需要干什么,非常easy
//make install安装生成/usr/local/nagios/,其中/usr/local/nagios/share即nagiosWEB访问界面的站点目录
//makeinstall-init                    安装生成/etc/rc.d/init.d/nagios  启动脚本                                                      
//makeinstall-config                  安装生成/usr/local/nagios/etc下的nagios相关配置文件                                 
//makeinstall-commandmode   设定相应nagios工作目录的权限
//makeinstall-webconf              安装Nagios的WEB配置文件到Apache的conf.d目录下
到此时,安装过程就结束了
在安装的时候,make install时生存了share这个目录,这个目录是访问界面目录:

 

  1.   [[email protected]]# cd /root/Nagios ; ls /usr/local/nagios/share/
config.inc.php  docs    includes   js        media       rss-corefeed.php  side.php  stylesheets
contexthelp     images  index.php  main.php  robots.txt  rss-newsfeed.php  ssi
  1.       在make install-init的时候,生存了启动脚本
  2.        [[email protected]]# ls /etc/init.d/nagios
  3. /etc/init.d/nagios      #其实就是在/etc/rc.d/init.d/nagios
  4.        在make install-config的时候,生成了Nagios的相关配置文件
  5.        [[email protected]]# ls /usr/local/nagios/etc/
  6. cgi.cfg  nagios.cfg  objects  resource.cfg
  7. #包括以后安装了plugin等软件后,配置文件也会放入此目录

 

  resource.cfg:定义了很多资源变量的调用
       在make install-webconf的时候,已经把web-conf的相配置文件放入了/etc/httpd/conf.d/下面
  1.        [[email protected]]# ls /etc/httpd/conf.d/nagios.conf
/etc/httpd/conf.d/nagios.conf       #里面配置了一个别名,直接引用了/usr/local/nagios/share目录
  1.        [[email protected]]# vim /etc/httpd/conf.d/nagios.conf
……
Alias /nagios "/usr/local/nagios/share"
……
Nagios主目录
[[email protected] Nagios]# ll/usr/local/nagios/
bin             #Nagios执行程序所在目录
etc             #nagios配置文件所在目录,初始安装只有几个*.cfg文件
libexec         #监控所用命令,需要安装了nagios-plugins插件了才会有,检测命令,不装是空的
sbin            #Nagios的Cgi文件所在目录,外部命令所需要的文件存放目录
share           #Nagios前端页面
var             #日志文件,pid文件等
认识一下nagios的配置文件
[[email protected] Nagios]# vim/usr/local/nagios/etc/nagios.cfg
log_file=/var/log/nagios/nagios.log                        #日志位置
cfg_file=/etc/nagios/objects/commands.cfg                   #这个文件定义了很多命令
cfg_file=/etc/nagios/objects/contacts.cfg                   #定义联系人,怎么联系
cfg_file=/etc/nagios/objects/timeperiods.cfg                #定义了时间段
cfg_file=/etc/nagios/objects/templates.cfg                  #模板(联系人,主机,时间)
cfg_file=/etc/nagios/objects/localhost.cfg                  #监控本机相关配置文件
#cfg_file=/etc/nagios/objects/windows.cfg                   #windows,默认不监控
#cfg_file=/etc/nagios/objects/switch.cfg                    #交换机路由器监控,默认不监控
#cfg_file=/etc/nagios/objects/printer.cfg                   #打印机监控,默认不监控

#cfg_dir=/etc/nagios/servers                                #定义了服务合集(多个使用)
#cfg_dir=/etc/nagios/printers                               #定义了打印机合集(多个使用)
#cfg_dir=/etc/nagios/switches                               #定义了交换合集(多个使用)
#cfg_dir=/etc/nagios/routers                                #定义了路由合集(多个使用)
resource_file=/etc/nagios/private/resource.cfg 资源变量配置文件,包括$USER1$变量(一个路径)等
status_update_interval=10                                   #状态更新时间,单位s
log_rotation_method=                                      #日志滚动,默认天
service_check_timeout=60                                    #服务检查超时时间
host_check_timeout=30                                   #主机检查超时时间
event_handler_timeout=30                               
notification_timeout=30
ocsp_timeout=5
perfdata_timeout=5
[[email protected] Nagios]# vim/usr/local/nagios/etc/cgi.cfg
//此配置文件比nagios.cfg优先级高
main_config_file= /usr/local/nagios/etc/nagios.cfg             #主配置文件
physical_html_path= /usr/local/nagios/share          #物理路径
url_html_path=/nagios                               #在URL后面加上/nagios才能访问
use_authentication=1                                #使用认证
use_ssl_authentication=                           #不使用ssl
authorized_for_system_information=nagiosadmin       #认证用户

 

Nagios前端访问测试

 

  1.        [[email protected]]# service httpd restart
技术分享

 

       需要用户名和密码,查看vim/etc/httpd/conf.d/nagios.conf配置文件

 

  1.       [[email protected]]# vim /etc/httpd/conf.d/nagios.conf
  2. Alias /nagios "/usr/local/nagios/share"
  3. <Directory "/usr/local/nagios/share">
  4. #  SSLRequireSSL
  5.    Options None
  6.    AllowOverride None
  7.    Order allow,deny
  8.    Allow from all
  9. #  Order deny,allow
  10. #  Deny from all
  11. #  Allow from 127.0.0.1
  12.    AuthName "Nagios Access"             #这三个字段,就是访问nagios的认证用户名和密码相关配置
  13.    AuthType Basic
  14.    AuthUserFile /usr/local/nagios/etc/htpasswd.users
  15.    Require valid-user
  16. </Directory>
  17. 在Directory字段里面有Auth这三个字段,那么就可以使用htpasswd来生成用户名和密码
  1.        [[email protected]]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
  2.        -c表示创建,二次添加用户,不能使用-c参数
  1. [[email protected] Nagios]# cat /usr/local/nagios/etc/htpasswd.users
  2. nagionsadmin:HQolRVjV67MiQ          #密码

 

  1.       [[email protected]]# service httpd restart      //再次测试(我的用户名是nagiosadmin,密码123456)
  2. ##nagios 默认使用nagiosadmin来管理,如果使用其他用户名,对应的配置文件也要修改

 

技术分享
 
  检查配置文件
在nagios的目录下,bin目录下有一个nagios命令,这个命令可以帮助我们对配置文件的检查工作以及指定相关配置文件
  1. [[email protected] Nagios]#/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
  2. -v=--verify-config 验证配置文件是否有误,着重看到下图亮点就没问题
  3. Total Warnings:0
  4. Total Errors:   0

指定配置文件,以守护进程方式启动
  1. [[email protected] Nagios]#/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
但是现在还没有做任何深入配置,所以现在只是可以登录而已!

 

安装Nagios-plugins插件
为了后面的实验要求,我们先把mysql客户端安装了。
yuminstall mysql mysql-devel
Nagios-plugins含有丰富的检测命令插件,安装完成之后放在了/usr/local/Nagios/libexec下面
  1. [[email protected] Nagios]# tar xvfnagios-plugins-2.1.1.tar.gz -C /usr/local/src/
  2. [[email protected] Nagios]# cd/usr/local/src/nagios-plugins-2.1.1/
  3. [[email protected] nagios-plugins-2.1.1]#./configure --with-nagios-user=nagios --with-nagios-group=nagcmd
  4. [[email protected] nagios-plugins-2.1.1]# make&& make install ; cd /root/Nagios/
  5. [[email protected] Nagios]# ls/usr/local/nagios/libexec/               //已经有了很多check命令
  6. check_apt       check_ftp           check_mailq        check_oracle   check_ssmtp
  7. check_breeze    check_http          check_mrtg         check_overcr   check_swap
  8. check_by_ssh    check_icmp          check_mrtgtraf     check_pgsql    check_tcp
  9. check_clamd     check_ide_smart     check_mysql        check_ping     check_time
  10. check_cluster   check_ifoperstatus  check_mysql_query  check_pop      check_udp
  11. ……
启动Nagios服务,检查环境
  1.        [[email protected]]# service httpd restart ; service nagios restart
浏览器测试:登陆之后,点击hosts,可以看到,默认监控的是本机,说明环境没有什么问题
技术分享

 

Nagios监控本服务器
配置监控之前,我们需要做一系列的准备工作
(指定主配置文件需要加载的配置文件—定义主机—定义服务 –定义监控命令—检查配置文件—启动Nagios)

 

1:  原理  数据收集,数据呈现
2: Nagios主程序,插件包,nrpe
3:解决依赖(gd-devel)
4:LAP
5:创建Nagios 运行用户和组,加入我们的运行组
6:主程序安装,./configure –with-command-group=nagcmd(make all ,后面所有的的步骤)
7:  htpasswd 创建 web认证用户 并测试登陆
8:安装我们的Nagios-plugins插件

 

监控本地NFS状态
  1.        [[email protected]]# cd /usr/local/nagios/etc/objects
  2.        [[email protected]]# cp localhost.cfglocalhost.cfg.bak               //备份配置文件
  3.        [[email protected]]# vim localhost.cfg
  4. define service{
  5.         use                             local-service        
  6.         host_name                       localhost
  7.         service_description             NFS
  8.         check_command                   check_tcp!2049
  9.         }
    ##在使用check命令之前,要确保下/usr/local/nagios/libexec/  目录下有没有你需要的check命令,如果有,直接调用,如果没有,检测端口来代替,检测格式:  check_tcp!端口号
  1.    [[email protected] objects]#vim/etc/exports                         //创建一个共享
  2. /tmp    *(rw)                 
  3.        [[email protected]]# /etc/init.d/nfs restart
  4.        [[email protected]]# showmount -e192.168.1.63        //检测NFS目前是否正常
  5. Export list for 192.168.1.63:
  6. /tmp *
检测localhost是否正常启用

 

  1.       [[email protected]]# vim /usr/local/nagios/etc/nagios.cfg
  2. cfg_file=/usr/local/nagios/etc/objects/localhost.cfg        #localhost默认已经启用了
检测配置文件是否有误

 

  1.       [[email protected]]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
  2. Total Warnings:0
  3. Total Errors:   0
  4.        [[email protected]]# service nagiosrestart                         //重启nagios服务
网页测试
技术分享
       正在检测,稍等一会儿
技术分享
       停止NFS服务
  1.        [[email protected]]# service nfsstop                          //再观察
这里注意,一般没回立马又显示出来状态,需要一段时间,最好最快的方法就是手动强制刷新,否则你需要等待,强制刷新,点击NFS后有一个Re-schedule the next check of this service,强制刷新
技术分享
可以看到状态了,一般状态有四种颜色,如下图:
技术分享
修改Nagios默认的主题:把主题包解压到对应的目录下
  1. [[email protected] ~]# unzip vautour_style.zip-d /usr/local/nagios/share/
  2. Archive: vautour_style.zip
  3. replace /usr/local/nagios/share/images/ack.gif?[y]es, [n]o, [A]ll, [N]one, [r]ename: A
  4. inflating: /usr/local/nagios/share/images/ack.gif
技术分享

 

技术分享

 

技术分享

 

Nagios监控远程MYSQL数据库状态
【监控任何一台服务器,工作流程是定义主机,定义服务,定义命令
Nagios:192.168.1.63          MySQL Server :192.168.0.64
XueGod64上安装msyql
  1. [[email protected] ~]# yum install -ymysql-server mysql
  2. [[email protected] ~]# service mysqld restart
  3. [[email protected] ~]#mysql                            //登陆创建一个测试数据库
  4. mysql> create database nagiosdb;
  5. mysql> grant select on nagiosdb.* to [email protected]‘192.168.1.63‘;
  6. mysql> exit
XueGod63上配置Nagios服务

 

  1. [[email protected] objects]# vim/usr/local/nagios/etc/nagios.cfg
  2. # Definitions for monitoring the local(Linux) host
  3. cfg_file=/usr/local/nagios/etc/objects/localhost.cfg           #在这两行下面添加下面两行
  4. cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
  5. cfg_file=/usr/local/nagios/etc/objects/service.cfg

 

注意:所有的check_command字段中的所使用的命令,必须在command.cfg中定义好才能使用,而command.cfg中的command_line中使用的命令,必须在/usr/local/Nagios/libexec/目录下存在,安装plugins会生成
手动检测command.cfg的命令有效性


注意:服务器要安装了mysql客户端软件,然后再重新编译安装下plugins 才会生成check_mysql
yum install mysqlmysql-devel

 

  1.       [[email protected] ~]# service mysqldstop                            //XueGod64停到服务再检测
  2.       [[email protected] objects]#/usr/local/nagios/libexec/check_mysql -H 192.168.0.64 -u nagiosdb -d nagiosdb
  3.        can‘t connect to MySQL server on ‘192.168.0.64‘ (111)

 前段测试

 

  1.      [[email protected] objects]# servicenagios restart
  2.      [[email protected] ~]# service mysqld start
技术分享

 

技术分享
       去停掉数据库[[email protected] ~]# service mysqldstop
技术分享

 

定义监控httpd 服务:
先手动测试下/usr/local/nagios/libexec/check_tcp-H 192.168.0.64 -p 80
  1. [[email protected] objects]# vim hosts.cfg
  2. define host{
  3.         use             linux-server    #使用的模板名字
  4.         alias           apache-Server    #别名
  5.         address         192.168.0.64    #IP地址
  6.         icon_image      server.gif      #/usr/local/nagios/share/images/logos有各种图片
  7.         statusmap_imageserver.gd2      #状态图
  8.         2d_coords       500,200         #2D图形坐标
  9.         3d_coords       500,200,100     #3D图形坐标
  10. }<span style="line-height: 1.5; ">    </span>
##上面已经定义过0.64的主机,此处无需再定义

 

  1.       [[email protected] objects]# vim service.cfg
  2. define service{
  3.         use                     local-service
  4.         host_name              xuegod64
  5.         service_description     apache
  6.         check_command           check_apache
  7. }
  1. [[email protected] objects]# service nagios restart
Nagios监控外部主机私有信息
私有信息,包括默认的硬盘使用,进程数目,SWAP分区等等
私有信息,就是我需要在本机登陆操作登陆的
非私有,就是可以通过远程的方式
只有监控私有信息的时候,才调用NRPE这个插件来通信

 

nrpe插件
通过NRPE(一个插件)服务可以添加本地信息的监控,将数据发送到我们的Nagios服务器
NRPE两部分组成,一部分是监控机check_nrpe,一部分是被监控机的NRPE守护进程
Nagios 服务器执行check_nrpe 插件并告诉他检查哪个服务,check_nrpe 插件通过SSL 连接方式联系远程服务器上的NRPE守护进程,NRPE守护进程执行相应的插件完成指定的检查,并返回结果。

 

nrpe工作原理
技术分享

 

Nrpe是基于SSL的机制,那么我们需要做的事情就是构建SSL环境,所以需要使用NRPE工作的时候,都需要安装SSL,而且服务端和客户端都需要安装nrpe软件,而我们客户端不需要安装NAGIOS服务端

 

客户端的NRPE安装
       1:安装nagios插件
       2:安装NRPE( make install-daemon-config  make install-xinetd)
       3:配置我们xinted服务,允许谁来拿数据
       4:启动xinetd
       5:查看端口是否正常启动
解决依赖
  1. [[email protected] Nagios]#  
  2. [[email protected] ~]# yum install -y opensslopenssl-devel
实验所需设备都需要安装SSL的支持
服务端安装NRPE
  1. [[email protected] Nagios]# tar xvfnrpe-2.15.tar.gz -C /usr/local/src/
  2. [[email protected] Nagios]# cd/usr/local/src/nrpe-2.15/
  3. [[email protected] nrpe-2.15]# ./configure&& make && make install
  4. [[email protected] nrpe-2.15]# makeinstall-plugin && make install-daemon
  5.                                                         //前者安装插件,后者以守护经常来运行
  6. [[email protected] nrpe-2.15]# cd/root/Nagios/ ; ls /usr/local/nagios/libexec/check_nrpe
  7. /usr/local/nagios/libexec/check_nrpe    #这个命令需要安装nrpe之后才有
客户端配置

 

  1.       [[email protected] objects]# cd /root/Nagios/
  2. [[email protected] Nagios]# scpnagios-plugins-2.1.1.tar.gz nrpe-2.15.tar.gz [email protected]:/root
  3. [[email protected] ~]# useradd -s/sbin/nologin nagios
  4. [[email protected] ~]# groupadd nagcmd
  5. [[email protected] ~]# usermod -G nagcmdnagios
  6. [[email protected] ~]# tar xvfnagios-plugins-2.1.1.tar.gz -C /usr/local/src/
  7. [[email protected] ~]# tar xvf nrpe-2.15.tar.gz-C /usr/local/src/
  8. [[email protected] ~]# cd/usr/local/src/nagios-plugins-2.1.1/
  9. [[email protected] nagios-plugins-2.1.1]#./configure && make && make install
  10. [[email protected] nagios-plugins-2.1.1]# cd../nrpe-2.15/
  11. [[email protected] nrpe-2.15]# ./configure&& make && make install
  12. [[email protected] nrpe-2.15]# makeinstall-daemon-config         //这里是客户端,不用make-install-plugin
  13. [[email protected] nrpe-2.15]# makeinstall-xinetd
  14. [[email protected] nrpe-2.15]# yum install -yxinetd ; cd

 

  1. [[email protected] ~]# vim /etc/xinetd.d/nrpe
  2. # default: on
  3. # description: NRPE (Nagios Remote PluginExecutor)
  4. service nrpe
  5. {
  6.         flags           = REUSE
  7.         socket_type     = stream
  8.         port            =5666
  9.         wait            = no
  10.         user            = nagios
  11.         group           = nagios
  12.         server          =/usr/local/nagios/bin/nrpe
  13.         server_args     = -c /usr/local/nagios/etc/nrpe.cfg --inetd
  14.         log_on_failure  += USERID
  15.         disable         = no
  16.         only_from       =127.0.0.1192.168.1.63        # #添加红色 nagios服务器地址, 允许235这台机器来连接自己的nrpe服务,多个IP地址空格分隔
  17. }
echo "nrpe        5666/tcp        # NRPE" >> /etc/services               //端口注册
  1. nrpe            5666/tcp                # NRPE
  2. #/etc/services文件的作用:
  3. #作用1:xinet.d来启动服务时他就会在/etc/services找相应服务对应的端口来启动服务。找不到对应端口,将不启动服务。
  4. #作用2: 显示对应端口对应的协议名。
  5. #例如 iptables  -L  不加-n参数,   查看时,把 80转   -> www  http
  6. #作用3:查看常用端口
  1. [[email protected] ~]# /etc/init.d/xinetdrestart
  2. [[email protected] ~]# chkconfig xinetd on
  3. [[email protected] ~]# netstat -antup | grep5666
  4. tcp        0      0:::5666                     :::*                LISTEN      68667/xinetd
客户端nrpe命令

 

  1. [[email protected] ~]# vim/usr/local/nagios/etc/nrpe.cfg
  2. command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 38% -c 35% -p /dev/sda1
  3. command[check_sda2]=/usr/local/nagios/libexec/check_disk -w 42% -c 43% -p /dev/sda2
  4. command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
  5. #-w为警告 -C为告急  sda2中,我们是指占用42%
  6. [[email protected] ~]# service xinetdrestart

 

服务端手动测试

 

  1. [[email protected] Nagios]#/usr/local/nagios/libexec/check_nrpe -H 192.168.0.64
  2. NRPE v2.15
  3. [[email protected] ~]#/usr/local/nagios/libexec/check_nrpe -H 192.168.0.64 -c check_sda1
  4. DISK OK - free space: /boot 2700 MB (98%inode=99%);| /boot=38MB;1790;1877;0;2888#如果出现以一下错误,说明没有允许192.168.1.63 访问我们的64服务器
  5. #CHECK_NRPE: Error - Could not completeSSL handshake.
  6. #我们需要检查/etc/init.d/nrpe 下面的onlyfrom中的有无添加

 

定义被监控主机
  1.        [[email protected] Nagios]# cd/usr/local/nagios/etc/objects/
  2. [[email protected] objects]# vim hosts.cfg
  3. define host{
  4.         use             linux-server
  5.         host_name      xuegod64
  6.         alias           MySQL-Server
  7.         address         192.168.0.64
  8. }
#我们现在还是监控的XueGod64,所以信息不用更改

 

定义需要监控的服务
  1.        [[email protected] objects]# vim service.cfg
  2. define service{
  3.         use                             local-service
  4.         host_name                      xuegod64
  5.         service_description              Root Partition
  6.         check_command                   check_nrpe!check_sda2           #/root分区
  7.         }
  8. define service{
  9.         use                             local-service
  10.         host_name                      xuegod64
  11.         service_description             TotalProcesses                 #进程总数
  12.         check_command                   check_nrpe!check_total_procs
  13.         }
  14. define service{
  15.         use                             local-service
  16.         host_name                     xuegod64
  17.         service_description             CurrentLoad                    #负载
  18.         check_command                   check_nrpe!check_load
  19. }
定义NRPE监控命令
[[email protected] objects]# vim commands.cfg
define command{
        command_name    check_nrpe
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }
$ARG1$ 表示调用后面的参数。
  1. [[email protected] objects]# service nagiosrestart
前端监控
技术分享
测试:硬盘数据写入测试,看看root partition会不会告急
  1. [[email protected] ~]# dd if=/dev/zero of=1.txt count=100 bs=30M
技术分享
  1. [[email protected] ~]# rm -rf *                                //清除这些临时测试文件
1: 服务端监控(无需NRPE)
       定义主机,定义服务,定义命令,测试命令,启动
2:有NRPE的监控
       定义主机,定义服务(check_nrpe!check_ping),定义命令(定义的是check_nrpe)
还有一个定义命令(客户端做  command[check_adfadf]) -w –c
安装好之后,是依赖于xinetd服务启动的

配置邮件报警
  1. [email protected] Nagios]# yum install -y sendmail
  2. [[email protected] Nagios]# /etc/init.d/sendmail start
  3. [[email protected] Nagios]# chkconfig sendmail on
  4. #如果主机配置了多个邮件服务,设置sendmail为默认的发件服务:
  5. alternatives --config mta
  6. [email protected] Nagios]# cd /usr/local/nagios/etc/objects/
  7. [[email protected] objects]# vim contacts.cfg
  8. define contact{
  9.         contact_name                    nagiosadmin
  10.         use                             generic-contact
  11.         alias                           Nagios Admin
  12.         email                           [email protected]      #修改为自己的邮箱
  13.         }
  1. [[email protected] objects]# service nagios restart
  2. [[email protected] ~]# service mysqld restart                  //XueGod64上的数据库启动
技术分享


  1.     [[email protected] ~]# /etc/init.d/mysqld stop                 //然后再停掉,测试能否触发邮件

点击 技术分享 强制检测,避免时间等待
技术分享 
查看邮件
技术分享 
若要使用短信报警,可以配139邮件或者其他有短信提醒功能的邮件

Windows主机监控


大概步骤:
1.   下载安装windows代理插件 2.   修改配置文件:
技术分享 
编辑NSC.INI文件
1、去掉在[modules]段里的列出模块程序的注释,除了CheckWMI.dll和RemoteConfiguration.dll;
2、最好是修改一下在[Settings]段里的‘password‘选项;
3、去掉在[Settings]段里的‘allowed_hosts‘选项注释,把Nagios服务所在主机的IP加到这一行里,或是置为空,让全部主机都可以联入;多个地址用逗号隔开
4、确认一下在[NSClient]段里的‘port‘选项里已经去掉注释并设置成‘12489‘(默认端口);
3.   启动服务:
双击nsclient++.exe  启动代理服务,并设置服务和桌面交互:
技术分享 
4、查看端口:
技术分享 

Nagios 主控端配置:

1.   修改主配置文件,启用监控windows配置文件:
技术分享 
2.    编辑这个配置文件,修改监控主机信息:
技术分享 
3.定义监控服务信息:
  1. vim/usr/local/nagios/etc/objects/service.cfg

加入下面的服务定义以监控Windows机器的启动后运行时间。
define service{   use generic-service  host_name winserver  service_description Uptime  check_command check_nt!UPTIME   }  
加入下面的服务定义可监控Windows机器的CPU利用率,并在5分钟CPU负荷高于90%时给出一个紧急警报或是高于80%时给出一个告警警报。
define service{   use generic-service  host_name winserver  service_description CPU Load  check_command check_nt!CPULOAD!-l 5,80,90  }  
加入下面的服务定义可监控Windows机器的内存占用率,并在5分钟内存占用率高于90%时给出一个紧急警报或是高于80%时给出一个告警警报。
define service{  use generic-service  host_name winserver   service_description Memory Usage  check_command check_nt!MEMUSE!-w 80 -c 90   }  
加下面的服务定义可监控Windows机器的C:盘的磁盘利用率,并在磁盘利用率高于90%时给出一个紧急警报或是高于80%时给出一个告警警报。
define service{  use generic-service  host_name winserver  service_description C:\ Drive Space  check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90  }  
加入下面的服务定义可监控Windows机器上的W3SVC服务状态,并在W3SVC服务停止时给出一个紧急警报。
define service{  use generic-service   host_name winserver  service_description W3SVC  check_command check_nt!SERVICESTATE!-d SHOWALL -l W3SVC  }  
加入下面的服务定义可监控Windows机器上的Explorer.exe进程,并在进程没有运行时给出一个紧急警报。
define service{
use generic-service  host_name winserver  service_description Explorer  check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe   }

4.   定义监控命令:
  1. vi /usr/local/nagios/etc/commands.cfg
  ##这个命令已经存在,只需要添加 -s 123456  就可以指定密码。
define command{  
command_name check_nt  
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s 123456 -v $ARG1$ $ARG2$
}
注意:这里的-s 123456 密码一定要和windows配置文件的密码保持一致,否则会出现下图这样的状态

重启动Nagios
如果修改好Nagios配置文件,需要验证你的配置文件并重启动Nagios。
如果验证配置文件过程中有什么错误信息,在做下一步前一定要修正好配置文件。一定要保证验证过程中不再有出错信息后再启动或重启动Nagios!

详细配置参考:
http://blog.chinaunix.net/uid-24426415-id-77310.html

安装PNP4Nagios
pnp4nagios是一款强大的工具,它可以通过process_perfdata.pl脚本调用rrdtool对nagios的性能数据进行分析并绘制成相应的性能图。Pnp4nagios使用的是RRDtool工具来实现画图的
依赖解决
  1. [[email protected]]# yum install -y rrdtool php-gd perl-Time-HiRes
  2. [[email protected]]# tar xvf pnp4nagios-0.6.25.tar.gz
  3. [[email protected]]# cd pnp4nagios-0.6.25
  4. [[email protected]]# ./configure --prefix=/usr/local/pnp4nagios--with-nagios-user=nagios --with-nagios-group=nagcmd
  5. [[email protected]]# make all && make install && makeinstall-webconf && make install-config && make install-init
  6. [[email protected]]# make fullinstall
配置pnp4naigos和nagios整合
[[email protected]]# vim /usr/local/nagios/etc/nagios.cfg
#修改以下几个内容
...
process_performance_data=1                      #修改
...
host_perfdata_command=process-host-perfdata         #取消注释
service_perfdata_command=process-service-perfdata
...
[[email protected]]# vim /usr/local/nagios/etc/objects/commands.cfg
#‘process-host-perfdata‘ command definition
definecommand{
        command_name    process-host-perfdata
        command_line    /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
}

#‘process-service-perfdata‘ command definition
definecommand{
        command_name    process-service-perfdata      
        command_line     /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl
}


[[email protected]]# vim /usr/local/nagios/etc/objects/templates.cfg
definehost {
        name       host-pnp
        action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$‘ class=‘tips‘ rel=‘/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_
        register   0
#process_perf_data       1
}

defineservice {
        name       srv-pnp
        action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$class=‘tips‘rel=‘/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$
        register   0
#process_perf_data       1
}
  1. [[email protected]]# cp ~/Nagios/pnp4nagios-0.6.25/contrib/ssi/status-header.ssi/usr/local/nagios/share/ssi/
  2. [[email protected]]# vim /usr/local/nagios/etc/objects/localhost.cfg
  3. use               local-service,srv-pnp         ; Name of service #每一行加上,那么每一个服务就会有一个图标
  4. [[email protected]]# mv /usr/local/pnp4nagios/share/install.php/usr/local/pnp4nagios/share/install.php.bak
  5. [[email protected]]# chown -R nagios:nagios /var/www/html/ /usr/local/nagios//usr/local/pnp4nagios/
  6. [[email protected]]# service nagios restart;service httpd restart; service npcd start
  7. Pnp4nagios提供了各种配置文件的模板,我们需要把它正名才能使用
  8. [[email protected]]# cd /usr/local/pnp4nagios/etc/
  9. [[email protected] etc]#mv misccommands.cfg-sample misccommands.cfg
  10. [[email protected] etc]#mv nagios.cfg-sample nagios.cfg
  11. [[email protected] etc]#mv rra.cfg-sample rra.cfg
  12. [[email protected] etc]#cd pages/
  13. [[email protected] pages]#mv web_traffic.cfg-sample web_traffic.cfg
  14. [[email protected] pages]#cd ../check_commands/
  15. [[email protected]_commands]# mv check_all_local_disks.cfg-sample check_all_local_disks.cfg
  16. [[email protected]_commands]# mv check_nrpe.cfg-sample check_nrpe.cfg
  17. [[email protected]_commands]# mv check_nwstat.cfg-sample check_nwstat.cfg
启动服务
  1. [[email protected]_commands]# /etc/init.d/npcd restart

测试
浏览器访问测试:192.168.1.63/Nagios
技术分享 


技术分享
技术分享 

拓展
以下步骤可以不做,但是做了更科学
  1. [[email protected]]# cd /usr/local/pnp4nagios/etc/
  2. [[email protected] etc]#mv misccommands.cfg-sample misccommands.cfg
  3. [[email protected] etc]#mv nagios.cfg-sample nagios.cfg
  4. [[email protected] etc]#mv rra.cfg-sample rra.cfg
  5. [[email protected] etc]#cd pages/
  6. [[email protected] pages]#mv web_traffic.cfg-sample web_traffic.cfg
  7. [[email protected] pages]#cd ../check_commands/
  8. [[email protected]_commands]# mv check_all_local_disks.cfg-sample check_all_local_disks.cfg
  9. [[email protected]_commands]# mv check_nrpe.cfg-sample check_nrpe.cfg
  10. [[email protected]_commands]# mv check_n



























































以上是关于2-23-Nagios监控的主要内容,如果未能解决你的问题,请参考以下文章

监控三剑客之Nagios监控服务器

监控三剑客之Nagios监控服务器

Nagios监控配置

Nagios监控

nagios监控实用教程

监控利器Nagios之二:Nagios的细致介绍和监控外部服务器的私有信息