原创投稿 | 使用nagios监控主机及服务

写在前头:限于个人对nagios的了解有限,写得不够深入与系统,甚至可能会有些错误,各位看官还多包涵。本文主要涉及的是nagios daemon、nrpe及三个部分。

01

nagios系统的功能

  • 主机或服务状态监控 nagios是一款开源的监控软件,从它可以监控的设备类型上来看,主要包含网络设备,服务器设备。常见的网络设备如:路由器、交换机、防火墙、F5、打印机等,常见的服务器设备主要分为:UNIX类、Linux类以及Windows类。按我的理解凡是支持snmp协议的设备,包含PC都可以通过nagios进行监控。当然,nagios实现对主机资源及服务的监控并非全依靠snmp协议,它最为主要的监控手段是通过nrpe组件来实现。
  • 监控告警通知 nagios对在网络中发现的问题会及时产生告警信息并通过事先定义好的方式,如邮件、短信、微信等方式通知相关人员。随着网络运维工作更加自动化,还可以通过nagios支持的相应API接口,开发相应的程序,实现其自动或人干干预去对监控发现的问题进行自动化的处理。
  • 监控信息可视化 nagios结合web服务器,可以将整个网络所监控的所有信息以web页面的形式展现出来,还可以结合外部软件实现监控数据可视化,以图表的形式展示在web页面中,本文将介绍nagios常用的画图软件包pnp,现在叫pnp4nagios。
  • 监控数据存储 nagios监控到的数据会存储下来,可以直接以文件的形式存储也可以通过NDOUtils组件存储到如mysql类的数据库中,从而可以很好支持监控历史数据的查询。

02

nagios系统的组成

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做处理。

  • NSClinet++ NSClient++这一组件是安装在windows主机上,相当于nagios server在windows端的代理程序。
  • NSCA NSAC这一组件适用于部署分布式nagios监控系统时使用,它可以实现让被监控端主动将需要监控的信息发送给nagios服务端。

03

本文所用到系统环境

OS:CentOS release 6.8 (Final) 2.6.32-642.el6.x86_64 还有一个重要环境:互联网(yum、百度、Google)。 各软件包:

04

nagios系统软件部署

服务器侧软件安装

前提:使系统具备编译软件源码包的能力,并提前解决一些包、共享库文件之间的依赖关系,建议安装如下两个Group组件:

  • 安装nagios依赖的软件包 nagios要通过web页面展现监控结果,所以nagios服务器同时还得是一个web服务器,因为nagios各种数据的实时展现是动态页面呈现的,因此还需要用到php。nagios要实现画图还依赖于gd、rrdtool包。按照官方说明安装如下包:
  • 创建nagios用户及组 很多开源软件如果是通过源码包来进行安装,为后续的安装及服务运行做准备都需要通过事先创建好相应服务的账号及组。这里相关指令如下:
  • 创建一个可以从web接口接受外部指令的用户组并将nagios及apache添加进组
  • 安装nagios core nagios core就是前文提到的nagios daemon。解压软件包后,源码安装的通用三步骤:
    1. configure
    2. make
    3. make install 此外相应指令如下:

configure完成以后若出现make all以完成编译的提示则继续执行:

