部署 Nagios 监控系统

简介: 前言:Nagios是一款开源的免费网络监视工具,可以监控Windows、Linux和Unix的主机状态,交换机路由器等网络设备,在系统或服务状态异常时发出邮件或短信报警,第一时间通知网站运维人员。

前言:Nagios是一款开源的免费网络监视工具,可以监控WindowsLinuxUnix的主机状态,交换机路由器等网络设备,在系统或服务状态异常时发出邮件或短信报警,第一时间通知网站运维人员。流量监控不是他的强项,流量监控建议使用cacti(可以绘制非常直观的图形。

 

总结一下nagios主要可以监控以下方面:

主机是否宕机(通过ping命令,如果ping不通会认为主机属于宕机状态,但不影响所监控的其他服务)

服务器资源(cpu使用率、硬盘剩余空间等)

网络服务(smtp\pop3\http\

监控网络设备(路由器、交换机等)

 

  1. 需要了解的知识点

  2. nagios工作原理

    Nagios本身不包括监控主机和服务的功能。所有的监控、监测功能都是通过各种插件来完成的。安装完nagios之后,在nagios主目录下的/libexex里面放有nagios自带的插件,如:check_disk是检查磁盘空间的插件,check_load是检查cpu负载的插件,每一个插件可以通过运行./check_xxx -h命令来检查其使用方法和功能。

     

    nagios的四种监控状态

    Nagios可以识别四种状态返回信息。0OK)表示状态正常(绿色显示),1WARNING)表示出现警告(黄色),2CRITICAL)表示出现非常严重错误(红色),3UNKNOWN)表示未知错误(深黄色),nagios根据插件返回来的值来判断监控对象的状态,并通过web显示出来,以供管理员即时发现故障。

     

    nagios通过nrpe插件来远程管理服务的工作过程

    Nagios执行安装在它里面的check_nrpe插件,并告诉check_nrpe去检测哪些服务。

    通过sslcheck_nrpe连接远端机器上的NRPE daemon

    NRPE运行本地的各种插件去检测本地服务器和状态(check_disk,...etc)。

    NRPE把检测的结果传给主机端的check_nrpecheck_nrpe再把结果送到nagios状态队列中。

    Nagios依次读取队列中的信息,再把结果显示出来。

     

     

    实验环境

    实验拓扑

    wKioL1nO-cOzajvbAABVllgVLmc189.png-wh_50 

    虚拟机上的实验环境

     wKioL1nO-e3zEFp9AAAiTOPtpgo464.png-wh_50

     

    实验步骤

    搭建nagios监控系统

    关闭防火墙 


     wKiom1nO-krCwRWgAAAm36GvaPQ533.png-wh_50

     

    创建nagios用户和用户组

     wKioL1nO-pewb1iFAABaszPXOLk938.png-wh_50

    编译安装nagios(需要提前配置yum

    安装支持包:

     wKioL1nO-rmTHe0mAAA-_s4GN8I560.png-wh_50

     

    配置:

     wKioL1nO-tLjz-QeAABOPzqUx3o050.png-wh_50

     

    编译和安装:

     wKioL1nO-v7yv5uOAAAyV7o8_Vw935.png-wh_50

    注意:安装install-webconf是为了生成配置文件,后面在/etc/httpd/conf/httpd.conf最后添加的信息就不用手工打了,可以到/etc/httpd/conf.d/nagios.conf文件中复制。

     

     

    以上命令的解释:

    make install      //安装主程序,CGIHTML文件

    make install-init  ///etc/rc.d/init.d安装启动脚本

    make install-commandmode  //配置目录权限

    make install-config  //安装示例配置文件

    make install-webconf  //安装nagiosweb接口,会在/etc/httpd/conf.d目录中创建nagios.conf文件。

     

    安装完成之后会在/usr/local/nagios目录下产生6个目录,下面分别解释一下。

     

    binnagios执行程序所在的目录,nagios文件即为主程序。

    etcnagios配置文件目录,当make install-config完以后etc下面就会出现默认的配置文件。

    sbinnagios CGI文件所在目录,这里存放的是一些外部命令执行程序。

    sharenagios网页文件目录,存放一些html文件。

    varnagios日志文件、pid等文件目录。

    Libexec:系统默认插件的存储位置

     

  3. 添加为系统服务器 

     wKiom1nO-3PTnHceAABUFWdsjzs395.png-wh_50

     

    chkconfig --add nagios

    chkconfig --level 35 nagios on

    安装nagios插件(监控功能通过插件完成)

     

     wKioL1nO-7HgEFN6AABKvQTe6tc509.png

    编译并安装:

     wKioL1nO-87wLzJuAAAUrBlcxgw889.png

     

    6)安装nrpe(为了监控远程服务器)

     wKiom1nO_CmCWtIMAABXVLxxYAs071.png

     

    7)在/etc/httpd/conf/httpd.conf文件最后添加授权,我们可以到/etc/httpd/conf.d/nagios.conf文件中复制,不用手打。

     wKioL1nO_AHxAXkUAAASYvr3pMU351.png

     

    使用:r导入即可

     

     wKioL1nO_C7TOdP2AAAS_8TYGGM513.png

    wKioL1nO_FPg3SOFAABpOrFiyyc360.png 

     

    导入即可,不用修改,保存退出。

     

    8)执行htpasswd命令添加一个访问nagios页面的授权用户

     wKioL1nO_IeCnVzbAAAvX2mItBQ865.png

     

    用户名和密码都是nagiosadmin

     

    9)启动nagioshttpd

     wKiom1nO_O7RG6XHAADDu_v3sxU490.png

     

    10)在浏览器上访问nagios页面

     

     wKiom1nO_QeAlIqjAADq0HJodsA883.png-wh_50

     

     

     wKioL1nO_PSRmsR7AACusRurFl4486.png

     

    目前只能是打开网页,很多的监控选项不能看到,如果需要监控远程的服务器,还需要做很多配置,下面开始配置。

     

     

  4. 配置nagios监控系统涉及知识点

    1nagios的配置文件:

       Nagios.cfg:主配置文件,定义各种配置文件的名称和位置

       Cgi.cfg:控制CGI的配置文件

       Resource.cfg:资源文件,定义各种变量,以便于其他文件调用

       Objects:其他配置文件存放目录,此目录下主要有:

                 Command.cfg:命令配置文件,定义各种命令格式,以备其他文件调用

                 contacts.cfg:联系人和组,发邮件等告警信息时可以调用

                 localhost.cfg:监控本机的配置文件

                 timeperiods.cfg:定义监控时间的配置文件,便于其他文件调用

                 Hostgroups.cfg:定义监控的主机(组),需手动创建。

  5. 配置文件之间的关系

    nagios的配置过程中涉及的几个定义有主机、主机组、服务、服务组、联系人、联系人组、监控时间和监控命令等。从这些定义可以看出,nagios各个配置文件之间互为关联、彼此引用的。成功配置出一台nagios监控系统,必须要弄清楚每个配置文件之间依赖与被依赖的关系,最重要的有四点

  • 定义监控那些主机,主机组,服务和服务组

  • 定义这个监控要用什么命令实现

  • 定义监控的时间段

  • 定义主机或服务器出现问题时要通知的联系人和联系人祖

     

  1. 配置nagios

    为了能更清楚的说明问题,同时也为了维护方便,建议将nagios各个定义的对象创建独立的配置文件。

  • 创建conf目录来定义host主机

  • 创建hostgroups.cfg文件来定义主机组

  • 用默认的contacts.cfg文件来定义联系人和联系人组

  • 用默认的commands.cfg文件来定义命令

  • 用默认的timeperiods.cfg来定义监控时间段

  • 用默认的templetes.cfg文件作为资源引用文件

     

     

  1. 配置nagios

    wKiom1nO_XbQRypTAADBGPnQlds881.png

    wKioL1nO_XDRSTcTAAAYhXoHhwA198.png

  2. 修改/usr/local/nagios/etc/nagios.cgf主配置文件

     

     wKiom1nO_c2yPX-LAAAurE9JnHM703.png

     

     

    2修改/usr/local/nagios/etc/objects/commands.cfg

     

     

    添加如下内容(定义check_nrpe监控命令)

     

  3. 修改/usr/local/nagios/etc/objects/contacts.cfg(定义监控服务器联系人)

     

     wKioL1nO_bewQFyNAADVX9DNHeE688.png

     

     

  4. 新建/usr/local/nagios/etc/objects/hostgroups.cfg(定义主机组)

     wKiom1nO_iTTD-yJAAAarmWEHJs844.png

     

  5. /usr/local/nagios/etc/conf下面新建192.168.1.20.cfg文件(用于监控192.168.1.20的主机存活,负载,进程)(所有内容需要手工输入)

     

     

     wKioL1nO_fezXBwQAAAehrZMZR0278.png

     wKioL1nO_k-xu5DQAABhmXl9xv0366.png

     

    未完接下图:

     

     

     wKioL1nO_nuA15SuAABfH1mRAdg973.png

     

     

     

     

    命令解释:

    define host{  

           use         linux-server  //定义使用的模板

           host_name   nagios  //被监控主机的名称,最好别带空格  

           alias         nagios  //别名        

           address      127.0.0.1  //被监控主机的IP地址        

           check_command    check-host-alive  

    normal_check_interval   3    //正常检测间隔时间

            retry_check_interval    2     //重试检测间隔时间

           //监控的命令check-host-alive,这个命令来自commands.cfg,用来监控主机是否存活  

           max_check_attempts    5 //检查失败后重试的次数  

           check_period        24x7   //检查的时间段24x7,同样来自timeperiods.cfg中定义

    notification_interval  10  //提醒的间隔,每隔10秒提醒一次

    notification_period   24x7  //提醒的周期, 24x7,同样来自timeperiods.cfg中定义

    contact_groups   admins  //联系人组,上面在contactgroups.cfg中定义的admins

    notification_options            d,u,r  //指定什么情况下提醒

            }  

     

     

  6. 重启nagios服务

     

     wKiom1nO_zuiCFqQAACnH6xFLRU547.png

    7发现错误,提示没有添加联系人组,解决方法:在

    /usr/local/nagios/etc/objects/contacts.cfg文件的最后添加代码,如下图:

     

     wKiom1nO_1rC_ldNAABks0pl0Jc092.png

     

  7. 重启nagios服务器成功

     wKioL1nO_y2il7hWAAAYhXoHhwA532.png

     

  8. 访问网页查看状态

    (注意:关闭selinux或者开例外)

     

     wKioL1nO_0iyHjLtAAC9kVm_rLY657.png-wh_50

    或者:

    如果你开启了selinux 需要配置如下二步:
    chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
    chcon -R -t httpd_sys_content_t /usr/local/nagios/share/

     

     wKiom1nO_7uSNL-zAAFqf8Bbeuc604.png-wh_50

     

    点击上图中的localhost,可以查看本机的状态

     wKioL1nO_5yhmGazAAGeBJxR3OA712.png-wh_50

     

     

  9. 配置被控端192.168.1.20mysqlweb

  10. 安装nagios插件

    本章的实验步骤比较多,安装软件太麻烦了,接下来我就使用脚本直接安装了,脚本内容如下:

     

     wKioL1nO_8iD7mdZAAAVGvp2Rys529.png-wh_50

     

    wKioL1nO__3QpWynAADTxsAh0Yg609.png-wh_50 

    执行脚本:

     

     wKiom1nPAFiRdgyzAAARCQT6a-4216.png-wh_50

     

    2)安装完成之后,需要打开vim /usr/local/nagios/etc/nrpe.cfg

    添加nagios服务器的地址

     

     wKiom1nPAHOBkl88AAAcuv40xCo892.png

    3启动nrpe

     

     wKioL1nPAF-he187AAAzqvCAjL0373.png

  11. nagios服务器上测试nrpe运行是否正常,出现下面的信息说明正确。

     

     wKiom1nPALrBmbuFAAAu3946FGY490.png

  12. 在浏览器上访问

     wKioL1nPAdPxgVMfAAFC5YbMm3k165.png-wh_50

    wKioL1nPAe7BOoEDAAGcF5XYm4c152.png-wh_50



 

  1. 补充

    也可在services.cfg文件中添加192.168.1.20.cgf文件中的参数

    #vi  /usr/local/nagios/etc/objects/services.cfg

    内容如下:

    wKiom1nPAoixCEgFAAByZnDbZ4o320.png

    wKioL1nPAlPBNGYZAABNCS4-WCE968.png 

     

    check_local_users!20!50  //监测远程主机当前的登录用户数量,如果大于20用户则报warning,如果大于50则报critical

    check_local_disk!20%!10%!/   //如果可用空间低于20%会报Warning,如果可用空间低于10%则报Critical

    check_local_procs!250!400!RSZDT   //监测远程主机当前的进程总数,如果大于250进程则报warning,如果大于400进程则报criticalS(休眠)、R(运行)Z(僵死)(不可中断)、(停止)

    check_load -w 5,4,3 -c 10,6,4这个命令的意义如下

    1分钟多于5个进程等待,5分钟多于4,15分钟多于3个则为warning状态

    1分钟多于10个进程等待,5分钟多于6,15分钟多于4个则为critical状态

    服务组并不是必须的,这是配合nagios的监控页面的显示

     

     

总结!勤动脑多喝六个核桃


相关文章
|
2月前
|
运维 监控 Unix
Nagios 监控平台搭建
Nagios是一款开源免费的网络监控工具
24 5
|
监控
部署 Nagios 监控系统
前言:Nagios是一款开源的免费网络监视工具,可以监控Windows、Linux和Unix的主机状态,交换机路由器等网络设备,在系统或服务状态异常时发出邮件或短信报警,第一时间通知网站运维人员。
1457 0
|
监控 Ubuntu 网络安全
使用monit搭建一个监控系统
上周用monit搭建或者说定制了一个监控系统,来监控服务器发生事情。当然了主要是监控异常,因为我们的产品属于服务器类型,很多进程都daemon,要不停的运行。我们搭建监控目的不过是出现问题能够及时的知道,平时可从web UI上看到整个系统的状况,同时它本身要轻量级,不要影响性能。
1493 0
|
监控 Apache 数据安全/隐私保护
|
监控 数据安全/隐私保护 Windows