对每个配置文件进行讲解,深入理解nagios,好好学习,天天向上~

(1)templates.cfg文件

nagios主要用于监控主机资源以及服务,在nagios配置中称为对象,为了不必重复定义一些监控对象,Nagios引入了一个模板配置文件,将一些共性的属性定义成模板,以便于多次引用。这就是templates.cfg的作用。下面详细介绍下templates.cfg文件中每个参数的含义:

define contact {

name   generic-contact   #联系人名称,

service_notification_period   24x7   #当服务出现异常时,发送通知的时间段,这个时间段“7x24"在timeperiods.cfg文件中定义

host_notification_period    24x7#  当主机出现异常时,发送通知的时间段,这个时间段“7x24"在timeperiods.cfg文件中定义service_notification_options  w,u,c,r

#这个定义的是“通知可以被发出的情况”。w即warn,表示警告状态,u即unknown,表示不明状态,c即criticle,表示紧急状态,r即recover,表示恢复状态。也就是在服务出现警告状态、未知状态、紧急状态和重新恢复状态时都发送通知给使用者。

host_notification_options   d,u,r

#定义主机在什么状态下需要发送通知给使用者,d即down,表示宕机状态,u即unreachable,表示不可到达状态,r即recovery,表示重新恢复状态。

service_notification_commands   notify-service-by-email

#服务故障时,发送通知的方式,可以是邮件和短信,这里发送的方式是邮件,其中“notify-service-by-email”在commands.cfg文件中定义。

host_notification_commands  notify-host-by-email

#主机故障时,发送通知的方式,可以是邮件和短信,这里发送的方式是邮件,其中“notify-host-by-email”在commands.cfg文件中定义。

register  0 }

define  host{

name  generic-host

#主机名称,这里的主机名,并不是直接对应到真正机器的主机名,乃是对应到在主机配置文件里所设定的主机名。notifications_enabled 1

event_handler_enabled  1

flap_detection_enabled 1

failure_prediction_enabled 1

process_perf_data1retain_status_information 1

retain_nonstatus_information 1

notification_period 24x7    #指定“发送通知”的时间段,也就是可以在什么时候发送通知给使用者。

register0

}

define host {

name  linux-server   #主机名称

use  generic-host

#use表示引用,也就是将主机 generic-host的所有属性引用到linux-server中来,在nagios配置中,很多情况下会用到引用。

check_period  24x7#这里的check_period告诉nagios检查主机的时间段

check_interval  5 #nagios对主机的检查时间间隔,这里是5分钟。

retry_interval 1 #重试检查时间间隔,单位是分钟。

max_check_attempts 10 #nagios对主机的最大检查次数,也就是nagios在检查发现某主机异常时,并不马上判断为异常状况,而是多试几次,因为有可能只是一时网络太拥挤,或是一些其他原因,让主机受到了一点影响,这里的10就是至少试10次的意思。

check_command  check-host-alive  #指定检查主机状态的命令,其中“check-host-alive”在commands.cfg文件中定义。

notification_period workhours

#主机故障时,发送通知的时间范围,其中“workhours”在timeperiods.cfg中进行了定义,下面会陆续讲到。notification_interval 120

#在主机出现异常后,故障一直没有解决,nagios再次对使用者发出通知的时间。单位是分钟。如果你觉得,所有的事件只需要一次通知就够了,可以把这里的选项设为0notification_optionsd,u,r#定义主机在什么状态下可以发送通知给使用者,d即down,表示宕机状态,u即unreachable,表示不可到达状态,r即recovery,表示重新恢复状态。

contact_group sadmins#指定联系人组,这个“admins”在contacts.cfg文件中定义。

register   0

}

