用Nagios监控校园网

2017-03-10 07:45
网络安全和信息化 2017年3期
关键词:插件开源对象

引言:笔者所在学校信息化建设经过多年发展,至今形成了以网络设施、服务器及校园网站和相关教学办公系统为核心的信息化设施。随着信息化加深,监控目标从早期的关注软硬件可用性,转变为关注运行健康度。我校采用开源监控工具Nagios,很好地实现了校园网健康监控目的。

IT设施存在多种故障可能性:硬件会因老化或环境不佳导致性能表现下降、甚至完全损坏;软件因设计编码缺陷而会有段错误、耗尽资源等故障。这些故障几乎无法避免,一旦发生就会影响IT设施对外服务,轻则响应速度下降,重则完全不可用。因此,必须有一套机制能确保迅速发现IT设施存在的各种故障,并能做出正确应对措施,这就是监控。现在IT设施的规模都远远超出人力所能控制的范围,需要自动化、可灵活扩展的工具实现无人值守监控。

使用开源监控软件

研究开源监控软件意义是既要节约软件采购成本,又要利用开源软件的技术优势,弥补当前笔者学校校监控软件的不足。

开源监控软件最大的优势是开放性。如果遇到软件缺陷,用户除了向开发者提交缺陷和在社区寻找问题的变通解决方法,还可以自己动手修改代码来解决问题。开放性的另一个好处是用户可以自己改装以实现复杂的监控逻辑。开源监控软件设计中都提供二次开发的接口。

只要遵守接口规范,用户就能实现任意复杂逻辑的监控。

Nagios是开源监控软件中的老牌产品,从2002年起便有投入使用的案例,至今依然在持续开发更新,至今很多企业依然使用Nagios作为主要监控工具。在Nagios之后有很多后起之秀,但都不同程度受到Nagios的影响。

Nagios集成方案

Nagios是 指NagiosCore,既Nagios核心。但是光有核心不能监控任何主机,必须有合适的工具配合核心实现完整监控功能。这些工具分为两大类:插件(Plugin)和扩展( Addon)。

Nagios插件是一组可执行文件的集合,作用是获得被监控目标的状态。所有Nagios集成方案都需要用插件。插件可以安装在被监控端操作系统上,也可以和Nagios核心安装在一起。插件根据要监控的资源类型分为操作系统、数据库、Java Application、日志文件等类别。插件可以使用任何编程语言编写,不需要专用开发工具。Nagios通过命令对象调用Nagios插件。

Nagios扩展的作用是增加核心所没有的功能。在Nagios Exchange网站上,有很多扩展可免费下载和使用。Nagios团队提供了一部分扩展,而大部分扩展由Nagios用户和其他研究机构贡献。各种扩展按其主要功能分门别类,数量最多的扩展有配置工具、图形前端和企业版扩展(Nagios XI才能使用的扩展)。一般而言,扩展常用于远程执行插件、分布式监控、报表、图形化展示和整合其他系统(比如和Help Desk 连接)。

核心、插件和各种扩展可组成各种用途的监控系统。借助一些扩展,Nagios还可以和其他监控软件一起使用以结合各自的功能。

1.Nagios官方集成方案NRPE

NRPE是Nagios Remote Plugin Executor的 缩 写。它由两个部分组成,插件check_nrpe和扩展NRPE。

Nagios为 核 心,插 件check_nrpe和核心安装于同一台主机上。扩展NRPE和各种检查插件安装在被监控对象所在的主机上。NRPE以后台服务的方式运行,并监听一个端口。检查插件不仅可以监控本机上的各种对象,还可以监控远端主机上的网络服务,比如HTTP和FTP。核心调用check_nrpe,并向后者传递一个参数。这个参数是一个名称。通过SSL加密的链路,check_nrpe把调用指令传递到对应主机上的NRPE。NRPE的配置文件nrpe.cfg是名称-命令行的字典,NRPE根据名称寻找对应的命令行(就是检查插件),并执行它。最后,NRPE把命令执行的返回码和所有stdout的输出返回给check_nrpe,check_nrpe 把这个返回码作为自己的返回码再反馈到核心。

这个集成方案的优点是安装简单。在核心主机上只需要安装一个文件check_nrpe,在被监控主机上除了检查插件,只需要安装nrpe和nrpe.cfg两个文件。

2.可通过Web配置的集成方案

Check_MK+pnp4nagio此方案的核心Check_MK,它是多个Nagios扩展的集合。Check_MK在核心和被监控主机之间起到中间人的作用。Check_MK有专用 的 agent(代 理),和 一般的常驻系统代理不同,Check_MK代理没有进程,而是xinetd/inetd管理的一个子服务,默认监听在6556端口。用telnet连接此端口,代理程序会执行一个shell程序并回显输出结果。Check_MK代理执行两种程序来获得被监控目标的状态,官方命名为Check_MK插件和本地检查(local checks)。本地检查就是Nagios插件。Check_MK插件与Nagios插件不同之处在于,Check_MK 插件执行操作系统命令并把结果重组为方便分割的格式文本后回显,忽略返回值。Check_MK获得文本后建立该主机的服务“库存”(inventory)。举例来说,Check_MK插件执行df命令获得所有挂载点的名称和使用率,Check_MK据此建立两种库存:每个挂载点存在和各挂载点的使用率。每种库存都有对应的inventoryfunction,把文本内容转为Nagios服务对象,并由Nagios核心执行检查。

第一步:核心发起一个对主机的存活检查,被Check_MK“截获”。

