介绍无论何时何地,我们都可以了解服务器的性能,这要归功于作为运维之眼的监控系统。G-line监控系统中使用的监控工具有很多。作为老牌监控工具,Nagios以其灵活的配置功能和强大的管理中心在G-line中扮演着重要的角色。本文从G行的功能、系统监控原理和应用等方面介绍了Nagios监控工具。一、Nagios功能1、主机或服务状态监控Nagios可以监控的服务器操作系统主要有Linux、Unix、Windows,等。可监控的网络设备包括路由器、交换机等。应用协议进行外部可用性检测。2.监控告警通知Nagios对于发现的问题会及时产生告警信息,并通过预先定义的方式通知相关人员,如邮件、短信、微信等。同时,Nagios还支持使用自定义的报警通知的程序和调用API,以便用户更好地发现问题并进行自动处理。3、监控信息的可视化Nagios结合web服务器可以将其监控的所有信息以网页的形式展示出来,还可以进一步结合外部软件实现监控数据的可视化分析并展示在网页中图表的形式。下图是Nagios网页显示。图1Nagios网页展示4.监控数据存储Nagios监控采集到的数据都会进行存储,可以通过NDOUTis组件存储到数据库中,实现历史监控信息的查询。2.Nagios系统监控原理Nagios是一个C/S的监控工具。系统中的角色可以分为:(1)Nagiosserver:安装核心模块,负责监控处理、任务调度、下发指令和web展示。(2)被监控主机:安装代理模块,执行具体的监控指令,返回监控结果。Nagios服务器向代理模块发送请求,代理模块调用各个插件获取特定资源的状态信息,然后返回给Nagios服务器,最后对收集到的信息进行分析并通过web展示应用。Nagios系统主要包括三个组件:Nagiosdaemon、Nagiosplugin、nrpe。它还包括NSCA、NSClinet++和NDOUtils组件。组成逻辑图如下:图2Nagios逻辑结构图Nagiosdaemon:Nagios系统的核心组件,负责组织和管理各个组件,协调它们完成监控任务,并完成组织和展示的监控信息。Nagios插件:Nagios核心组件和用户自行开发的一些插件。它们是实现各种监控的具体小程序。在收集到相应的数据后,他们将其发送回Nagios服务器。NRPE:如果Nagios系统想要获取被监控主机的存活状态以及http、ftp、ssh等公共服务的可用性,可以通过程序进行检测。如果想获取被监控主机的磁盘容量、CPU负载等本地信息,就需要一个代理程序。Linux系统是nrpe,Windows系统是NSClient++。通过代理程序获取监控数据,然后发送到Nagios服务器。3、插件的介绍和应用Nagios的核心模块只支持少量的监控功能,大部分的监控功能都是通过各种插件来完成的。监控插件获取监控数据的方式有两种:主动监控和被动监控。两者的区别在于,在主动检测中,Nagios执行查询命令,而在被动监控中,由外部程序(代理)将检测结果推送到Nagios服务器。主动监控:Nagios监控服务器定时主动从被监控端获取数据。主动监控又可以分为需要在被监控端安装代理和不需要安装代理两种。需要安装Agent:windows平台下的NSClient++,linux平台下的nrpe。无需安装代理:在被监控端启用snmp,或通过其他网络协议进行监控。被动监控:被监控端将自己的监控数据发送给Nagios,分为以下两种:被监控端通过安装nsca定期查看本地的监控项,并将告警数据发送给Nagios服务器。在被监控端配置snmptrap,将相应的trap信息发送给Nagios服务器。Nagios目前主要承担G线的外部检测功能,主动从Service端发起监控和检查。Nagios的大部分监控功能都是通过插件实现的。下面简单介绍一下我们现在使用的一些Nagios插件。(1)Nagiosplugins是一个包含很多插件的软件包。我们现在使用的有:check_nt,用于监控Windows系统中的负载、内存占用、磁盘占用、系统运行时间、某个进程的运行状态。要在Nagios服务器上使用该插件,需要在被监控的Windows系统上安装代理-NSClient++。监控系统负载check_nt-H$HOSTNAME$-p12489-vCPULOAD–l5,80,90监控系统内存使用check_nt-H$HOSTNAME$-p12489-vMEMUSE–w80–c90监控系统磁盘使用check_nt-H$HOSTNAME$-p12489-vUSEDDISKSPACE-ld-c80监控系统运行时间check_nt-H$HOSTNAME$-p12489-vUPTIME监控系统进程check_nt-H$HOSTNAME$-p12489-vPROCSTATE-dSHOWALL-lexplorer.exe-H:指定监听IP-p:NSClient++默认开启端口-v:需要监听的项目-w:wanring阈值-c:临界阈值-l:附加参数(2)check_nrpe,nrpe包包含check_nrpe命令用于获取监控数据。它的工作方式是在被监控端通过nrpe配置文件定义监控命令(这些命令可以在Nagios插件或者自己开发的监控脚本中),然后从Nagios服务器端通过check_nrpe调用这些定义好的监控命令返回监控数据。监控系统负载在被监控的linux端安装nrpe和Nagios插件。通过更改nrpe.conf文件,我们定义命令:command[check_load]=/usr/local/Nagios/libexec/check_load-w15,10,5-c30,25,20注意:check_load包含在Nagiosplugins和只能在linux上运行。-w为警告阈值,-c为临界阈值,三个值分别对应系统1分钟、5分钟、15分钟的负载阈值。(3)check_ping,用于检测主机是否存活,可以简单理解为ping。监控系统网络状态check_ping–H$HOSTNAME$-w100.0,20%-c500.0,60%-w:警告阈值,100代表延迟时间,20%代表丢包率-c:临界阈值,500代表延迟时间,60%代表丢包率。当ping情况达到延迟时间阈值或丢包率阈值时,会发出告警。(4)check_tcp,查看对应的tcp连接时间。check_tcp–H$HOSTNAME$-p7001-w0.05-c0.1-p:指定tcp服务端口-w:对??应时间警告阈值-c:对应时间临界阈值(5)SNMP–Linux:通过snmp监控,无代理需要在被监控终端上安装,只需要在被监控操作系统或被监控应用系统上启用并配置snmp服务即可。Nagios服务器通过snmpwalk命令连接并获取远程系统信息。监控linux磁盘snmp_linux_disk_check.sh-HHOST-Ccommunity-wwarning-ccritical[-ddisk]-H指定要监控的主机IP。-C社区词。-wdiskusagewarningthreshold-cdiskusagecriticalwarningthreshold-d可选,指定磁盘挂载点,如果省略,将检测主机上的所有挂载点。监控linuxCPUsnmp_linux_cpu_check.sh-HHOST-Ccommunity-wwarning-ccritical-H,-C参数含义同上-w为cpu使用率警告阈值-c为cpu使用率严重报警阈值监控linux内存snmp_linux_mem_check_v1.sh-HHOST-Ccommunity-wwarning-ccritical-H,-C同上含义-w为内存使用警告阈值-c为内存使用严重警告阈值4.G行Nagios应用主要承担G线的外部检测功能,主动从Service端发起监控检查。目前监控的对象包括操作系统、数据库、应用程序(端口、页面、日志等)、专用设备等。Nagios的监控架构如下图:图3G行Nagios的监控架构5.总结和outlookNagios是一款轻量级的开源监控软件,可以有效监控Linux、Windows等主机和网络设备,并可以自定义监控脚本,具有部署简单、告警方式灵活、可以监控多种协议等优点。目前业界常用的监控软件有Zabbix、Prometheus等,分别具有支持分布式监控和容器监控的优势。持续优化自助服务和监控标准。
