一、Nagios简介
Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
Nagios原名为NetSaint,由Ethan Galstad开发并维护至今。NAGIOS是一个缩写形式: "Nagios Ain't Gonna Insist On Sainthood" Sainthood 翻译为圣徒,而"Agios"是"saint"的希腊表示方法。Nagios被开发在Linux下使用,但在Unix下也工作得非常好。
其安装配置在http://www.cnblogs.com/mchina/archive/2013/02/20/2883404.html中已经详细说明,这里不重复描述,针对该文档中部分错误,本文后会上传一份经修改的详细配置文档。
二、Nagios工作原理
Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控、检测功能都是通过各种插件来完成的。
启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回来的状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来。
知道Nagios 是如何通过插件来管理服务器对象后,现在开始研究它是如何管理远端服务器对象的。Nagios 系统提供了一个插件NRPE。Nagios 通过周期性的运行它来获得远端服务器的各种状态信息。它们之间的关系如下图所示:
图1 Nagios 系统与插件NRPE的关系
Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态。安装完成后,在nagios主目录下的/libexec里放有nagios自带的可以使用的所有插件,如,check_disk是检查磁盘空间的插件,check_load是检查CPU负载的,等等。每一个插件可以通过运行./check_xxx –h 来查看其使用方法和功能。
Nagios 通过NRPE 来远端管理服务:
1. Nagios 执行安装在它里面的check_nrpe 插件,并告诉check_nrpe 去检测哪些服务。
2. 通过SSL,check_nrpe 连接远端机子上的NRPE daemon
3. NRPE 运行本地的各种插件去检测本地的服务和状态(check_disk,..etc)
4. 最后,NRPE 把检测的结果传给主机端的check_nrpe,check_nrpe 再把结果送到Nagios状态队列中。
5. Nagios 依次读取队列中的信息,再把结果显示出来。
三、Nagios工作原理技术详解
图2 Nagios监控远程服务器技术详解
四、利用NSClient++监控远程Windows上的“本地信息”
在Nagios的libexec下有check_nt这个插件,它就是用来检查windows机器的服务的。其功能类似于check_nrpe。不过还需要搭配另外一个软件NSClient++,它则类似于NRPE。
NSClient++的原理如下图:
图3 采用check_nt的主动检测原理
图4 采用check_nrpe的主动检测原理
图5 采用Nsca的被动检测原理
五、利用NSClient++自定义监控脚本
例子:自定义DNS服务器监控监控
1)、配置被监控端
1、在被监控的windows主机上,写一个简单的脚本,然后添加到nsclient++的配置文件里面。
脚本准备: 把以下脚本保存到nsclient++安装目录的Scripts子目录中,并命名为check_dns.bat
2、更改nsclient++的主配置文件
在NSC.ini文件中,开放以下选项:
在NSC.ini文件中[External Scripts]下面添加如下行,注意是Excentrnal Scripts,不是Excentrnal Script,一个带s一个不带,不要放错了。
然后重启nsclient++服务,使用命令能看到有5666端口起,表示配置成功
2)、配置监控端
来到nagios监控端,在被监控的主机中添加一个服务
为了能监控成功,可以先测试一下能不能监控到nrpe的版本信息,运行以下命令
如果运行以上命令,出现timeout,如下
可以检查一下到目标主机的端口是不是通的,如果通的,可以加上-t参数,指定超时的时间,可以设置的长一些
如果指定超时时间为60s还不行,那就可能是网络问题了,端口不通或者防火墙没有开户5666端口。有些情况下,使用默认的时间10s可能会出现超时的情况。所以如果出现超时的话,我们可以改一下nrpe命令的定义,自己定义一个超时时间长一些的命令
然后再使用自己定义的这个命令去检测服务,应该就没什么问题了。
参考文章: http://www.cnblogs.com/mchina/archive/2013/02/20/2883404.html