如果上述任一指令执行后有error发生或者某文件,某组件没有找到,务必先解决相应的错误,一般可能是某些包没有安装导致,根据提示信息中的关键字找出可能的包,然后yum安装上即可。

  • 创建登录nagios web页面的用户及密码 默认系统中已存在名为nagiosadmin的账户,只需要给它指定密码,其密码会加密存储,密码文件默认为`/usr/local/nagios/etc/htpasswd.users,无需改动。
  • 重启web服务
  • 安装plugin及nrpe组件 因为nagios服务器本身也同样需要被监控,自己监控自己或者被其它的nagios服务器所监控,所以它也需要安装plugin及nrpe组件。在软件包的解压目录中执行如下指令:
  • 安装完plugin以后会在/usr/local/nagios/libexec目录下存放大量插件,就是用这些插件来实现最终的监控目的的。 按着安装nrpe: nagios服务器安装nrpe包主要目的是为了安装check_nrpe插件,便于与被监控Linux端的NRPE daemon程序通信,如果这台nagios服务器也需要被其它nagios服务器监控,那它还必须安装nrpe daemon和nrpe daemon-config。
  • 设置web、nagios服务开机自启
  • 通过web页面登录nagios 做完以上步骤以后,即可打开浏览器,输入http://nagios-server-ip/nagios,它会弹出提示框,输入前面提到的nagiosadmin及其密码即可登录。登录后的初始界面如下:

被监控端软件安装

在网络中需要被监控的Linux主机中安装nagios pluginnrpe两个组件,并安装xinetd组件,用于启动nrpe程序。

  • nagios plugin安装 创建nagios用户:
  • 将tar.gz包解压以后进入其目录,然后执行以下命令:
  • 安装完成以后,建议修改安装目录/usr/local/nagios的属主为nagios,并可查看到其下有三个目录:
  • 安装nrpe: 客户端因为需要通过nrpe程序来执行从服务器侧接收到的command,因此必须安装nrpe
  • 安装xinetd 根据nrpeREADME文件的说明,可以将nrpe daemon作为xinetd下的一个服务来进行管理,所以需要事先将xinetd安装到系统中:
  • 再接着安装nrpexinetd下的配置文件:
  • 修改nrpe的配置文件,以允许nagios server连接它: vim /etc/xinetd.d/nrpeonly from改成如下内容:
  • nrpe服务端口号添加进去:vim /etc/services在最后一行加上nrpe 5666/tcp #Nagios-Client然后保存退出。

启动xinetd服务并设置开机自启:

检查nrpe是否启动即端口5666是否处于监听状态: ss -tnl 另一个检测nrpe是否工作正常的办法是在nagios服务器上使用check_nrpe插件来测试与这台客户端的nrpe通信是否正常:

05

配置nagios监控主机及服务

5.1 nagios配置文件位置

nagios要对哪些主机监控哪些内容都是通过名为.cfg的配置文件进行定义的。 它们通常是位于/usr/local/nagios/etc目录中的*.cfg以及位于/usr/local/nagios/etc/objects目录下的*.cfg。 默认的文件如下:

再看看/objects/目录下的内容:

5.2 各配置文件的作用:

  • nagios.cfg主配置文件 nagios.cfgnagios服务端的主配置文件,它可以定义其它*.cfg配置文件的位置,是否启用性能监控(收集监控数据以生成图表),性能数据处理指令,性能数据文件格式模板及存放位置等,配置nagios日志文件存放的信息级别及位置,nagios进程的启动用户及组,日志文件的切割方式,显示的日期格式等等。如果只是实现对主机及服务的监控,不出监控图的话,默认可以不改动这一文件。
  • templates.cfg模板定义文件 templates.cfg是监控的模板文件,对所有主机、服务、联系人的定义为简化配置都可以根据需求定制相应的模板,然后在主机、服务、联系人配置文件中去引用模板即可。下面进行简要说明:

以上便是templates.cfg文件中的主要内容,可以按需修改已定义的模板或者新定义模板。其中涉及到部分对command的定义,它是需要在commands.cfg文件中进行定义的。

  • commands.cfg命令定义文件 commands.cfg文件可以包含监控时需要用到的指令的定义,由这些指令来完成具体的监控工作,它们可以在services.cfg文件中被调用。配置示例如下:

这里有一个名为check_nrpe的command特别重要:需要指定它才能够启动本地的check_nrpe去连接被监控端上的nrpe daemon,并在被监控端执行相应的命令,需要自己添加,默认commands.cfg文件里是没有的:

  • contacts.cfg联系人定义文件 contracts.cfg这一文件定义了当需要发送告警通知时,需要发给哪些联系人组,然后不同的组里可以分别定义相应的成员,默认情况下会将通知发给名为admins的组,里面包含的email地址即为接收告警通知邮件的地址。示例如下:
  • timeperiods.cfg时间段模板定义文件 timeperiods.cfg主要用来对要进行监控的时间段以及可以发送通知的时间段进行定义,很灵活很方便。
  • localhost.cfg监控服务器配置文件 localhost.cfg这个文件是用来定义对这台nagios服务器的哪些资源及服务进行监控的,它主要包含两部分的定义,针对host级别的和针对service级别的。示例如下:
  • hosts.cfg定义要被监控的主机 hosts.cfg文件可以将网络中所有需要监控的主机定义进来,并将它们根据需求分组,一台主机可以同时属于不同的组,默认情况下不允许组里面一台主机都没有,然后根据需要调用不同的主机模板(事先在templates.cfg中定义)。另一点很重要的是这个文件需要自己创建,不建议直接在localhost.cfg里添加。示例如下:
  • services.cfg定义要被监控的服务 services.cfg这个文件默认也是不存在的,需要手工创建,可以以localhost.cfg里定义的service部分作为模板进行修改。在它里面可以针对不同的服务调用不同的模板,以及把这些服务应用到哪些主机或主机组上。示例如下:

由于新增加了两个配置 文件(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进程:

06

登录nagios web页面查看监控数据

在nagios客户端还没有配置好nrpe.cfg文件时,nagios server是无法监控到客户端的,此时应该可以通过web页面查看到一堆NRPE:undefined command之类的错误信息,当客户端nrpe服务修改完成并重启之后,过会儿就能够正常监控上这些客户端了。效果展示如下:

主机监控视图

细心的读者可能已经发现两图中,日期格式好像更易读,默认会显示为04-08-2017 22:30:00这种,这是因为笔者修改了nagios.cfg的date_formatiso8601,具体可查看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等语言开发插件以满足实际业务监控需求。

本文分享自微信公众号 - 马哥Linux运维(magedu-Linux)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-04-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器人网

不同的机器人控制各需要什么关键技术?

机器人控制系统是机器人的大脑,是决定机器人功能和性能的主要因素。工业机器人控制技术的主要任务就是控制工业机器人在工作空间中的运动位置、姿态和轨迹、操作顺序及动作...

35050
来自专栏PPV课数据科学社区

六款值得推荐的数据挖掘得力助手

当今这个时代,说数据就是金钱一点都不夸张。随着向一个基于应用的领域过渡,数据则呈现出了指数级增长。然而,大部分数据是非结构化的,因此它需要一个程序和方法来从中提...

37370
来自专栏PPV课数据科学社区

盘点互联网巨头奉献的十大开源安全工具

Facebook等大型互联网公司推动的服务器与数据中心、大数据工具的开源化项目类似,当大型互联网公司们在超大规模基础设施运营方面面临的挑战超出技术厂商的能力时,...

38780
来自专栏腾讯技术工程官方号的专栏

专访腾讯产品总监邬沛君:TStack斩获OSCAR技术创新奖的背后

导读:作为中国云计算开源领域最专业、最高端、最具规模的行业盛会,2018云计算开源产业大会(全球云计算开源大会)由工业和信息化部指导,中国信息通信研究院主办、云...

51090
来自专栏PPV课数据科学社区

【学习】R语言各种优点

开源R软件不再是学术机构的独宠或专有工具。经过多年来的持续演进,它现在已成为数据科学家、业务分析师和数据挖掘人员的理想分析软件。 Rexer Analytics...

39980
来自专栏数据猿

阿里数据经济研究中心秘书长潘永花:基于数据融合和外在价值的探索会催生新的商业模式

数据猿导读 大数据产品技术及解决方案的创新比较清晰,开源技术基础上的创新和服务是主要方向,但围绕着数据本身的新商业模式还在探索过程中。2017年,基于数据融合和...

31360
来自专栏PPV课数据科学社区

Ambari——大数据平台的搭建利器

Ambari 是什么 Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是顶级...

33690
来自专栏机器人网

说好的小米平衡车呢,它怎么变成了9号机器人?

CES2016展会上,Intel 联合小米投资的NineBot以及之前被NineBot收购的赛格威(Segway),推出了一个可以变成机器人的平衡车Hoverb...

50780
来自专栏Django Scrapy

Elasticsearch1.0 介绍

优势 开源,稳定,快速,可扩展 由 Java开发 基于 restful web接口与服务器交互的分布式搜索引擎 搜索引擎除了elasticsearch还有 s...

29750
来自专栏PPV课数据科学社区

吴甘沙:既然不能避免个人数据泄漏,何不做自己数据的CEO呢?|高峰论坛

本文由未来创客(futuretrek)根据峰会内容整理,未经授权禁止转载 6月18日下午,湛庐文化·未来创客在清华大学学经管学院伟伦楼一层报告厅,举办了题为“数...

41360

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励