define service{

name   generic-service   #定义一个服务名称

active_checks_enabled 1

passive_checks_enabled 1

parallelize_check 1

obsess_over_service 1

check_freshness 0

notifications_enabled 1

event_handler_enabled 1

flap_detection_enabled 1

failure_prediction_enabled 1

process_perf_data 1

retain_status_information  1

retain_nonstatus_information  1

is_volatile  0

check_period   24x7  #这里的check_period告诉nagios检查服务的时间段。

max_check_attempts   3   #nagios对服务的最大检查次数。

normal_check_interval   10

#此选项是用来设置服务检查时间间隔,也就是说,nagios这一次检查和下一次检查之间所隔的时间,这里是10分钟。

retry_check_interval  2

#重试检查时间间隔,单位是分钟。

contact_groupsadmins#指定联系人组,同上。

notification_options  w,u,c,r#这个定义的是“通知可以被发出的情况”。w即warn,表示警告状态,u即unknown,表示不明状态,c即criticle,表示紧急状态,r即recover,表示恢复状态。也就是在服务出现警告状态、未知状态、紧急状态和重新恢复后都发送通知给使用者。

notification_interval   60  #在服务出现异常后,故障一直没有解决,nagios再次对使用者发出通知的时间。单位是分钟。如果你认为,所有的事件只需要一次通知就够了,可以把这里的选项设为0。notification_period  24x7

#指定“发送通知”的时间段,也就是可以在什么时候发送通知给使用者。

register  0

}

(2)resource.cfg文件

resource.cfg是nagios的变量定义文件,文件内容只有一行:$USER1$=/usr/local/nagios/libexec其中,变量$USER1$指定了安装nagios插件的路径,如果把插件安装在了其它路径,只需在这里进行修改即可。需要注意的是,变量必须先定义,然后才能在其它配置文件中进行引用。

3理解Nagios宏及其工作机制

Nagios配置非常灵活,继承和引用是一大特征,另一个重要特征就是可以在命令行的定义里使用宏,通过定义宏,nagios可以灵活的获取主机、服务和其它对象的信息。宏的工作机制在执行命令之前,nagios将对命令里的每个宏替换成它们应当取得的值。这种宏替换发生在Nagios执行各种类型的宏时候。例如主机和服务的检测、通知、事件处理等。宏的分类:默认宏、按需而成的宏、用户自定制宏等。默认宏:主机IP地址宏当在命令定义中使用主机或服务宏时,宏将要执行所用的值指向主机或服务所带有值。看下面这个例子,假定在check_ping命令定义里使用了一个主机对象,例如这样:

define host{

host_name  ixdba

address 192.168.12.246

check_command    check_ping...}

define command{

command_name  check_ping

command_line   /usr/local/nagios/libexec/check_ping -H $HOSTADDRESS$ -w 100.0,90% -c 200.0,60%}

那么执行这个主机检测命令时展开并最终执行的将是这样的:/usr/local/nagios/libexec/check_ping -H 192.168.12.246 -w 100.0,90% -c 200.0,60%

命令参数宏同样你可以向命令传递参数,这样可以保证命令定义更具通用性。参数指定在对象(象主机或服务)中定义,用一个“!”来分隔,例如这样:

define service{

host_name linuxbox

service_description  PING

check_command    check_ping!200.0,80%!400.0,40%...

}

在上例中,服务的检测命令中含有两个参数(请参考$ARGn$宏),而$ARG1$宏将是"200.0,80%",同时$ARG2$将是"400.0,40%"(都不带引号)。假定使用之前的主机定义并这样来定义你的check_ping命令:

define command{

command_name  check_ping

command_line   /usr/local/nagios/libexec/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$}

那么对于服务的检测命令最终将是这样子的:/usr/local/nagios/libexec/check_ping -H 192.168.12.246 -w 200.0,80% -c 400.0,40%

Nagios可用的全部的宏

主机宏$HOSTNAME$主机简称(如"web"),取自于主机定义里的host_name域$HOSTADDRESS$主机地址。取自于主机定义里的address域

服务宏$SERVICESTATE$ 服务状态描述,有w,u,c$SERVICEDESC$对当前服务的描述

联系人宏$CONTACTNAME$表示联系人,在联系人文件中定义

