写在前头:限于个人对nagios的了解有限,写得不够深入与系统,甚至可能会有些错误,各位看官还多包涵。本文主要涉及的是nagios daemon、nrpe及三个部分。
主机或服务状态监控
nagios是一款开源的监控软件,从它可以监控的设备类型上来看,主要包含网络设备,服务器设备。常见的网络设备如:路由器、交换机、防火墙、F5、打印机等,常见的服务器设备主要分为:UNIX类、Linux类以及Windows类。按我的理解凡是支持snmp协议的设备,包含PC都可以通过nagios进行监控。当然,nagios实现对主机资源及服务的监控并非全依靠snmp协议,它最为主要的监控手段是通过nrpe组件来实现。
监控告警通知
nagios对在网络中发现的问题会及时产生告警信息并通过事先定义好的方式,如邮件、短信、微信等方式通知相关人员。随着网络运维工作更加自动化,还可以通过nagios支持的相应API接口,开发相应的程序,实现其自动或人干干预去对监控发现的问题进行自动化的处理。
监控信息可视化
nagios结合web服务器,可以将整个网络所监控的所有信息以web页面的形式展现出来,还可以结合外部软件实现监控数据可视化,以图表的形式展示在web页面中,本文将介绍nagios常用的画图软件包pnp,现在叫pnp4nagios。
nagios系统主要包含nagios daemon、nagios plugin、nrpe、web三个组件,它还包含NDOUtils、NSCA、NSClinet++组件,它们共同组成一个完整的nagios,组成逻辑图如下所示:
Nagios Daemon
nagios系统的核心组件,它负责组织与管理各组件,将它们协调起来共同完成监控任务,并完成监控信息的组织与展示。
Nagios Plugins
nagios plugins主要就是nagios核心组件自带以及用户自开发的一些插件,它们是实现各项监控的具体小程序,由它们将采集到相应的数据以后,回送给nagios服务器。
NRPE
nagios系统要想取得被监控主机的存活状态、http、ftp、ssh服务是否可用,可以通过程序探测的出来,但如果要想取得被监控端上如磁盘容量,cpu负载这类本地信息时,如果没有相应的权限就不行,所以就产生了代理程序,事先在被监控机上安装代理程序(Linux系统是nrpe软件),然后通过它们来获取监控数据,再回送给nagios服务器。当nrpe启动以后,它会开启5666端口。nrpe的工程原理如下图所示:
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做处理。
OS:CentOS release 6.8 (Final) 2.6.32-642.el6.x86_64
还有一个重要环境:互联网(yum、百度、Google)。
各软件包:
服务器侧软件安装
前提:使系统具备编译软件源码包的能力,并提前解决一些包、共享库文件之间的依赖关系,建议安装如下两个Group组件:
configure
make
make install
此外相应指令如下:
configure完成以后若出现make all
以完成编译的提示则继续执行:
如果上述任一指令执行后有error发生或者某文件,某组件没有找到,务必先解决相应的错误,一般可能是某些包没有安装导致,根据提示信息中的关键字找出可能的包,然后yum安装上即可。
创建登录nagios web页面的用户及密码
默认系统中已存在名为nagiosadmin
的账户,只需要给它指定密码,其密码会加密存储,密码文件默认为`/usr/local/nagios/etc/htpasswd.users,无需改动。
被监控端软件安装
在网络中需要被监控的Linux主机中安装nagios plugin
和nrpe
两个组件,并安装xinetd组件,用于启动nrpe
程序。
启动xinetd
服务并设置开机自启:
检查nrpe是否启动即端口5666是否处于监听状态: ss -tnl
另一个检测nrpe是否工作正常的办法是在nagios服务器上使用check_nrpe
插件来测试与这台客户端的nrpe通信是否正常:
5.1 nagios配置文件位置
nagios要对哪些主机监控哪些内容都是通过名为.cfg的配置文件进行定义的。
它们通常是位于/usr/local/nagios/etc
目录中的*.cfg
以及位于/usr/local/nagios/etc/objects
目录下的*.cfg
。
默认的文件如下:
再看看/objects/
目录下的内容:
5.2 各配置文件的作用:
nagios.cfg主配置文件
nagios.cfg
是nagios
服务端的主配置文件,它可以定义其它*.cfg
配置文件的位置,是否启用性能监控(收集监控数据以生成图表),性能数据处理指令,性能数据文件格式模板及存放位置等,配置nagios
日志文件存放的信息级别及位置,nagios
进程的启动用户及组,日志文件的切割方式,显示的日期格式等等。如果只是实现对主机及服务的监控,不出监控图的话,默认可以不改动这一文件。
templates.cfg模板定义文件
templates.cfg
是监控的模板文件,对所有主机、服务、联系人的定义为简化配置都可以根据需求定制相应的模板,然后在主机、服务、联系人配置文件中去引用模板即可。下面进行简要说明:
以上便是templates.cfg
文件中的主要内容,可以按需修改已定义的模板或者新定义模板。其中涉及到部分对command的定义,它是需要在commands.cfg
文件中进行定义的。
这里有一个名为check_nrpe
的command特别重要:需要指定它才能够启动本地的check_nrpe
去连接被监控端上的nrpe daemon,并在被监控端执行相应的命令,需要自己添加,默认commands.cfg
文件里是没有的:
由于新增加了两个配置 文件(hosts.cfg和services.cfg),所以需要在nagios主配置文件(nagios.cfg)中指明它们的位置,只需要在nagios.cfg中加上两行,搜索下cfg_file
加到它们的下面即可:
5.3 检查配置文件
nagios自带的就有配置文件语法及逻辑检测工具,检测方式:
检测如果没有问题,则可以重载nagios服务,使用最新配置文件来工作了。
重载服务service nagios reload
5.4 客户端配置监测命令及参数
要实现对Linux主机的监控还差非常关键的一步,去到各被监控linux主机上配置实际要执行的指令,它们是在/etc/usr/local/nagios/etc/nrpe.cfg
文件中定义的。 示例文件如下:
注意:[]中的内容,这些字符要和nagios服务端上
services.cfg里定义command时check_nrpe!后面的字符完全一样,等号中的内容则前面介绍的方法查看每个plugin的具体用法。
客户端在修改完nrpe.cfg文件以后,需要重启nrpe进程:
在nagios客户端还没有配置好nrpe.cfg文件时,nagios server是无法监控到客户端的,此时应该可以通过web页面查看到一堆NRPE:undefined command之类的错误信息,当客户端nrpe服务修改完成并重启之后,过会儿就能够正常监控上这些客户端了。效果展示如下:
主机监控视图
细心的读者可能已经发现两图中,日期格式好像更易读,默认会显示为04-08-2017 22:30:00
这种,这是因为笔者修改了nagios.cfg的date_format
为iso8601
,具体可查看nagios.cfg文件获知。
在前期安装及配置过程中要仔细留意可能出现的警告及错误信息,尽可能修复它们之后在后续操作,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等语言开发插件以满足实际业务监控需求。
好的内容离不开作者的持续付出,给他一次小小的打赏我们将获得持续不断的有料干货,⬇️美女和帅哥都会至少打赏1元哟⬇️⬇️💰
————金三银四课程特惠————
马哥教育精英线下Linux班郑州校区开班倒计时,优惠四重享,赠送高达4000元的学习大礼包:
第一重:4月30日前报名,立减400元,名额有限抢完为止;
第二重:4月30日前报名,赠送马哥教育内部Linux知识精讲教材一本(价值666元);
第三重:4月30日前报名,赠送马哥教育实体服务器使用资格(价值1666元);
第四重:4月30日前报名,赠送马哥教育云学堂学习权限1个(价值1999元);
课程详情,请咨询学习顾问:
Linux面授班,报名优惠400元,名额有限,抢完为止!