俗话说:工欲善其事,必先利其器。要做好系统管理,使自己的工作更轻松更有效的话,一个好的监控工具是必不可少的了。

 

2002年早些时候,我有幸承包×××某研究所的整个网络维护。当时网络状况十分糟糕,断网情况比较频繁,造成这种情况的原因大致有两种:

·内部网络联网混乱。

·上联到另外一个研究所,那里时不时操作不慎把上连的线路给弄掉了。

为了了解网络是否处于一个可用的状态,我上班的第一件事情就是打开网络收音机,根据声音的有无进行判断。

 

再往后两年,有一些用于远程教育的服务器托管在亦庄某机房。这个机房的服务实在是很糟糕,曾有一段时间,网络服务基本处于无法访问的状态,打电话过去,那边敷衍说机房收到***,马上就会正常。我们不得不暂时相信他的托词,为了知道何时网络能恢复正常,我就在办公室的电脑执行ping服务器ip地址的操作。

 

2005年秋天,我在一个sp公司做系统管理。这里有数百个服务器对外提供服务,并且要求24小时运营保障。这种网络环境下,再用听在线收音机或者ping来判断网络是否正常,是没有什么效果的。幸好,在我接手的时候,已经有了一个监控系统netsaintnagios的早期版本名称),后来我把它升级成最新的nagios。通过逐步完善这个监控平台,取得比较理想的运营效果:只需带着手机,有故障会自动发短信报警。

 

12.1 nagios概述

 

Nagios官方网站的描述:

Nagios is an open source host, service and network monitoring program. Who uses it? Lots of people, including many big companies and organizationsNagios是一个用来监控主机、服务和网络的开放源码软件,很多大的公司和组织都在使用它。

 

首先,我们来看实际工作中需要监控的对象有哪些?在这里我总结出两种类型的监控对象:网络服务监控主机资源监控。网络服务监控可包括主机存活检查、web服务监控、ftp服务监控、数据库服务监控、自定义服务监控等;主机资源监控可包括系统负载、当前ip链接数、磁盘空间使用情况、当前进程数以及自定义的资源监控等。

 

其次,我们再来看nagios监控的表现形式。监控的主要目的是当监控的对象发生故障或资源紧张时及时通知相关人员,以便问题得到迅速的处理。追求的效果就是“在老板和客户发现问题之前得到及时、有效的通知”。假定故障通知来自老板,我想大家都不会很愉快的。Nagios为了方便我们的管理工作,提供了至少3种表现形式:

1web方式,即通过浏览器观看被监控的对象;如正常状态下,其状态(status)是以蓝色填充并显示一个OK

2、邮件通知,发生故障时,到达设定重试次数和探测间隔时间后发送邮件给管理员或相关人员,报告问题的大致情况。

3、手机短信,这是非常有用和及时的功能了;晚上熟睡中,再也没可能看web页面或查阅邮件,可以一旦发生故障,手机短信却能把你随时唤醒。

一般情况下,这3者是同时进行的:上班时间开个浏览器看页面显示、打开邮件程序定时收取邮件、手机24小时在线。

 

最后,我们以一个实际场景来展示nagios的强大功能,希望对大家的系统管理工作有所帮助。

 

12.2 nagios监控场景描述

 

为了描述问题方便,我们假定有5个服务器要监控(web服务器、数据库服务器、邮件服务器、nfs文件共享服务器),需要对几个服务器的服务进行监控,同时监控每个服务器的资源使用情况,包括负载情况、磁盘分区使用情况、总进程数、当前ip连接数这个4个项目(当然你也可以自己写脚本监控更多的资源对象)。这些服务器除了系统管理员而外,还有其他用户(如程序员)对各自的服务器进行维护;当发生故障的时候,维护网站的程序员能收到报警邮件和报警短信,而管理数据库管理员则无需收到这些报警,同时维护程序的用户可以以自己的帐号登陆监控服务器,通过web方式察看自己所管服务器的状态(只能看自己的而看不到别人管辖服务器的状态)。

 

通过上面的描述,我们可以整理出表12-1

机器名称

角色

可查看状态及接受报警信息的用户

所需工具

Nagios服务器

监控端

系统管理员(SA)

Apachenagiosnagios pluginsendmailperl

邮件服务器

被监控端

系统管理员、邮件管理员

Nrpenagios plugin、自定义脚本等

数据库服务器

被监控端

系统管理员、dba

Nrpenagios plugin、自定义脚本等

Web服务器

被监控端

系统管理员、webmaster

Nrpenagios plugin、自定义脚本等

Nfs共享服务器

被监控端

系统管理员

Nrpenagios plugin、自定义脚本等

缓存服务器(squid

被监控端

系统管理员、webmaster

Nrpenagios plugin、自定义脚本等

12-1 监控场景汇总

 

配置好nagios和被监控机器后,其在浏览器里的基本输出与图12-1类似: