`
lilisalo
  • 浏览: 1125258 次
文章分类
社区版块
存档分类
最新评论

分析Nagios服务与命令还有插件的关系(四)(转载)

 
阅读更多

之前把Nagios的基本安装和配置都讲完了,但是Nagios最有趣的地方才刚刚开始。就是“服务”-“命令”-“插件”这3者的关系,体现了Naigos在监测工作中的原理,这一话就是特别用来分析其中的关系了。

一.监测服务的定义:
首先看看在localhost.cfg中定义的一个本地系统根分区空间使用状况监测服务:
------------------------------------------------------------------
define service{
use local-service
host_name localhost
service_description Root Partition
check_command check_local_disk!20%!10%!/
}
------------------------------------------------------------------
可以发现这个服务的定义名叫做Root Partition,而这个Root Partition的实际功能则是在于check_command这个配置项中指定的参数,在这里它后面的参数是 “check_local_disk!20%!10%!/”,那么这一串到底是什么意思呢?其实它应该被分开成两部分,即 “check_local_disk”和“!20%!10%!/”。


二.监测命令的定义:
先来说说前面的那个“check_local_disk”,这就是Nagios的监测服务所使用到的“命令”,而这个命令的具体内容是在 commands.cfg文件中定义的,commands.cfg这个文件就是专门定义命令用的配置文件。而在localhost.cfg或者其他文件中 定义服务的时候所用到的命令,都必须是在command.cfg中定义过的命令。在commands.cfg中“check_local_disk”是如 下定义的:
------------------------------------------------------------------
define command{
command_name check_local_disk
command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
}
------------------------------------------------------------------
与其他的功能对象定义文件的格式相似:
------------------------------------------------------------------
define command{
通过define关键字command来表示一个命令定义段,定义内用在两个大括号内,并且一个属性必须占一行。如果要定义多个命令的话要写多个define command {}段。

command_name check_local_disk
通过command_name来定义命令的名字。在服务的定义当中,只能引用这种在commands.cfg中定义过的命令名。

command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
通过command_line来定义该命令的所使用到的插件程序以及参数配置格式。
}
------------------------------------------------------------------


三.Nagios的插件程序:
这里还要说明一下command_line后面的命令格式是怎么回事。command_line后面指定了定义命令时所使用到的Nagios插件程序以及相关的参数格式。那么,这些插件是如何指定的呢?
这些插件在安装了Nagios-plugins插件程序包后,就会在Nagios的主路径下的libexec里找到相应的插件程序。
浏览插件程序目录
[root@KCentOS5C ~]# ls /usr/local/nagios/libexec/
------------------------------------------------------------------
check_apt check_flexlm check_load check_overcr check_swap
check_breeze check_ftp check_log check_ping check_tcp
check_by_ssh check_http check_mailq check_pop check_time
check_clamd check_icmp check_mrtg check_procs check_udp
check_cluster check_ide_smart check_mrtgtraf check_real check_ups
check_dhcp check_ifoperstatus check_nagios check_rpc check_users
check_dig check_ifstatus check_nntp check_sensors check_wave
check_disk check_imap check_nntps check_simap negate
check_disk_smb check_ircd check_nt check_smtp urlize
check_dns check_jabber check_ntp check_spop utils.pm
check_dummy check_ldap check_nwstat check_ssh utils.sh
check_file_age check_ldaps check_oracle check_ssmtp
------------------------------------------------------------------
这些就是Nagios-plugins的所有插件程序。之前在定义check_local_disk这个命令时所使用到的插件程序ckeck_disk也 在其中。这些插件程序都是一个一个的独立的二进制可执行程序,也就是说,他们可以独立运行,有自己参数和选项,当然也有帮助。这里做一个示范:

察看check_disk插件程序的使用
[root@KCentOS5C ~]# /usr/local/nagios/libexec/check_disk -h
------------------------------------------------------------------
check_disk v1793 (nagios-plugins 1.4.10)
Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>
Copyright (c) 1999-2006 Nagios Plugin Development Team
<nagiosplug-devel@lists.sourceforge.net>
This plugin checks the amount of used disk space on a mounted file system
and generates an alert if free space is less than one of the threshold values

Usage: check_disk -w limit -c limit [-W limit] [-K limit] {-p path | -x device}
[-C] [-E] [-e] [-g group ] [-k] [-l] [-M] [-m] [-R path ] [-r path ]
[-t timeout] [-u unit] [-v] [-X type]
这个就是check_disk的使用格式。

Options:
-h, --help
显示帮助信息。

-V, --version
显示版本信息。

-w, --warning=INTEGER
设定产生告警的磁盘个数的阀值,低于该磁盘数量则产生告警通知。

-w, --warning=PERCENT%
设定产生告警的百分比阀值,可用空间低于该百分比值就产生告警通知。

-c, --critical=INTEGER
设定产生严重告警的磁盘个数的阀值,低于该磁盘数量则产生严重告警通知。

-c, --critical=PERCENT%
设定产生严重告警的百分比阀值,可用空间低于该百分比值就产生严重告警通知。
......
------------------------------------------------------------------


四.Nagios的资源文件:
通过上面的分析就一定能够了解后“$USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$”的大致意思了,就是调用check_disk插件程序,并且指定了调用该执行程序的选项-w、-c、-p,并 且$ARG1$、$ARG2$、$ARG3$分别是这3个选项后面跟加的参数值,但是这些只是参数变量,那么具体的参数值在哪里设定呢?让我们回头再看看 在服务中定义的“check_local_disk!20%!10%!/”后面的“20%!10%!/”,后半部分就是预先指定的参数值了,通过感叹号 “!”来分隔参数。

这样看或许会相对容易理解:
------------------------------------------------------------------
check_local_disk ! 20% ! 10% ! /
$USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
------------------------------------------------------------------
也就是说20%和10%是正好匹配-w和-c两个选项的参数值,而最后-p选项的参数值使用缺省,这里就通过“/”来表示。

至于$USER1$/check_disk这个变量路径是在哪里指定的呢?其实这个就是定义在Nagios的资源文件resource.cfg里面了。
[root@KCentOS5C ~]# vi /usr/local/nagios/etc/resource.cfg
------------------------------------------------------------------
# Sets $USER1$ to be the path to the plugins
$USER1$=/usr/local/nagios/libexec
这里就定义$USER1$这个路径变量,用来帮助Nagios找到自己的plugins插件程序的位置。
------------------------------------------------------------------


五.Nagios服务与命令还有插件的关系的总结:
基本上要分为三个步骤
1.首先要在确认在libexec/目录下的插件程序的使用方式,以及相关参数选项的格式。如果对某个插件程序的使用方法不是很明确的话,可以到插件目录下使用-h参数来执行插件程序,以了解和掌握该插件的使用方式。

2.其次要在commands.cfg命令文件中定义命令,指定所用到的插件,并且写好会用到的选项和留出参数变量。如$USER1$/exec -a $ARG1$ -b$ARG2$ -c $ARG3$...这样。

3.最后在服务定义文件中指定定义过的命令名,加上合适的参数,每个之间通过“!”来分隔,如果一个参数当中还要分几个子参数的话,那么子参数之间通过都好“,”来分隔,最终把监测服务定义好。


六.给出一些基本常用服务与其相关命令和插件的对应关系示例:
通过比较各个配置文件当中的相关部分,可以加深理解。

1.连通监测服务:Ping指定主机。
------------------------------------------------------------------
<localhost.cfg>
define service{
use connection-service
host_name localhost,KCentOS5A,KCWIN2K3A,KCXP1
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}

<command.cfg>
define command{
command_name check_ping
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
}

<check_ping>
Usage:check_ping -H <host_address> -w <wrta>,<wpl>% -c <crta>,<cpl>%
[-p packets] [-t timeout] [-4|-6]
-H, --hostname=HOST
host to ping
-w, --warning=THRESHOLD
warning threshold pair
-c, --critical=THRESHOLD
critical threshold pair
-p, --packets=INTEGER
number of ICMP ECHO packets to send (Default: 5)
------------------------------------------------------------------


2.连通监测服务:监测指定主机的TCP连接。
------------------------------------------------------------------
<localhost.cfg>
define service{
use connection-service
host_name localhost,KCentOS5A,KCWIN2K3A,KCXP1
service_description Check TCP 80
check_command check_tcp!80

}
<command.cfg>
define command{
command_name check_tcp
command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$
}

<check_tcp>
Usage:check_tcp -H host -p port [-w <warning time>] [-c <critical time>] [-s <send string>]
[-e <expect string>] [-q <quit string>][-m <maximum bytes>] [-d <delay>]
[-t <timeout seconds>] [-r <refuse state>] [-M <mismatch state>] [-v] [-4|-6] [-j]
[-D <days to cert expiry>] [-S <use SSL>] [-E]
-w, --warning=DOUBLE
Response time to result in warning status (seconds)
-c, --critical=DOUBLE
Response time to result in critical status (seconds)
-H, --hostname=ADDRESS
Host name, IP Address, or unix socket (must be an absolute path)
-p, --port=INTEGER
Port number (default: none)
------------------------------------------------------------------


3.本地系统监测服务:监测本地主机磁盘剩余空间。
------------------------------------------------------------------
<localhost.cfg>
define service{
use local-service
host_name localhost
service_description Root Partition
check_command check_local_disk!20%!10%!
}

<command.cfg>
define command{
command_name check_local_disk
command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
}

<check_check_local_disk>
Usage: check_disk -w limit -c limit [-W limit] [-K limit] {-p path | -x device}
[-C] [-E] [-e] [-g group ] [-k] [-l] [-M] [-m] [-R path ] [-r path ]
[-t timeout] [-u unit] [-v] [-X type]
-w, --warning=INTEGER
Exit with WARNING status if less than INTEGER units of disk are free
-w, --warning=PERCENT%
Exit with WARNING status if less than PERCENT of disk space is free
-c, --critical=INTEGER
Exit with CRITICAL status if less than INTEGER units of disk are free
-c, --critical=PERCENT%
Exit with CRITCAL status if less than PERCENT of disk space is free
-p, --path=PATH, --partition=PARTITION
Path or partition (may be repeated)
------------------------------------------------------------------


4.本地系统监测服务:监测本地主机运行进程数。
------------------------------------------------------------------
<localhost.cfg>
define service{
use local-service
host_name localhost
service_description Total Processes
check_command check_local_procs!250!400!RSZDT
}

<command.cfg>
define command{
command_name check_local_procs
command_line $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
}

<check_ping>
Usage:check_procs -w <range> -c <range> [-m metric] [-s state] [-p ppid]
[-u user] [-r rss] [-z vsz] [-P %cpu] [-a argument-array]
[-C command] [-t timeout] [-v]
Required Arguments:
-w, --warning=RANGE
Generate warning state if metric is outside this range
-c, --critical=RANGE
Generate critical state if metric is outside this range
Optional Filters:
-s, --state=STATUSFLAGS
Only scan for processes that have, in the output of `ps`, one or
more of the status flags you specify (for example R, Z, S, RS,
RSZDT, plus others based on the output of your 'ps' command).
------------------------------------------------------------------

通过这一话,应该明确Nagios系统当中“服务”-“命令”-“插件”这3者之间的关系。这是了解之后远程系统监测用到的NRPE核心扩展插件的基础,如果这里对Nagios“服务”-“命令”-“插件”这3者关系概念模糊的话,会使得接下去的理解非常艰难。

出自 http://hi.baidu.com/kouzl/blog/item/44d85ddcd6a7fca5cc1166f5.html

分享到:
评论

相关推荐

    nagios安装配置及nagios插件

    3. **check_nrpe**:允许远程执行Nagios插件,用于检查其他Nagios客户端上的服务。 4. **check_disk**:监测磁盘空间使用情况。 5. **check_load**:监控系统负载。 6. **check_mem**:检查内存使用情况。 安装...

    nagios插件

    然后,在Nagios的配置文件中定义服务和主机,指定相应的插件检查命令。配置完成后,Nagios会定期运行这些命令,并根据返回的结果更新其状态信息。 总的来说,Nagios插件是Nagios系统灵活性和功能强大性的核心。...

    nagios监控windows插件

    nagios监控windows64位插件

    nagios监控插件开发步骤

    2、将编写好的shell放在服务器与客户端/usr/local/nagios/libexec路径下 把开发的shell拷贝至客户端/usr/local/nagios/libexec目录下 注意属组及执行权限修改 chown -R nagios.nagios ./check_update chmod +x ./...

    Nagios自定义插件介绍

    这种设计使得Nagios具有高度的可扩展性,用户可以根据自己的需求开发特定的插件来监控不同的服务或主机。 通过上述介绍可以看出,Nagios不仅提供了强大的基础监控功能,还允许用户通过自定义插件来实现更加灵活和...

    nagios监控服务器架设

    Nagios是一款广泛使用的开源网络监控系统,它能够监控网络服务、主机以及各种系统资源,及时发现并通知系统管理员可能出现的问题。在“Nagios监控服务器架设”过程中,我们需要了解和掌握以下几个关键知识点: 1. *...

    nagios详细安装和插件介绍

    在启动Nagios服务前,应使用`nagios -v /etc/nagios/nagios.cfg`命令验证配置文件的正确性,以避免错误配置导致的问题。 ### 优化监控策略 为了提高监控效果,可以通过调整监控参数、添加新的插件等方式进行优化。 ...

    磁盘io插件nagios

    Nagios插件check_iostat就是这样一个实用工具,它基于Linux系统中的`iostat`命令,可以定期收集并分析磁盘I/O数据,然后向Nagios服务器报告相关指标,如读写速率、磁盘等待时间等。通过这些数据,管理员可以迅速识别...

    nagios配置命令

    ### Nagios配置命令详解 #### 一、简介 Nagios是一款开源的计算机软件,用于监视系统、网络服务的状态,并在出现异常时发出警告。它能够监控主机与服务的运行状态,提供灵活的通知机制,支持分布式监控等特性,是...

    nagios监控(脚本,插件,操作文档)

    Nagios支持编写各种插件,通过这些插件可以扩展监控范围,`check_ping.txt`就是其中之一,它利用ICMP协议的ping命令来验证网络连通性。 `软件包`文件夹很可能包含了Nagios运行所需的依赖包,如libxml2、gd、openssl...

    Python-nagiospluginmongodb检查MongoDB状态的Nagios插件

    【Python-nagiospluginmongodb检查MongoDB状态的Nagios插件】 MongoDB是一款高性能、无模式的分布式文档型数据库,常用于构建可扩展、高可用性的数据存储系统。Nagios是一款开源的企业级监控系统,能够实时监控网络...

    搭建nagios监控服务器最佳实践

    ### 四、使用sar命令监控系统CPU/内存活动 sar命令是sysstat包中另一个强大的工具,它负责收集、报告或保存系统活动信息。这个命令可以显示关于CPU使用情况、内存和交换空间使用率、进程创建活动和I/O设备的统计...

    nagios 配置监控数据库

    Nagios的设计特点是模块化和可扩展性,允许用户通过编写简单的插件来监控新的服务和系统状态。此外,它还具有并行服务检查机制,可以快速检测多个服务的状态,并在出现问题时通过电子邮件、短信或其他自定义方式通知...

    nagios-plugins-1.5.tar.gz nagios插件

    Nagios是一款强大的网络监控系统,它能够实时监控网络服务、主机状态以及各种网络设备,及时发现并报告问题。Nagios插件是Nagios系统的重要组成部分,它们是实现监控功能的具体工具,通过插件可以监测服务器的CPU...

    nagios检测内存使用率插件

    nagios检测内存使用率插件,用perl编写,单位为MB

    Nagios的平台介绍和监控插件的编写

    2. 判断状态:监控插件的执行结果会被Nagios接收,返回值和标准输出是Nagios判断服务状态的关键。返回值通常有四个级别:0表示OK,1表示WARNING,2表示CRITICAL,3表示UNKNOWN,4表示DEPENDENT。这些状态对应着服务...

    服务器监控nagios配套软件

    【服务器监控nagios配套软件】是一套用于网络和系统监控的强大工具,主要由Nagios核心和一系列Nagios插件组成。Nagios是一款开源的、高度可定制的监控系统,它能够实时监控网络服务、主机状态以及各种基础设施设备,...

    Nagios监控系统插件nagios-plugins-2.3.2.tar.gz

    配置Nagios插件时,需要在Nagios服务器的配置文件(如/etc/nagios/nagios.cfg)中定义服务和主机定义,指定要检查的服务、检查间隔、警告和临界阈值等。同时,还需要在插件的配置文件中设置正确的参数,如URL、端口...

Global site tag (gtag.js) - Google Analytics