通知宏$NOTIFICATIONTYPE$返回下面信息:("PROBLEM", "RECOVERY", "ACKNOWLEDGEMENT", "FLAPPINGSTART", "FLAPPINGSTOP", "FLAPPINGDISABLED", "DOWNTIMESTART", "DOWNTIMEEND", or "DOWNTIMECANCELLED").

日期/时间宏$LONGDATETIME$当前的日期/时间戳

文件宏$LOGFILE$日志文件的保存位置。$MAINCONFIGFILE$主配置文件的保存位置。

其他宏$ADMINEMAIL$全局的管理员EMail地址$ARGn$指向第n个命令传递参数(通知、事件处理、服务检测等)。Nagios支持最多32个参数宏

4commands.cfg文件

此文件默认是存在的,无需修改即可使用,当然如果有新的命令需要加入时,在此文件进行添加即可。这里并未列出文件的所有内容,仅仅介绍了配置中用到的一些命令。

#下面是notify-host-by-email命令的定义

define command{

command_name      notify-host-by-email#命令名称,即定义了一个主机异常时发送邮件的命令。command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$#命令具体的执行方式,“-H $HOSTADDRESS$” 是定义目标主机的地址,这个地址在hosts.cfg文件中定义了。}

#下面是notify-host-by-email命令的定义

define command{

command_name    notify-service-by-email#命令名称,即定义了一个服务异常时发送邮件的命令command_line   /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditionalInfo:\n\n$SERVICEOUTPUT$" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$}

#下面是notify-host-by-email命令的定义

define command{

command_name    check-host-alive#命令名称,用来检测主机状态。

command_line  $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5

#这里的变量$USER1$在resource.cfg文件中进行定义,即$USER1$=/usr/local/nagios/libexec,那么check_ping的完整路径为/usr/local/nagios/libexec/check_ping。 “-w 3000.0,80%”中“-w”说明后面的一对值对应的是“WARNING”状态,“80%”是其临界值。“-c 5000.0,100%”中“-c”说明后面的一对值对应的是“CRITICAL”,“100%”是其临界值。“-p 1”说明每次探测发送一个包。}

#下面是notify-host-by-email命令的定义define command{

command_name  check_ftp

command_line      $USER1$/check_ftp -H $HOSTADDRESS$ $ARG1$  #$ARG1$是指在调用这个命令的时候,命令后面的第一个参数。}

#下面是check_http命令的定义define command{

command_name   check_http

command_line    $USER1$/check_http -I $HOSTADDRESS$ $ARG1$}

#下面是check_ssh命令的定义define command{

command_name  check_ssh

command_line   $USER1$/check_ssh $ARG1$ $HOSTADDRESS$

}

5 hosts.cfg文件此文件默认不存在,需要手动创建,hosts.cfg主要用来指定被监控的主机地址以及相关属性信息,一个配置好的实例如下

define host{

use  linux-server  #引用主机linux-server的属性信息,linux-server主机在templates.cfg文件中进行了定义。

host_name   web #主机名

alias   ixdba-web#主机别名

address  192.168.12.251#被监控的主机地址,这个地址可以是ip,也可以是域名。

}

define host{

use   linux-server

host_name  mysql

alias ixdba-mysql

address  192.168.12.237

}

define hostgroup{

#定义一个主机组

hostgroup_name   sa-servers#主机组名称,可以随意指定。

aliassa servers  #主机组别名

members  web,mysql#主机组成员,其中“web”、“mysql”就是上面定义的两个主机。

}

6 services.cfg文件此文件默认也不存在,需要手动创建,services.cfg文件主要用于定义监控的服务和主机资源,例如监控http服务、ftp服务、主机磁盘空间、主机系统负载等等。

#################ixdbaweb#####################

define service{

use   local-service   #引用local-service服务的属性值,local-service在templates.cfg文件中进行了定义。

host_name  web #指定要监控哪个主机上的服务,“web”在hosts.cfg文件中进行了定义。service_description   PING #对监控服务内容的描述,以供维护人员参考。

check_command   check_ping!100.0,20%!500.0,60%#指定检查的命令,check_ping命令在commands.cfg中定义,后跟两个参数,命令与参数间用!分割。

}

define service {

use  local-service

host_name web

service_description SSH

check_command  check_ssh# check_ssh命令也在commands.cfg中定义。

}

define service{

use  local-service

host_name web

service_description   SSHD

check_command  check_tcp!22

}

7 contacts.cfg文件contacts.cfg是一个定义联系人和联系人组的配置文件,当监控的主机或者服务出现故障,nagios会通过指定的通知方式(邮件或者短信)将信息发给这里指定的联系人或者使用者。

define contact{

contact_name   sasystem  #联系人名称

use  generic-contact#引用generic-contact的属性信息,其中“generic-contact”在templates.cfg文件中进行定义

alias  sa-system  #联系人别名emailixdba@126.com#联系人的邮件地址

}

define contactgroup {

contactgroup_name admins#联系人组名称alias system administrator group#联系人组描述

members sasystem#联系人组成员,其中“sasystem”就是上面定义的联系人

}

8 timeperiods.cfg文件此文件只要用于定义监控的时间段,下面是一个配置好的实例:

#下面是定义一个名为24x7的时间段,即监控所有时间段define timeperiod{

timeperiod_name 24x7

alias 24 Hours A Day, 7 Days A Week

sunday 00:00-24:00

monday  00:00-24:00

tuesday 00:00-24:00

wednesday 00:00-24:00

thursday  00:00-24:00

friday  00:00-24:00

saturday 00:00-24:00

}

