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

 

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

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

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

网络服务(smtp\pop3\http\

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

 

一、需要了解的知识点

1、nagios工作原理

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

 

2、nagios的四种监控状态

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

 

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

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

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

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

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

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



二、案例

环境拓扑

Nagios监控系统_第1张图片


1.搭建nagios监控系统

1)创建nagios用户和用户组

wKioL1imr7DwINZfAAANlhMSGtE740.png

wKioL1imr7Hx6fUzAAALifcczvE552.png


2)编译安装nagios

nagios基于LAMP平台,需要安装的支持软件包括httpdPhpmysql-developensslopenssl-devel

wKiom1imr7HTyXn9AAARwJMHB0c963.png

配置


wKiom1imr7Kga4_oAAAQAyeweuw278.png

编译和安装

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文件。


3)添加nagios为系统服务

wKioL1imr7Ljxq1ZAAAM7ig1WyQ635.png


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

wKioL1imr7KxcOHzAAASPVXHTok721.png


wKiom1imr7OhKdPQAAAKQTuxvwA635.png


5)安装nrpe(用于监控时连接远程服务器)

wKiom1imr7PTqDn_AAATG2LOiAw393.png


6)修改httpd的主配置文件

wKioL1imr7Tgg11RAAAHDh8zFSc981.png

将生成的web配置文件直接导入到httpd的主配置文件中,内容如下:

Nagios监控系统_第2张图片


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

wKioL1imsNDwnks9AAAfBCIpqqw732.png


8)启动nagioshttpd

wKioL1imsNHDhE8CAAAOJ-0o4GM837.png

wKioL1imsNHCkM0nAAAIGZITL3Q028.png


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

Nagios监控系统_第3张图片

Nagios监控系统_第4张图片

目前只能监控本地


2、配置nagios监控系统涉及知识点

1nagios目录介绍

wKioL1imsNKykzR9AAAP2N95nR8922.png

安装完成之后会在/usr/local/nagios目录下产生6个目录:

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

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

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

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

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

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

 

2nagios配置文件介绍

wKiom1imsNOQSdAtAAAPh1dSg94322.png

wKiom1imsNOTwebbAAAQgkzu0Rw179.png

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

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

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

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

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

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

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

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

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

 

3)配置文件之间的关系

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

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

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

定义监控的时间段

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

 

4)配置nagios

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

创建conf目录来定义host主机

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

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

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

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

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

 

3.配置nagios,实现远程监控

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

wKioL1imsiGhfR7rAAAKwRsQkkw055.png

Nagios监控系统_第5张图片


wKioL1imsNOiREXvAAALCiPNMr0237.png


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

wKioL1imsNOy_m06AAAMNnsDbiw435.png


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

wKiom1imsnfzbcO2AAAQZ2Gb_W4823.png


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

wKioL1imsnejbcxpAAALrn9p-TA138.png

Nagios监控系统_第6张图片

Nagios监控系统_第7张图片


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

wKioL1imsnixgDN9AAAMULcHzC4512.png

wKiom1imsnnBvHTHAAALNf8uv0w171.png


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

wKiom1imsnjTCILdAAATDTBpmZM276.png

Nagios监控系统_第8张图片

Nagios监控系统_第9张图片

命令解释:

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服务

wKioL1ims4ThhPuJAAANqAUaDrE551.png


4.配置被控端192.168.132.233mysqlweb

1)这里使用了一个脚本来安装

脚本内容如下:

Nagios监控系统_第10张图片

在客户端同样需要安装nagios插件和nrpe

注意:nrpe服务监听端口为5666,服务器和客户端都要开启防火墙例外。

 

2)修改/usr/local/nagios/etc/nrpe.cfg,添加nagios服务器地址。

wKiom1ims4TAOQISAAAIJa_WtkA781.png

3)启动nrpe

wKioL1ims4WC-utmAAALv9JtDzk786.png

4)在浏览器上访问

Nagios监控系统_第11张图片

发现客户端192.168.132.233有两两个严重错误


Nagios监控系统_第12张图片

登陆联系人的邮箱,发现就收到了报警邮件。

内容如下:

Nagios监控系统_第13张图片

出现这个问题是因为脚本中没有添加nagios服务器的地址,就启动了nrpe程序。


Nagios监控系统_第14张图片

重新启动nrpe程序


wKiom1ims4mAu9uTAAARdEDC_AI460.png

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


Nagios监控系统_第15张图片

联系人邮箱最后又收到一条信息,该信息说明客户端192.168.132.233恢复正常。