写在前头:限于个人对nagios的了解有限,写得不够深入与系统,甚至可能会有些错误,各位看官还多包涵。本文主要涉及的是nagios daemon、nrpe及三个部分。
01
nagios系统的功能
02
nagios系统的组成
nagios系统主要包含nagios daemon、nagios plugin、nrpe、web三个组件,它还包含NDOUtils、NSCA、NSClinet++组件,它们共同组成一个完整的nagios,组成逻辑图如下所示:
NRPE 总共由两部分组成: check_nrpe:位于nagios server上。 NRPE daemon:位于被监控的Linux主机上。 当Nagios 需要监控某个远程Linux 主机时: nagios 会运行check_nrpe 这个插件,告诉它要检查什么 check_nrpe 插件会连接到远程的NRPE daemon,所用的方式是SSL; NRPE daemon 会运行相应的nagios 插件来执行检查; NRPE daemon 将检查的结果返回给check_nrpe 插件,插件将其递交给nagios做处理。
03
本文所用到系统环境
OS:CentOS release 6.8 (Final) 2.6.32-642.el6.x86_64 还有一个重要环境:互联网(yum、百度、Google)。 各软件包:
04
nagios系统软件部署
前提:使系统具备编译软件源码包的能力,并提前解决一些包、共享库文件之间的依赖关系,建议安装如下两个Group组件:
configure完成以后若出现make all
以完成编译的提示则继续执行:
如果上述任一指令执行后有error发生或者某文件,某组件没有找到,务必先解决相应的错误,一般可能是某些包没有安装导致,根据提示信息中的关键字找出可能的包,然后yum安装上即可。
nagiosadmin
的账户,只需要给它指定密码,其密码会加密存储,密码文件默认为`/usr/local/nagios/etc/htpasswd.users,无需改动。plugin
以后会在/usr/local/nagios/libexec
目录下存放大量插件,就是用这些插件来实现最终的监控目的的。
按着安装nrpe
:
nagios服务器安装nrpe包主要目的是为了安装check_nrpe插件,便于与被监控Linux端的NRPE daemon程序通信,如果这台nagios服务器也需要被其它nagios服务器监控,那它还必须安装nrpe daemon和nrpe daemon-config。http://nagios-server-ip/nagios
,它会弹出提示框,输入前面提到的nagiosadmin
及其密码即可登录。登录后的初始界面如下:在网络中需要被监控的Linux主机中安装nagios plugin
和nrpe
两个组件,并安装xinetd组件,用于启动nrpe
程序。
nagios
用户:/usr/local/nagios
的属主为nagios
,并可查看到其下有三个目录:nrpe
:
客户端因为需要通过nrpe
程序来执行从服务器侧接收到的command,因此必须安装nrpe
。nrpe
的README
文件的说明,可以将nrpe daemon
作为xinetd下的一个服务来进行管理,所以需要事先将xinetd
安装到系统中:nrpe
在xinetd
下的配置文件:nrpe
的配置文件,以允许nagios server
连接它:
vim /etc/xinetd.d/nrpe
将only from
改成如下内容:
nrpe
服务端口号添加进去:vim /etc/services
在最后一行加上nrpe 5666/tcp #Nagios-Client
然后保存退出。启动xinetd
服务并设置开机自启:
检查nrpe是否启动即端口5666是否处于监听状态: ss -tnl
另一个检测nrpe是否工作正常的办法是在nagios服务器上使用check_nrpe
插件来测试与这台客户端的nrpe通信是否正常:
05
配置nagios监控主机及服务
nagios要对哪些主机监控哪些内容都是通过名为.cfg的配置文件进行定义的。
它们通常是位于/usr/local/nagios/etc
目录中的*.cfg
以及位于/usr/local/nagios/etc/objects
目录下的*.cfg
。
默认的文件如下:
再看看/objects/
目录下的内容:
nagios.cfg
是nagios
服务端的主配置文件,它可以定义其它*.cfg
配置文件的位置,是否启用性能监控(收集监控数据以生成图表),性能数据处理指令,性能数据文件格式模板及存放位置等,配置nagios
日志文件存放的信息级别及位置,nagios
进程的启动用户及组,日志文件的切割方式,显示的日期格式等等。如果只是实现对主机及服务的监控,不出监控图的话,默认可以不改动这一文件。templates.cfg
是监控的模板文件,对所有主机、服务、联系人的定义为简化配置都可以根据需求定制相应的模板,然后在主机、服务、联系人配置文件中去引用模板即可。下面进行简要说明:以上便是templates.cfg
文件中的主要内容,可以按需修改已定义的模板或者新定义模板。其中涉及到部分对command的定义,它是需要在commands.cfg
文件中进行定义的。
commands.cfg
文件可以包含监控时需要用到的指令的定义,由这些指令来完成具体的监控工作,它们可以在services.cfg文件中被调用。配置示例如下:这里有一个名为check_nrpe
的command特别重要:需要指定它才能够启动本地的check_nrpe
去连接被监控端上的nrpe daemon,并在被监控端执行相应的命令,需要自己添加,默认commands.cfg
文件里是没有的:
contracts.cfg
这一文件定义了当需要发送告警通知时,需要发给哪些联系人组,然后不同的组里可以分别定义相应的成员,默认情况下会将通知发给名为admins
的组,里面包含的email地址即为接收告警通知邮件的地址。示例如下:timeperiods.cfg
主要用来对要进行监控的时间段以及可以发送通知的时间段进行定义,很灵活很方便。localhost.cfg
这个文件是用来定义对这台nagios服务器的哪些资源及服务进行监控的,它主要包含两部分的定义,针对host级别的和针对service级别的。示例如下:
hosts.cfg
文件可以将网络中所有需要监控的主机定义进来,并将它们根据需求分组,一台主机可以同时属于不同的组,默认情况下不允许组里面一台主机都没有,然后根据需要调用不同的主机模板(事先在templates.cfg中定义)。另一点很重要的是这个文件需要自己创建,不建议直接在localhost.cfg里添加。示例如下:services.cfg
这个文件默认也是不存在的,需要手工创建,可以以localhost.cfg里定义的service部分作为模板进行修改。在它里面可以针对不同的服务调用不同的模板,以及把这些服务应用到哪些主机或主机组上。示例如下:由于新增加了两个配置 文件(hosts.cfg和services.cfg),所以需要在nagios主配置文件(nagios.cfg)中指明它们的位置,只需要在nagios.cfg中加上两行,搜索下cfg_file
加到它们的下面即可:
nagios自带的就有配置文件语法及逻辑检测工具,检测方式:
检测如果没有问题,则可以重载nagios服务,使用最新配置文件来工作了。
重载服务service nagios reload
要实现对Linux主机的监控还差非常关键的一步,去到各被监控linux主机上配置实际要执行的指令,它们是在/etc/usr/local/nagios/etc/nrpe.cfg
文件中定义的。 示例文件如下:
注意:[]中的内容,这些字符要和nagios服务端上 services.cfg里定义command时check_nrpe!后面的字符完全一样,等号中的内容则前面介绍的方法查看每个plugin的具体用法。
客户端在修改完nrpe.cfg文件以后,需要重启nrpe进程:
06
登录nagios web页面查看监控数据
在nagios客户端还没有配置好nrpe.cfg文件时,nagios server是无法监控到客户端的,此时应该可以通过web页面查看到一堆NRPE:undefined command之类的错误信息,当客户端nrpe服务修改完成并重启之后,过会儿就能够正常监控上这些客户端了。效果展示如下:
主机监控视图
细心的读者可能已经发现两图中,日期格式好像更易读,默认会显示为04-08-2017 22:30:00
这种,这是因为笔者修改了nagios.cfg的date_format
为iso8601
,具体可查看nagios.cfg文件获知。
07
结尾
在前期安装及配置过程中要仔细留意可能出现的警告及错误信息,尽可能修复它们之后在后续操作,nagios跑起来以后,可以通过查看/var/log/messages
或者/usr/local/nagios/var/nagios.log
来观察错误信息,以找到解决办法。
比如:
在系统运行过程中因为nagios server和客户端nrpe间需要建立ssl会话,所以openssl,openssl-devel包是需要安装的。如果要使用snmp监控主机及服务则需要安装net-snmp包。如果对防火墙不熟悉建议关闭其服务,关闭SELinux。这些在文中未提到,但也是需要注意的地方。
通过nagios实现对主机和服务的监控基本操作方法就写到这儿,在日常使用中有很多可可以深入的地方,特别是对现网各种服务各项指标的监控工作,还需要开发插件然后部署才能够实现,这应该才是监控类软件应用真正有挑战的地方,考验运维工程师的开发能力,nagios支持使用perl、python、shell,C等语言开发插件以满足实际业务监控需求。