#下面是定义一个名为workhours的时间段,即工作时间段。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

friday09:00-17:00

}

 

9 cgi.cfg文件

 此文件用来控制相关cgi脚本,如果想在nagios的web监控界面执行cgi脚本,例如重启nagios进程、关闭nagios通知、停止nagios主机检测等,这时就需要配置cgi.cfg文件了。由于nagios的web监控界面验证用户为ixdba,所以只需在cgi.cfg文件中添加此用户的执行权限就可以了,需要修改的配置信息如下:

default_user_name=ixdba

authorized_for_system_information=nagiosadmin,ixdba

authorized_for_configuration_information=nagiosadmin,ixdba

authorized_for_system_commands=ixdba

authorized_for_all_services=nagiosadmin,ixdba

authorized_for_all_hosts=nagiosadmin,ixdba

authorized_for_all_service_commands=nagiosadmin,ixdba

authorized_for_all_host_commands=nagiosadmin,ixdba

深入了解nagios的各配置文件的更多相关文章

  1. Security基础(四):OpenSSL及证书服务常用系统监控命令、搭建nagios监控服务器、配置文件及插件使用、监控远程主机的公有数据、监控远程主机的私有数据

    一.OpenSSL及证书服务常用系统监控命令 目标: 本案例要求练习常用的系统监控命令完成以下任务: 使用vmstat命令监控内存及磁盘I/O信息 使用iostat命令监控CPU处理器及磁盘的I/O信 ...

  2. Nagios配置文件详解

    首先要看看目前Nagios的主配置路径下有哪些文件.[root@nagios etc]# ll总用量 152-rwxrwxr-x. 1 nagios nagios 1825 9月  24 14:40 ...

  3. 监控服务 - Nagios配置文件详解

    Nagios的配置文件: Nagios安装后有四种默认的配置文件:主配置文件.CGI配置文件.资源定义文件.对象定义文件.这些配置文件间具有一些关系,只有充分理解各配置文件,才能使得配置Nagios服 ...

  4. nagios–配置文件

    ngios的配置文件位于/etc/nagios目录下 # ll /etc/nagios 总用量 -rw-rw-r-- nagios nagios 3月 : cgi.cfg -rw-r--r-- roo ...

  5. Nagios服务器端配置文件详解

    Nagios服务器端安装部署详解见:http://www.cnblogs.com/ginvip/p/6505948.html Nagios 主要用于监控一台或者多台本地主机及远程的各种信息,包括本机资 ...

  6. Nagios配置文件nagios.cfg详解

    这里开始要讲一些Nagios的配置. 首先要看看目前Nagios的主配置路径下有哪些文件.[root@nagios etc]# ll总用量 152-rwxrwxr-x. 1 nagios nagios ...

  7. Nagios安装

    在做安装之前确认要对该机器拥有root权限. 确认你安装好的Fedora系统上已经安装如下软件包再继续: Apache GCC编译器 GD库与开发库 可以用yum命令来安装这些软件包: yum ins ...

  8. Nagios学习实践系列——配置研究[监控当前服务器]

    其实上篇Nagios学习实践系列——基本安装篇只是安装了Nagios基本组件,虽然能够打开主页,但是如果不配置相关配置文件文件,那么左边菜单很多页面都打不开,相当于只是一个空壳子.接下来,我们来学习研 ...

  9. nagios二次开发(一)---开发思想

    NAGIOS现状   从nagios的官网http://www.nagios.org/及其它已经公开的资料,我们可以知道:在web UI层nagios只提供了给我们查看图形界面的操作,界面上有简单的启 ...

