基于Nagios的企业数据监控平台研究与实现
王勇 薛辉
(中国证券报)
摘要:数据是一个企业的核心资源。数据的保护、备份、分析是当今企业赖以生存的根本。如何能够安全、高效地管理数据成为企业管理者和数据管理人员的最大挑战,数据管理不仅要保证数据的安全、完整、可用,也要保证管理过程的可视化、日志化、智能化。Nagios是一款开源的网络监控系统,能够有效监控Windows、Linux和Unix平台的资源及运行在各平台上的数据活动,本文以Linux为平台,研究Nagios如何对企业数据进行监控和检测。关键词:Nagios Linux NRPE NSClient++ 数据监控1引言
在信息和数据大爆炸的今天,特别是 “互联网+”计划的提出,势必对传统数据管理模式造成冲击。在信息技术新形态下,如何安全、高效、便捷地管理企业数据成为数据管理人员当前最棘手的问题,依靠数据管理人员的巡查或24小时值班既不科学也不实际,这不仅耗费了大量的人力财力,而且不能准确、高效地实时监测数据的运行情况,故障发生时不能及时发现并排除,会给企业造成不可估量的损失。因此,对数据加强管理,实施数据联网监控是很有必要的。Nagios就是这样一套开源的智能监控系统,它可以对网络上的资源和数据进行实时监控,并在状态改变时发出通知。2需求分析
2.1数据的来源中国证券报社是经济、证券行业的专业媒体,主要从事经济形势解读,证券信息披露,上市公司路演,报纸发行,基于WEB和移动应用的咨询发布及股民互动交流等业务。伴随业务的正常开展,会产生大量的多元数据,这些数据有4V特点:Volume(大量)、Velocity(高速)、Variety(多样)、Value(价值)。2.2数据的分类根据存储类型,中国证券报社数据可分为结构化数据和非结构化数据。结构化数据:简单来说就是关系型数据,由关系型数据库存储,如:ORACLE,MSSQLSERVER,MySql等,报社的基金净值数据,股民互动交流数据,上市公司路演数据以及部分Web和移动应用数据都是关系型数据。非结构化数据:包括视频、音频、图片、图像、文档、文本等,报社的财务系统,Web应用,视频直播等业务都会产生大量的非结构化数据。非结构化数据的存储有三种方式:一是使用传统的磁盘存储,包括本地磁盘和网络存储;二是使用NoSql对数据进行存储;三是使用Hadoop对数据进行分布式处理。2.3数据监控的作用企业数据和运营是紧密联系的,数据管理的质量直接影响报社业务的开展,管理员必须实时监视数据的变化,防止因数据的损坏或丢失影响正常业务。运用监控手段,可以做到故障的提前预警,让数据管理人员有充足的时间处理故障,减少了业务的故障率。3 Nagios介绍
Nagios是基于GPLv2协议的开源监控系统,运行在Linux或Unix环境,通过其庞大的插件库监控网络上的设备和服务,同时提供一个可选的Web界面以便管理人员察看系统和数据的状态。Nagios由内核(Nagios Core),插件(Nagios Plugins)和扩展程序(Addons)构成,介绍如下:Nagios内核:内核是Nagios系统核心部分,包含核心监测引擎和一个基本的Web界面。Nagios插件: Nagios的监控功能大多是由插件来完成的,Nagios程序安装完成后必须安装插件程序,其中包含将近4000个插件,几乎可以监控IT架构中的任何资源。扩展程序:Nagios扩展程序非常多,常用的有:NRPE 运行在Unix或Linux平台上的Nagios监控代理,可以监控远程系统的资源使用状态。NSClient++ 专为Windows平台开发的Nagios监控代理,它配置简单,功能强大,很好的监控Windows平台的资源状态。NConf PHP语言开发的Nagios配置工具,通过友好的界面来管理Nagios,管理员不再需要修改配置文件,给Nagios管理员带来便利,提高了管理的效率和安全性。NDOUtils 一个入库程序,用来将Nagios的配置信息和事件产生的数据存入数据库,以实现这些数据的快速检索和处理。4 Nagios监控原理
Nagios系统需要安装在一台独立的服务器上,这台服务器称为监控中心,监控中心运行Nagios主程序、插件程序、Web展示程序以及入库程序。被监控客户端运行一个与监控中心通信的Nagios后台程序。监控中心读取配置文件中的指令与远程的守护程序进行通信,指示远程的守护程序进行必要的检查。虽然Nagios系统必须运行在Linux或者Unix操作系统上,但是远程被监控的设备可以是任何能够与其进行通信的主机。收到远程主机返回的应答,Nagios根据配置用合适的行动进行回应,接着监控中心进行检查,如果返回值不正确,通过一种或者多种方式报警,这是根据事先的配置采取的行动。原理图如下:图1 Nagios监控原理图
5 Nagios数据监控研究与实现
5.1数据监控方法5.1.1监控非结构化数据非结构化数据一般存储在服务器本地磁盘或NAS存储上,NAS存储的数据需要挂载到一台安装了Nagios监控代理的主机上。为了便于管理,按业务类型划分存储目录和对应备份目录,使用Nagios的磁盘监控插件对目录进行监控,可实时掌握应用数据的情况,监控原理图如下:图2非结构化数据监控原理图
5.1.2监控结构化数据结构化数据存储在数据库中,结构化数据的监控分为三个部分:操作系统资源、数据库管理软件状态、数据。使用Nagios主机资源监控插件和对应系统的监控代理(Linux为NRPE,Windows为NSClient++)来监控操作系统资源;使用Nagios数据库监控插件并配合自定义脚本来监控数据库和数据。原理图如下:图3 结构化数据监控原理图
5.2数据监控实现5.2.1 Nagios基础环境安装(1) 创建nagios系统用户groupadd nagiosuseradd –G nagios nagios(2) 安装nagios coretar zxvf nagios-3.5.0.tar.gzcd nagios./configure --prefix=/home/nagios/nagiosmake allmake install 安装主要程序,CGI及HTML文件make install-init 把nagios做成运行脚本,nagios随开机启动make install-commandmode 给外部命令访问nagios配置文件的权限make install-config 把配置文件的例子复制到nagios的安装目录(3) 安装nagios插件,安装成功后在nagios/libexec目录中生成许多插件(check_xxx),这正是监控所需要的tar zxvf nagios-plugins-1.4.16.tar.gzcd nagios-plugins-1.4.16./configure --prefix=/home/nagios/nagiosmakemake install(4) 启动Nagios启动Nagios的方式有两种:一是配置系统服务来启动,二是通过命令行方式启动,以下是两种启动方式的示例。系统服务方式:service nagios start命令行方式:nagios/bin/nagios -d nagios/etc/nagios.cfg(5) 启动NRPEnagios/bin/nrpe -c nagios/etc/nrpe.cfg -d5.2.2非结构化数据监控配置报社非结构化数据存储在本地磁盘和NAS存储中,我们用check_linux_stats脚本来监控,具体配置示例如下:在被监控端编辑nagios/etc/nrpe.cfg添加以下代码:command[check_diskstat]=/home/nagios/nagios/libexec/check_linux_stats.pl -D -w 10 -c 5 -u % -p /,/boot,/xxx, /nas/aaa在监控中心编辑对应主机配置文件,此处check_command必须与被监控端nrpe.cfg配置文件中定义的一致,代码如下:define service{use generic-servicehost_name wangy-xxxx-linuxservice_description Disk Stat Localcheck_command check_nrpe!check_diskstatservicegroups wangy-linux-servicescontact_groups wangy-cg}配置完成后重启被监控端的NRPE服务和监控中心的Nagios服务。5.2.3结构化数据监控配置结构化数据存储在关系数据库中,以ORACLE数据库为例,我们使用check_linux_stats插件监控操作系统的资源,使用check_oracle_health插件监控数据库管理系统的内存状态、性能和备份情况等,使用自定义的SQL脚本监控ASM磁盘组。在被监控端编辑nagios/etc/nrpe.cfg添加以下代码:command[oracheck_ts_usage]=/home/nagios/nagios/libexec/check_oracle_health --connect='(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx.xxx.xxx.xxx)(PORT=1521))(CONNECT_DATA=(SID=zzbrac)))' --username system --password password --mode tablespace-usagecommand[oracheck_asm_usage]=/home/nagios/nagios/libexec/check_oracle_health --connect='(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx.xxx.xxx.xxx)(PORT=1521))(CONNECT_DATA=(SID=zzbrac)))' --username system --password password --mode sql --name 'select round((TOTAL_MB-FREE_MB)/1024), round(TOTAL_MB/1024),round(FREE_MB/1024) from v$asm_diskgroup' --name2 'USED_GB TOTAL_GB FREE_GB' --units GB --warning 180 --critical 190在监控中心编辑对应主机配置文件,同样check_command必须与被监控端一致,代码如下:define service{use generic-servicehost_name wangy-zzbrac-linuxservice_description Oracle Ts Usagecheck_command check_nrpe!oracheck_ts_usageservicegroups wangy-oracle-servicescontact_groups wangy-cg}define service{use generic-servicehost_name wangy-zzbrac-linuxservice_description Oracle Asm Usagecheck_command check_nrpe!oracheck_asm_usageservicegroups wangy-oracle-servicescontact_groups wangy-cg}配置完成后重启被监控端的NRPE服务和监控中心的Nagios服务。
评论 点击评论