《Nagios 使用说明》由会员分享,可在线阅读,更多相关《Nagios 使用说明(28页珍藏版)》请在金锄头文库上搜索。
1、Nagios系统网络监控程序第一章Nagios简介什么是NagiosNagios是一个用来监控主机、服务和网络的开放源码软件。它可以监视您指定的主机和服务,当被监视对象发生任何问题或问题被解决时发出提示信 息。它的主要功能有监控网络服务(smtp、pop3、http、nntp、ping等等)、监控主机资源(进程负载、硬盘空间 使用情况等等)、当发现问题或问题解决时通过多种形式发出提示信息(Email、SMS)。第一章Nagios简介几款网络监控软件的比较Nagios报警功能强大绘图功能很弱,扩展性强,但是要扩展需要修改配置文件,不能在web修改配置。OpenNMSJava实现,数据库不好用。C
2、acti绘图功能很强,但是只支持snmp,配置自定义的图很麻烦。第一章Nagios简介Nagios原理nagios的功能是监控服务和主机,但是他自身并不包括这部分功能的代码,所有的监控、检测功能都是有插件来完成的。再说报警功能,如果监控系统发现问题不能报警那就没有意义了,所以报警也是nagios很重要的功能之一。但是,同样的,nagios自身也没有报警部分的代码,甚至没有插件,而是交给用户或者其他相关开源项目组去完成。nagios安装,是指基本平台,也就是nagios软件包的安装。它是监控体系的框架,也是所有监控的基础。打开nagios官方的文档,会发现nagios基本上没有什么依赖包,只要求
3、系统是linux或者其他nagios支持的系统。不过如果你没有安装apache(http服务),那么你就没有那么直观的界面来查看监控信息了,所以apache姑且算是一个前提条件。第一章Nagios简介Nagios监控原理Nagios的监控主要为对自己本身的监控和对远程服务器的监控。对本身的监控是通过Nagios插件来完成的。对于远程服务器的监控主要分为几大部分:监控远程系统上的对外开放的服务监控远程系统上的对外开放的服务ftp,ssh,http这些都是向外开放的服务,即使不用nagios我自己也可以试的出来,随便找一台机器看能不能访问这些服务就行了。对于这些对外开放的服务,也可以用Nagios
4、服务来完成。监控远程系统上的本地信息监控远程系统上的本地信息对于磁盘容量,cpu负载,当前登陆用户数量,你如果不登录这台机器原则上是不可能知道的,因为他们是”本地信息”。对于这样的“本地信息”,nagios只能监测自己所在的主机,而对其他的机器则显得有点无能为力。毕竟没得到被控主机的适当权限是不可能得到这些信息的。为了解决这个问题,nagios有这样一个附加组件NRPE。用它就可以完成对linux类型主机“本地信息”的监控。同时,nagios也有这样的一个附加组件 NSClient。用它就可以完成对windows类型主机“本地信息”的监控。第一章Nagios简介NRPE原理第一章Nagios简
5、介NRPE总共由两部分组成总共由两部分组成:check_nrpe 插件,位于在监控主机上。NRPE daemon,运行在远程的linux主机上(通常就是被监控机)按照上图,整个的监控过程如下:当nagios需要监控某个远程linux主机的服务或者资源情况时1.nagios会运行check_nrpe这个插件,告诉它要检查什么。2.check_nrpe插件会连接到远程的NRPE daemon,所用的方式是SSL。3.NRPE daemon会运行相应的nagios插件来执行检查。4.NRPE daemon将检查的结果返回给check_nrpe插件,插件将其递交给nagios做处理。注意:NRPE d
6、aemon需要nagios插件安装在远程的linux主机上,否则,daemon不能做任何的监控。需要在被监控主机上安装nagios插件,NRPE。在监控主机上安装check_nrpe插件。第一章Nagios简介Windows监控原理第一章Nagios简介NRPE与NSClient的区别:在nagios的libexec下有check_nt这个插件,它就是用来检查windows机器的服务的,其功能类似于上一章讲的check_nrpe。不过还需要搭配另外一个软件NSClient,它则类似于NRPE。可以看到,NSClient与nrpe最大的区别就是:被监控机上安装有nrpe,并且还有插件,最终的监控
7、是由这些插件来进行的。当监控主机将监控请求发给nrpe后,nrpe调用插件来完成监控。NSClient则不同,被监控机上只安装NSClient,没有任何的插件。当监控主机将监控请求发给NSClient后,NSClient直接完成监控,所有的监控是由NSClient完成的。这也说明了NSClient的一个很大的问题,不灵活,没有可扩展性。它只能完成自己本身包含的监控操作,不能由一些插件来扩展。好在NSClient已经做的不错了,基本上可以完全满足我们的监控需要。第二章 Nagios安装和配置Nagios安装需要安装的软件:nagios-3.0.2.tar.gznagios-plugins-1.4
8、.11.tar.gznrpe-2.8.1.tar.gzNSClient+-0.2.7.zip安装Nagios的前提条件:ApacheGCC compilerGD development libraries第二章 Nagios安装和配置Nagios安装安装Nagios主程序。解压,CD到Nagios目录下。编译,指定安装目录为/usr/local/nagios,./configure -prefix=/usr/local/nagiosmake all,会输出信息提示你如何安装。make installmake install-initmake install-commandmodemake in
9、stall-config程序验证是否被安装。切换目录到安装路径(这里是/usr/local/nagios),看是否存在 etc、bin、sbin、share、var这五个目录,如果存在则可以表明程序被正确的安装到系统了。第二章 Nagios安装和配置各目录简要说明binNagios执行程序所在目录,nagios文件即为主程序etcNagios配置文件位置 sbinNagios Cgi文件所在目录,也就是执行外部命令所需文件所在的目录shareNagios网页文件所在的目录第二章 Nagios安装和配置安装插件nagios-plugins-1.4.9解压,cd nagios-plugins-1.
10、4.9./configure -prefix=/usr/local/nagios/makemake install安装后可以在/usr/local/nagios/libexec/目录下看到所有的插件。apache配置将apache的运行用户加到nagios组里面。在apache conf.d目录下安装nagios web配置文件。make install-webconf为nagios web接口创建一个nagiosadmin账号,记住你给这个账号的密码。htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin重启apache使新设
11、置生效。service httpd restart第二章 Nagios安装和配置Nagios典型配置Nagios安装完成了,但是还需要配置。修改nagios的主配置文件nagios.cfg。修改CGI脚本控制文件cgi.cfg。定义监控时间段,创建配置文件timeperiods.cfg。定义联系人,创建配置文件contacts.cfg。第二章 Nagios安装和配置nagios.cfg配置文件修改注释行 #cfg_file=/usr/local/nagios/etc/localhost.cfg2,然后把下面几行的注释去掉:cfg_file=/usr/local/nagios/etc/conta
12、ctgroups.cfg /联系组配置文件路径cfg_file=/usr/local/nagios/etc/contacts.cfg /联系人配置文件路径cfg_file=/usr/local/nagios/etc/hostgroups.cfg /主机组配置文件路径cfg_file=/usr/local/nagios/etc/hosts.cfg /主机配置文件路径cfg_file=/usr/local/nagios/etc/services.cfg /服务配置文件路径cfg_file=/usr/local/nagios/etc/timeperiods.cfg /监视时段配置文件路径Nagios
13、是主要的配置文件,用于引用这些配置文件,如果没有反注释掉某个配置文件,那么那个配置文件就是无效的。改check_external_commands=0为check_external_commands=1 .这行的作用是允许在web界面下执行重启nagios、停止主机/服务检查等操作。把command_check_interval的值从默认的15s改成command_check_interval=60s,这个命令是检查时间的间隔,不要太长也不要太短。第二章 Nagios安装和配置cgi.cfgcgi.cfg的作用是控制相关cgi脚本。设置use_authentication=1,其他配置已经默认
14、配置好了。如url_html_path=/nagios,physical_html_path=/usr/local/nagios/share,main_config_file=/usr/local/nagios/etc/nagios.cfg第二章 Nagios安装和配置timeperiods.cfg(时间的配置)define timeperiod timeperiod_name 24x7 /时间段的名称,这个地方不要有空格 alias 24 Hours A Day,7Days A Week sunday 00:00-24:00 monday 00:00-24:00 tuesday 00:00-
15、24:00 wednesday 00:00-24:00 thursday 00:00-24:00 friday 00:00-24:00 saturday 00:00-24:00 define timeperiod timeperiod_name workhours alias Normal Work Hours monday 09:00-17:00 tuesday 09:00-17:00 wednesday 09:00-17:00 thursday 09:00-17:00 friday 09:00-17:00 第二章 Nagios安装和配置define timeperiod name us-h
16、olidays timeperiod_name us-holidays alias U.S. Holidays january 1 00:00-00:00 ; New Years monday -1 may 00:00-00:00 ; Memorial Day (last Monday in May) july 4 00:00-00:00 ; Independence Day monday 1 september 00:00-00:00 ; Labor Day (first Monday in September) thursday -1 november 00:00-00:00 ; Than
17、ksgiving (last Thursday in November) december 25 00:00-00:00 ; Christmas define timeperiod timeperiod_name 24x7_sans_holidays alias 24x7 Sans Holidays use us-holidays ; Get holiday exceptions from other timeperiod sunday 00:00-24:00 monday 00:00-24:00 tuesday 00:00-24:00 wednesday 00:00-24:00 thursd
18、ay 00:00-24:00 friday 00:00-24:00 saturday 00:00-24:00 第二章 Nagios安装和配置contacts.cfg配置define contact contact_name gerard.chen /联系人的名称,这个地方不要有空格 alias nagios admin service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r host_notification_options d,u,r service
19、_notification_commands notify-by-email host_notification_commands host-notify-by-email email define contactgroup contactgroup_name sagroup /联系人组的名称,同样不能空格 alias Nagios Administrators /别名 members gerard.chen /组的成员,来自于上面定义的contacts.cfg,/如果有多个联系人则以逗号相隔 第二章 Nagios安装和配置创建了一个名为gerard.chen的联系人,下面列出其中重要的几个
20、选项做说明:service_notification_period 24x7服务出了状况通知的时间段,这个时间段就是上面在timeperiods.cfg中定义的。host_notification_period 24x7主机出了状况通知的时间段,这个时间段就是上面在timeperiods.cfg中定义的。service_notification_options w,u,c,r当服务出现w报警(warning),u未知(unkown),c严重(critical),或者r从异常情况恢复正常,在这四种情况下通知联系人。host_notification_options d,u,r当主机出现d当机(d
21、own),u返回不可达(unreachable),r从异常情况恢复正常,在这3种情况下通知联系人。service_notification_commands notify-by-email服务出问题通知采用的命令notify-by-email,这个命令是在commands.cfg中定义的,作用是给联系人发邮件。host-notify-by-email同上,主机出问题时采用的也是发邮件的方式通知联系人。email 。很明显,联系的人email地址。alias是联系人别名。按照上面的方式简单的复制修改就可以创建多个联系人了。第二章 Nagios安装和配置定义被监控主机。定义被监控主机。系统本身自带
22、了localhost.cfg,windows.cfg,printer.cfg,switch.cfg,以及所有的模板配置templates.cfg。具体的定义:利用了继承关系define host use linux-server ; Name of host template to use ; This host definition will inherit all variables that are defined ; in (or inherited by) the linux-server host template definition. host_name localhost a
23、lias localhost address 127.0.0.1 模板定义:define host name generic-host ; The name of this host template notifications_enabled 1 ; Host notifications are enabled event_handler_enabled 1 ; Host event handler is enabled flap_detection_enabled 1 ; Flap detection is enabled failure_prediction_enabled 1 ; Fa
24、ilure prediction is enabled process_perf_data 1 ; Process performance data retain_status_information 1 ; Retain status information across program restarts retain_nonstatus_information 1 ; Retain non-status information across program restarts notification_period 24x7 ; Send host notifications at any
25、time register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE! 第二章 Nagios安装和配置Service模板定义:define service name generic-service ; The name of this service template active_checks_enabled 1 ; Active service checks are enabled passive_checks_enabled 1 ; Passive service checks are
26、 enabled/accepted parallelize_check 1 ; Active service checks should be parallelized (disabling this can lead to major performance problems) obsess_over_service 1 ; We should obsess over this service (if necessary) check_freshness 0 ; Default is to NOT check service freshness notifications_enabled 1
27、 ; Service notifications are enabled event_handler_enabled 1 ; Service event handler is enabled flap_detection_enabled 1 ; Flap detection is enabled failure_prediction_enabled 1 ; Failure prediction is enabled process_perf_data 1 ; Process performance data retain_status_information 1 ; Retain status
28、 information across program restarts retain_nonstatus_information 1 ; Retain non-status information across program restarts is_volatile 0 ; The service is not volatile check_period 24x7 ; The service can be checked at any time of the day max_check_attempts 3 ; Re-check the service up to 3 times in o
29、rder to determine its final (hard) state normal_check_interval 10 ; Check the service every 10 minutes under normal conditions retry_check_interval 2 ; Re-check the service every two minutes until a hard state can be determined contact_groups admins ; Notifications get sent out to everyone in the ad
30、mins group notification_options w,u,c,r ; Send notifications about warning, unknown, critical, and recovery events notification_interval 60 ; Re-notify about service problems every hour notification_period 24x7 ; Notifications can be sent out at any time register 0 ; DONT REGISTER THIS DEFINITION -
31、ITS NOT A REAL SERVICE, JUST A TEMPLATE! 第二章 Nagios安装和配置具体Service的定义define service use generic-service ; Name of service template to use host_name nagios-server service_description apache is_volatile 0 check_period 24x7 max_check_attempts 1 normal_check_interval 1 retry_check_interval 1 contact_grou
32、ps admins/联系人组 notification_options w,u,c,r/需要通知的选项 notification_interval 960 notification_period 24x7 /timeperiods.cfg定义 check_command check_http!100.0,20%!500.0,60% /所用的命令,是commands.cfg中定义的 第二章 Nagios安装和配置max_check_attempts这个值代表最大的检查次数,讲的更白话一点,也就是nagios利用上面的命令来检测这个服务。当检查时发现该服务异常时,因为有可能只是一时网络太拥挤,或是
33、一些风吹草动,让service受了点影响,所以不要马上把service判断为情况危急,而是多试几次,这里如果定义为5,那就是至少试5次的意思。normal_check_interval顾名思义,这里是用来设时间的问题,也就是说,如果这里定义为3,那这一次检查和下一次检查之间,所隔的时间为3分钟。默认没有写单位的话就是以分钟为单位,当然也可以以秒为单位,比如30s。retry_check_interval当状态发生改变,从OK的状态变化到不OK的状态的时候,nagios提供给我们一个改变监控频率的功能。这一个频率的改变可以是变快或者变慢,你可以自由的设定,这是一个很好的弹性,帮助我们可以更准确的
34、判断问题的发生。但是这一个选项是在retry发生之时才会生效。就好像我们上面所说的,当第一次不OK的状态发生时,此时过度的soft状态,nagios会开始用max_check_attempts里所设的值开始为retry的次数倒数,此时监控的频率也会发生改变,改变成这一个值里所设定的。当retry的次数到达了max_check_attempts-1时,如果状态还是不OK,那nagios就会将这个不OK的状态过度到hard状态。并且恢复监控的频率为我们在check_interval里所设的频率。第二章 Nagios安装和配置配置完所有测试后,Nagios运行之前需要检测下:/usr/local/n
35、agios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 如果没有问题,就可以启动nagios服务。第二章 Nagios安装和配置Nagios插件nagios本身并没有监控的功能,所有的监控是由插件完成的,插件将监控的结果返回给nagios,nagios分析这些结果,以web的方式展现给我们,同时提供相应的报警功能(这个报警的功能也是由插件完成的)。所有的这些插件是一些实现特定功能的可执行程序,默认安装的路径是/usr/local/nagios/libexec。这些程序都是可以独立执行的,使用方法可以通过”命令名 h”来查看。我们在定义某个监控项
36、目时,所用的监控命令都是来自commands.cfg的,而commands.cfg中定义的监控命令就是使用的这些插件。例如./check_disk -w 10% -c 5% /命令的含义是检查像commands.cfg有个定义:define command command_name check-host-alive command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 1 command_name check-host-alive:这句话的意思是定义的命令名是check-host-ali
37、ve,也就是我们在services.cfg中使用的名称,执行的操作是:$USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 1其中$USER1$是在resource.cfg文件中定义的,代表插件的安装路径.就如我们上面看到的那样$USER1$=/usr/local/nagios/libexec,至于$HOSTADDRESS$,则默认被定义为监控主机的地址.简单的说,我们在services.cfg中定义了对某个主机执行check-host-alive命令,实际上就是执行了/usr/local/nagios/libe
38、xec/ check_ping -H 该主机的ip地址 -w 3000.0,80% -c 5000.0,100% -p 1第二章 Nagios安装和配置再看一个命令,check_local_diskdefine command command_name check_local_disk command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$ check_local_disk实际上是执行的check_disk插件。这里的$ARG1$, $ARG2$, $ARG3$是什么意思呢?在之前我们已经提到了这个check_disk这个插件
39、的用法,-w的参数指定磁盘剩了多少是警告状态,-c的参数指定剩多少是严重状态,-p用来指定路径。在使用check-host-alive的时候,只需要在services.cfg中直接写上这个命令名check-host-alive。后面没任何的参数。而使用check_local_disk则不同,在services.cfg中这要这么写:check_local_disk!10%!5%!/在命令名后面用!分隔出了3个参数,10%是$ARG1$的值,5%是$ARG2$的值,/ 是$ARG3$的值。简单的理解就是:services.cfg定义监控项目用某个命令这个命令必须在commands.cfg中定义定义
40、这个命令时使用了libexec下的插件第三章总结Nagios的优点:Nagios的优点很明显,插件的可扩展性以及开源社区的支持,让Nagios的功能无比强大。各个插件可在http:/www.nagiosexchange.org/cgi-bin/page.cgi?d=1查找。而且Nagios配置灵活,运行效率高,报警系统强。Nagios的缺点:Nagios的缺点就是图形展现能力不足,配置相当麻烦,不能通过web接口进行配置,只能对配置文件配置,(可以通过shell来批量写配置文件。)Nagios在Box上的可行性。Box配置比较固定,而且每个Box里面配置基本一致,Nagios主机可以复制。对于Box,报警功能要求比较高,而图形展现功能不是特别强烈。