随机推荐

  1. (转)java:快速文件分割及合并

    文件分割与合并是一个常见需求,比如:上传大文件时,可以先分割成小块,传到服务器后,再进行合并.很多高大上的分布式文件系统(比如:google的GFS.taobao的TFS)里,也是按block为单位, ...

  2. 《JS高级程序设计》笔记 —— 解析查询字符串

    今天在继续翻阅<JS高级程序设计>的时候,正好翻到location对象这一小节,其中有一部分就是讲的解析查询字符串.看到这个内容立马想到了做去哪儿秋招笔试题的时候有这么一道题. 去哪儿笔试 ...

  3. 【原】Oracle查询指定表里的触发器

    select * from all_triggers WHERE table_name='表名'

  4. Web开发常见的漏洞

    SQL注入漏洞 跨站脚本攻击漏洞 登陆后台管理页面 IIS短文件/文件夹漏洞 系统敏感信息泄露

  5. 【Delphi】窗体阴影

    procedure TForm1.FormCreate(Sender: TObject); begin SetClassLong(Handle, GCL_STYLE, GetClassLong(Han ...

  6. 我用的一些Node.js开发工具、开发包、框架等总结

    开发工具 1.WebStorm,毫无疑问非他莫属,跨平台,强大的代码提示,支持Nodejs调试,此外还支持vi编辑模式,这点我很喜欢. 2.做些小型项目用Sublime Text. 3.Browser ...

  7. Visual C++2010开发权威指南 中文高清PDF - VC.NET

    第一部分  Visual C++ 2010开发与新特性第1章  Visual C++ 2010开发环境简介 11.1  Visual C++ 2010简介 11.2  Visual C++ 2010下 ...

  8. (转载)MS SQL Server 未公开的加密函数有哪些?

    MS SQL Server 未公开的加密函数有哪些? 以下的文章是对MS SQL Server 未公开的加密函数的具体操作,如果你对其相关的实际操作有兴趣的话,你就可以点击了. MS SQL Serv ...

  9. Spark Streaming揭秘 Day19 架构设计和运行机制

    Spark Streaming揭秘 Day19 架构设计和运行机制 今天主要讨论一些SparkStreaming设计的关键点,也算做个小结. DStream设计 首先我们可以进行一个简单的理解:DSt ...

  10. NVIDIA显卡设置提升MineCraft流畅度

    很喜欢MineCraft(我的世界)这款游戏.可09年Y450的配置现在看来有点弱,尽管将Y450的CPU升级至了2.8Ghz的T9600,内存升级至1066Mhz的4G双通道内存,硬盘更换为128G ...