一、nagiox介绍

1、Nagios可以监控的功能有:

  1. 监控网络服务(SMTP、POP3、HTTP、NNTP、PING等);
  2. 监控主机资源(处理器负荷、磁盘利用率等);
  3. 简单地插件设计使得用户可以方便地扩展自己服务的检测方法;
  4. 并行服务检查机制;
  5. 具备定义网络分层结构的能力,用"parent"主机定义来表达网络主机间的关系,这种关系可  被用来发现和明晰主机宕机或不可达状态;
  6. 当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式);
  7. 可以定义一些处理程序,使之能够在服务或者主机发生故障时起到预防作用;
  8. 自动的日志滚动功能;
  9. 可以支持并实现对主机的冗余监控;
  10. 可选的 WEB 界面用于查看当前的网络状态、通知和故障历史、日志文件等;
  11. 可以通过手机查看系统监控信息;
  12. 可指定自定义的事件处理控制器;

2、Nagios工作原理

Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控,检测功能都是通过各种插件来完成的。

启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回来的状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过Web显示出来。

Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态。按章完成后,在 Nagios主目录下的/libexec里放有Nagios自带的可以使用的所有插件,如:check_disk是检查磁盘空间的插件,check_load是检查CPU负载的,等等。每一个插件可以通过运行./check_xxx_ -h来查看其使用方法和功能。

Nagios可以识别四种状态返回信息,即0(ok)表示状态正常/绿色,1(Warning)表示出现警告/黄色,2(Critical)表示出现严重错误/红色,3(Unknown)表示未知错误/深黄色。Nagios根据插件返回来的值,来判断监控对象的状态,并通过web显示出来,以供管理员及时发现故障。

监控服务器指标 监控服务器主要功能_配置文件

 

再说报警功能,如果监控系统发现问题不能报警那就没有意义了,所以报警也是Nagios很重要的功能之一。但是,同样的,Nagios自身也没有报警部分 的代码,甚至没有插件,而是交给用户或者其他相关开源项目组去完成的。

Nagios安装,是指基本平台,也就是Nagios软件包的安装,它是监控体系的框架,也是所有监控的基础。

打开Nagios的官方文档,会发现Nagios基本上没有什么依赖包,只要求系统是Linux或者其他

Nagios支持的系统。㘝如果你没有安装Apache(HTTP服务),那么你就没有那么直观的界面来查看监控信息了,所以Apache姑且算是一个前提条件。关于Apache的安装,网上有很多,安装完看看是否正常运行就可以了。

知道Nagios是如何通过插件来管理服务器对象后,现在开始研究它是如何管理远程服务器对象的。Nagios通过周期性的运行它来获得远端服务器的各种状态信息。他们之间的关系如下图所示:

NSCA:Nagios service check acceptor

NDOUtils:从一个或多个Nagios实例导出当前和历史数据到MySQL数据库。

监控服务器指标 监控服务器主要功能_ios_02

Nagios通过NRPE来远程管理服务

1.Nagios执行安装在它里面的check_nrpe插件,并告诉check_nrpe去检测那些服务。

2.通过SSL,check_nrpe链接远端机子上的NRPE的deamon

3.NRPE运行本地的各种插件去检测本地的服务和状态(check...disk...etc)

4.最后,NRPE把检测的结果传给主机端的check_nrpe,check_nrpe再把结果送到Nagios状态队列中。

5.Nagios依次读物队列中的信息,再把结果显示出来。

nagios监控服务器的配置文件:

[root@localhost ~]# cd /usr/local/nagios/etc

[root@localhost etc]# ls

cgi.cfg  nagios.cfg  objects  resource.cfg

cgi.cfg #全局配置文件,定义软件接口,安全认证,监听地址,监听端口等

nagios.cfg

#配置文件信息,保存其他模块配置文件路径,日志文件,PID文件等文件路径

