nagios完全详解监控系统_第1页
nagios完全详解监控系统_第2页
nagios完全详解监控系统_第3页
nagios完全详解监控系统_第4页
nagios完全详解监控系统_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Nagios 监控系统安装及配置文档1. 版本历史Revision Author(s Date Summary of activity1.0 罗辉 2008-11-19 创建本文档2. 参考文档3. 前言做为系统管理员,管理着几十台或几百台服务器在运行。一个非常迫切的需求就是希望了解服务器及服务器上运行的服务的运行状况,在服务器或服务出现当机或停止的时候能够第一时间知道,及时处理。以便最小的减少由此带来的影响和损失。Nagios 就是用来解决这个问题的,在目前的一些监控软件中,Nagios 以其良好的稳定性,强大的功能等,已成为业界监控软件的首选。Nagios 官方网站的描述:Nagios i

2、s an open source host, service and network monitoring program. Who uses it? Lots of people, including many big companies and organizations:Nagios 是一个用来监控主机、服务和网络的开放源码软件,很多大的公司或组织都在使用它。4. Nagios监控原理 上图为Nagios 监控原理图。Nagios 监控可以使用主动模式(Action )和被动模式 (Passive。主动模式主要是自身插件或结合Nrpe 实现,由Nagios 在定义的时间去主动监测被监控端

3、的服务器或服务是否正常。被动模式结合Naca 实现,由Nsca 定时监控服务器或服务,再由Nasa 把结果传至Nagios 。被动模式适合大规模服务器(一般在最少100台以上)需要监控的情况,可有效减少监控服务器的压力。在服务器数量比较少的情况下用主动模式比较方便,因为主要的配置在监控主机的设置就好了,无需在被监控端做过多设置。我们的监控是使用Nagios 结合Nrpe 的主动模式。5. Nagios的安装5.1. YUM方式安装我们的监控服务器是Centos linux 4.8,可用yum 方式安装:# yum install nagios*# chkconfig level 2345 na

4、gios on# service nagios start注:本文后面的配置都是按yum 安装后的环境来配置的。5.2. 源代码方式安装1 安装Nagios# cd nagios-3.06# ./configure -prefix=/usr/local/nagios# make install /安装主要的程序、CGI 及HTML 文件# make install-commandmode /给外部命令访问nagios 配置文件的权限# make install-config /把配置文件的例子复制到nagios 的安装目录# make install-init /把nagios 做成一个运行脚

5、本,使nagios 随系统开机启动或者上面四步可用一行令代替:# make all2 安装nagios 的插件# ./configure -prefix=/usr/local/nagios# make# make install6. Nagios配置文件其实Nagios 只有一个配置文件,就是/etc/nagios/nagios.cfg,其它的配置文件都是以include 的方式包括进nagios.cfg 的。如:# You can specify individual object config files as shown below:cfg_file=/etc/nagios/object

6、s/commands.cfgcfg_file=/etc/nagios/objects/contacts.cfgcfg_file=/etc/nagios/objects/timeperiods.cfgcfg_file=/etc/nagios/objects/templates.cfg# Definitions for monitoring the local (Linux hostcfg_file=/etc/nagios/objects/hosts.cfgcfg_file=/etc/nagios/objects/services.cfgcommands.cfg 是监控命令的配置文件,contac

7、ts.cfg 是监控报警联系人的配置文件,timeperiods.cfg 是时间定义配置文件,templates.cfg 是模板配置文件,这里面定义了一些模板以方便用户使用。Hosts.cfg 是被监控主机的配置文件,services.cfg 是被监控服务的配置文件。唯一的例外是cgi.cfg ,这个文件是与WEB 相关的。6.1. Nagios的WEB 配置# htpasswd -c /etc/nagios/htpasswd.users nagiosadmin 123456建一个WEB 访问的用户之后,在浏览器输入http:/ip/nagios/,输入相应的用户和密码就可以就看到Nagios

8、 的web 界面了。WEB 用到的配置文件是/etc/nagios/cgi.cfg,更改配置可修改这个配置文件。# vi /etc/nagios/cgi.cfguse_authentication=1 #使用用户认证authorized_for_system_information=nagiosadminauthorized_for_configuration_information=nagiosadminauthorized_for_system_commands=nagiosadmin #多个用户之间用逗号隔开authorized_for_all_services=nagiosadmina

9、uthorized_for_all_hosts=nagiosadminauthorized_for_all_service_commands=nagiosadminauthorized_for_all_host_commands=nagiosadmin6.2. hosts.cfgdefine host #这段是用来定义一个被监控的主机。host_name #这一项是用来定义标识主机的名字。我们用这个名字在host group 和service 里标识这个主机。一个主机能定义多个服务。使用适当时,宏$HOSTNAME$里存放了这一项的值。alias #这一项用来定义主机的一个完整名字或描述。主要

10、是和使你能理容易的标识一个主机。使用适当时,宏$HOSTALIAS$里存放了这一项的值。address #这一项是用来定义主机的地址。一般而言是主机的IP 。当然,你也能够使用一个FQDN 来标识你的主机,在没有可访问DNS 服务器服务的情况下这种方法会引起问题。使用适当时,宏$ HOSTADDRESS $里存放了这一项的值。max_check_attempts #这一项用来定义在检测返回结果不是OK 时,nagios 重试检测命令的次数。设置这个值为1会导致nagios 一次也不重试就报警。check_period #这一项用一个time period 项的名字来定义在哪段时间内激活对这台主

11、机的主动检测。time period是定义在别的文件里的配置项, 我们可以在这里用名字来引用她。contact_groups #这是一个联系组列表。我们用联系组的名字来引用她们。多个联系组间用“,”来分隔。notification_interval #这一项用来定义当一个服务仍然down 或unreachable 时,我们间隔多久重发一次通知给联系组。notification_period #这一项用一个time period 定义来标识什么时间段内给联系组送通知。这里我们用time period定义的名字来引用她。notification_options #这一项用来决定发送通知的时机。选项

12、有:d = 当有down 状态时发送通知,u = 当有unreachable 状态时发送通知, r = 当有服务recoveries 时发送通知,f = 当主机启动或停机时发送通知。如果你给一个n 选项,那么永远不会发送通知。define hostgroup #这段是用来定义一个被监控的主机组。hostgroup_name #主机组名称,通常定义得较短alias #主机组别名,通常定义得较长members #主机组成员6.3. services.cfgdefine service #这段是用来定义一个被监控的服务。host_name #主机名称service_description #服务描述

13、check_command #执行命令max_check_attempts #最大失败尝试次数, 值为1时只报警不重新检测normal_check_interval #常规检测间隔时间,默认为60分钟(常规检测是指无论服务状态是否正常,检测次数达到“最大次数”时)retry_check_interval #失败尝试间隔时间,默认为60分钟(失败尝试是指服务状态不正常,检查次数达到“最大次数”时)check_period #检测时间段notification_interval #当服务状态不正常时通知联系人的间隔时间,值为0时不通知联系人notification_period #通知联系人时间段

14、notification_options #通知联系人选项,w 警告,u 未知,c 危急,f 启动和停止,n 不发送通知 contact_groups #联系人组define servicegroup #这段是用来定义一个被监控的服务组。servicegroup_name #服务组名称,通常定义得较短alias #服务组别名,通常定义得较长members #服务组成员6.4. contacts.cfgdefine contact #这段是用来定义一个联系人。contact_name #这个指令用来定义一个联系人的简称。他会在定义contactgroup 时被引用到。在相应的环境中,宏定义$CO

15、NTACTNAME$会包含这个值。alias #这个指令是为了定义一个联系人的具体的描述。在相应的环境中,宏定义$CONTACTALIAS$会包含这个值。host_notification_period #这个指令是为了定义,能够通知Contact 中定义的那个简称联系人,关于主机有问题或者恢复正常状态的时间段。你可以把他想象成能够通知Contact 关于主机的在线时间。service_notification_period #这个指令是为了定义,能够通知Contact 中定义的那个简称联系人,关于服务的问题或恢复正常的时间段。host_notification_options #这个指令为了

16、定义主机在什么状态下会给联系人发通知。各个参数的描述如下:d=当主机的状态处于down 时,发送通知;f=当主机状态处于stop 时发送通知。r=当主机恢复up 状态时发送通知。n=什么状态下都不发送通知(w-warning , u-unknown,c-critical,r-recovery;d-down,u-unreachable 。service_notification_options #这个指令为了定义服务在什么状态下会给联系人发通知。各个参数的描述如下:w=当服务处于警告状态时发送通知 u=当服务的状态处于unknown 时,发送通知;f=当服务状态处于启动和停止时发送通知。c=当服

17、务处于Critical 状态时发送通知。n=什么状态下都不发送通知。host_notification_commands #这个指令是为了定义一个通知联系人关于主机问题或恢复正常的联系手段的一个列表。多个手段之间用逗号隔开。service_notification_commands#这个指令是为了定义一个通知联系人关于服务问题或恢复正常的联系手段的一个列表。多个手段之间用逗号隔开。email #这个指令是为了定义联系人的email 地址。这个将取决于你是如何定义你的notification commands. 它可以用来给联系人发送紧急邮件。在相应的环境中。宏定义$CONTACTEMAIL$将

18、会包含它的值。define contactgroup #这段是用来定义一个联系人组。contactgroup_name #联系组名称,通常定义得较短alias #联系组别名,通常定义得较长members #联系组成员6.5. timeperiods.cfgdefine timeperiodtimeperiod_name #时间段名称,通常定义得较短alias #时间段别名,通常定义得较长sunday #星期日时间段monday #星期一时间段tuesday #星期二时间段wednesday #星期三时间段thursday #星期四时间段friday #星期五时间段saturday #星期六时间

19、段6.6. commands.cfgdefine commandcommand_name #定义命令的简称command_line #定义当服务进行时Nagios 要执行的动作。在命令执行以前,所有合法的宏都要被他们的值代替。7. 用Nrpe 监控Linux 主机7.1. 安装Nrpe# yum -y install nagios-nrpe# chkconfig level 2345 nrpe on# service nrpe start7.2. 配置Nrpe修改Nrpe 配置文件:# vi /etc/nagios/nrpe.cfgcommand 开头只保留两行:commandcheck_lo

20、ad=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20commandcheck_disk=/usr/lib/nagios/plugins/check_disk -w 20 -c 10 -p /第一行是监控系统负载,第二行是监控磁盘空间的。commandcheck_load内的check_load是定义的Nrpe 命令,在监控端的Nrpe 插件可用这个命令来取得执行结果。7.3. 配置nagios1 增加nagios 命令# vi commands.cfg最后增加:define commandcommand_name check_

21、nrpecommand_line /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$2 增加被监控服务器# vi /etc/nagios/objects/hosts.cfgdefine hostuse linux-serverhost_name mysql.server3 增加被监控服务# vi /etc/nagios/objects/services.cfgdefine serviceuse local-servicehost_name mysql.serverservice_description nrpe_dis

22、kcheck_command check_nrpe!check_disknotifications_enabled 1define serviceuse local-servicehost_name mysql.serverservice_description nrpe_loadcheck_command check_nrpe!check_loadnotifications_enabled 1上面配置内的check_load和check_disk是被监控端Npre 的配置文件(commandcheck_load)内定义好的命令。最后使配置生效:# nagios v /etc/nagios/n

23、agios.cfg #配置文件的语法检查# service nagios reload8. 监控Web 及Tomcat 服务监控Web 用Tomcat 服务可用nagios 自带的插件check_http。# vi commands.cfg增加:# check_tomcat command definitiondefine commandcommand_name check_tomcatcommand_line $USER1$/check_http -I $HOSTADDRESS$ -p 8080 $ARG1$# check_http command definitiondefine comm

24、andcommand_name check_httpcommand_line $USER1$/check_http -I $HOSTADDRESS$ -H $HOSTADDRESS$ $ARG1$ # vi services.cfg增加:define serviceuse local-servicehostgroup_name web-serversservice_description check-httpcheck_command check_httpmax_check_attempts 3normal_check_interval 3retry_check_interval 1check

25、_period 24x7notification_interval 60notification_period 24x7notification_options w,u,c,rdefine serviceuse local-servicehost_name l7ejb,l7admin,l7web,l7ds# hostgroup_name l7-serversservice_description check-tomcatcheck_command check_tomcatmax_check_attempts 3normal_check_interval 3retry_check_interva

26、l 1check_period 24x7notification_interval 60notification_period 24x7notification_options w,u,c,r被监控端无需配置,让nagios 使修改后的配置生效便可。9. 监控squid9.1. 下载squid 检测脚本# wget /squid/nagios-plugin/check_squid# chmod 755 check_squid# cp check_squid /usr/lib/nagios/plugins/这个脚本我用的时候有点问题,出现:Parsing原

27、因是:HTML:HeadParser模块在使用parse(方法时,对没有编码的UTF-8会弄混,要保证在传值之前进行适当的编码。解决方式是在my $ua = new LWP:UserAgent;下面加入一行:$ua-parse_head(0;跳过去就好了。9.2. 修改配置文件# vi commands.cfg增加:# squid command definitiondefine command command_name check_squidcommand_line $USER1$/check_squid $ARG1$ $ARG2$ $ARG3$ $HOSTADDRESS$ $ARG4$ $

28、ARG5$ $ARG6$ $ARG7$# vi services.cfg增加:define service use local-serviceservice_description check-squidmax_check_attempts 3normal_check_interval 3retry_check_interval 1check_period 24x7notification_interval 60notification_period 24x7notification_options w,u,c,r被监控端无需配置,让nagios 使修改后的配置生效便可。command_nam

29、e command_line notify-host-by-email /usr/bin/printf %b * Nagios *nnNotification Type: $NOTIFICATIONTYPE$nHost: $HOSTNAME$n State: $HOSTSTATE$nAddress: $HOSTADDRESS$nInfo: $HOSTOUTPUT$nnDate/Time: $LONGDATETIME$n | /bin/mail -s * $NOTIFICATI ONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ * $CONTACTEMAIL$ # notify-service-by-email command definition define command command

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论