第二步:Check_MK向此主机上的代理监听的TCP端口发起连接。Agent收到连接后执行Check_MK插件和本地检查程序。Check_MK Agent把所有Check_MK插件和本地检查输出到标准输出的内容集合到一起,回写给Check_MK。

第三步:Check_MK收到从Agent返回的文本,进行一些处理。首先,根据特定的标志行,把文本拆分为多段建立库存。其次,inventory function根据标志行中的标签,把每段中的行分配给对应的服务对象。最后,对于要收集性能数据的服务对象,再从行中提取出性能数据,保存在rrdtools的数据库中,让pnp4nagios绘制性能图表。

第四步:Check_MK分析服务对象的当前状态值。如果有状态非OK,以被动检查服务的方式提交到核心,由核心继续执行通知过程。

3.方案比较分析

NRPE方案的相对优势是安装和使用简单。所有要安装的文件只有4个,而配置只需要增加一个服务对象和在nrpe.cfg中增加一行命令。而Check_MK安装时要填写35个选项,配置文件是Python字典文件,参数众多难以记忆。和NRPE方案相比,Check_MK有如下优势:

(1)更安全。Check_MK不会向Agent发送任何可变参数,不会被注入恶意命令。

(2)配置更直观。通过网页配置工具WATO,管理员不用在文本编辑器中自己编写对象,而只用在网页界面上填写必要信息,由WATO自动形成配置文件并重新加载。这样避免出现对象语法错误,也简化了配置过程。Check_MK也支持通过文本编辑器产生的对象文件。

(3)服务自动发现。对于操作系统常见的监控服务,如内存使用率、磁盘空间使用率等,Check_MK能通过插件自动发现并建立库存。根据库存,Check_MK能自动建立Nagios对象文件,这样就省去了新增主机后需要自己动手编写一堆对象文件的劳动。

(4)占用更少的计算资源。Nagios每执行一次主动检查,要分支出一个子进程。进程占用较多的计算资源。Check_MK只会执行主机的主动检查,在一次检查中把主机上所有的监控服务都检查一遍。这样和主机关联的服务检查就全部变为被动检查,不会产生子进程。这样节约了执行检查需要的资源,就可以缩短监控的检查间隔。根据Check_MK网站上的描述,可以10倍地缩短间隔。

(5)监控服务和通知分离。Nagios的 Service对象只能指定一种通知命令和联系人组,无法实现诸如“用短信通知应用管理员,同时用邮件通知经理”的要求。Check_MK通过规则集合实现了服务对象和任意数量联系人对象的组合,从而能灵活定义通知方式。

综合比较NRPE方案和Check_MK方案,后者更胜一筹。Check_MK方案更快更安全,并且本身提供了BI、对NagVis和pnp4nagios的原生支持、网页配置工具WATO和灵活的基于规则的通知方法。尤其是BI,在复杂业务系统中展示和定位问题根源非常有用,对以业务为导向的监控有很大帮助。

应用Nagios

1.主要监控需求

我校信息化建设经过多年发展,至今形成了以网络设施、服务器及校园网站和相关教学办公系统为核心的信息化设施。硬件基础设施包括路由器、交换机、防火墙、磁盘阵列、PC服务器和专用定制设备,操作系统Windows和虚拟化平台为主。随着信息化加深,监控目标从早期的关注软硬件可用性,转变为关注运行健康度。系统健康度的监控目标分为三个层次。

(1)故障。尽管当前IT环境普遍使用冗余和高可用机制,支撑校园信息化系统的软硬件故障依然要监控。

(2)性能瓶颈。用户好感会因为性能瓶颈而下降。性能瓶颈可能很明显,比如数据库中一个查询语句执行过久;也可能很隐蔽,比如在特定类型浏览器上打开网页很慢。

(3)运行逻辑正确性。只和我校业务有关而和IT设施无关的业务数据是否符合约束条件。

2.Nagios选用方案

Check_MK+pnp4nagios方案能胜任实现我校监控需求,未来将在此方案的基础上配合其他Nagios扩展以实现监控需求。该方案监控软件优势如下所述。

(1)轻量级的操作系统监控代理。Check_MK的代理安装文件只有20KB,半分钟就完成安装,部署迅速。

(2)灵活的通知机制。相比没有任何通知功能的Netcool Omnibus,Check_MK不仅完全保留了Nagios的通知管理功能,还提供了基于规则的通知策略,实现非常灵活的通知机制。

(3)功能齐全的网页配置工具WATO。WATO用Python编写,速度快,而且可修改联级样式表使网页能符合用户的审美观。支持自定义程序监控。

(4)关联影响视图。利用Check_MK的BI,为每个业务系统建立聚合视图,监控内容不仅有系统基础设施和应用健康状态,还有系统对外数据出口。

监控系统是我校信息化精细化运维管理的重要设施之一,通过良好的监控设置,及时发现系统状况,可以降低我校系统运行故障率,提升教学服务水平。

Nagios开源监控软件的运用不仅在成本上、效用上符合节约实用原则,更重要的是在运行效率和功能扩展上能够满足我校相当长时间内的监控需求。

猜你喜欢
插件开源对象
涉税刑事诉讼中的举证责任——以纳税人举证责任为考察对象
自编插件完善App Inventor与乐高机器人通信
五毛钱能买多少头牛
2019开源杰出贡献奖
攻略对象的心思好难猜
基于jQUerY的自定义插件开发
基于熵的快速扫描法的FNEA初始对象的生成方法
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
区间对象族的可镇定性分析