nagios.cfg主配置文件nagios.cfg是nagios服务端的主配置文件,它可以定义其它*.cfg配置文件的位置,是否启用性能监控(收集监控数据以生成图表),性能数据处理指令,性能数据文件格式模板及存放位置等,配置nagios日志文件存放的信息级别及位置,nagios进程的启动用户及组,日志文件的切割方式,显示的日期格式等等。如果只是实现对主机及服务的监控,不出监控图的话,默认可以不改动这一文件

[root@localhost etc]# cd objects/

[root@localhost objects]# ls

commands.cfg  localhost.cfg  switch.cfg     timeperiods.cfg

contacts.cfg  printer.cfg    templates.cfg  windows.cfg

objects/commands.cfg #保存测试语句模块

objects/contacts.cfg #保存管理员的联系方式

objects/localhost.cfg #本地主机测试选项

objects/printer.cfg #网络打印机测试选项

objects/switch.cfg #路由交换设备测试选项

objects/templates.cfg #监控任务模板,测试方式,测试周期,报错提醒等objects/timeperiods.cfg #监控测试时间 7*24 5*24 5*12

objects/windows.cfg #windows服务器测试选项

各配置文件的作用:[root@localhost objects]# vim templates.cfg

templates.cfg模板定义文件templates.cfg是监控的模板文件,对所有主机、服务、联系人的定义为简化配置都可以根据需求定制相应的模板,然后在主机、服务、联系人配置文件中去引用模板即可。下面进行简要说明:

监控服务器指标 监控服务器主要功能_配置文件_03

 

 

监控服务器指标 监控服务器主要功能_配置文件_04

 

监控服务器指标 监控服务器主要功能_配置文件_05

 

监控服务器指标 监控服务器主要功能_linux_06

 

监控服务器指标 监控服务器主要功能_监控服务器指标_07

 

以上便是templates.cfg文件中的主要内容,可以按需修改已定义的模板或者新定义模板。其中涉及到部分对command的定义,它是需要在commands.cfg文件中进行定义的

commands.cfg命令定义文件commands.cfg文件可以包含监控时需要用到的指令的定义,由这些指令来完成具体的监控工作,它们可以在services.cfg文件中被调用。配置示例如下:

监控服务器指标 监控服务器主要功能_linux_08

 这里有一个名为check_nrpe的command特别重要:需要指定它才能够启动本地的check_nrpe去连接被监控端上的nrpe daemon,并在被监控端执行相应的命令,需要自己添加,默认commands.cfg文件里是没有的

监控服务器指标 监控服务器主要功能_ios_09

 contacts.cfg联系人定义文件contracts.cfg这一文件定义了当需要发送告警通知时,需要发给哪些联系人组,然后不同的组里可以分别定义相应的成员,默认情况下会将通知发给名为admins的组,里面包含的email地址即为接收告警通知邮件的地址。示例如下:

监控服务器指标 监控服务器主要功能_监控类_10

 timeperiods.cfg时间段模板定义文件timeperiods.cfg主要用来对要进行监控的时间段以及可以发送通知的时间段进行定义,很灵活很方便。

监控服务器指标 监控服务器主要功能_监控类_11

 localhost.cfg监控服务器配置文件localhost.cfg这个文件是用来定义对这台nagios服务器的哪些资源及服务进行监控的,它主要包含两部分的定义,针对host级别的和针对service级别的。示例如下:

监控服务器指标 监控服务器主要功能_监控类_12

 

在nagios的配置过程中涉及的几个定义有主机、主机组、服务、服务组、联系人、联系人组、监控时间和监控命令等。从这些定义可以看出,nagios各个配置文件之间互为关联、彼此引用的。成功配置出一台nagios监控系统,必须要弄清楚每个配置文件之间依赖与被依赖的关系,最重要的有四点:

1.定义监控那些主机,主机组,服务和服务组

2.定义这个监控要用什么命令实现

3.定义监控的时间段

4.定义主机或服务器出现问题时要通知的联系人和联系人祖