设为首页 收藏本站
查看: 869|回复: 0

分析nagios插件 参数和服务的关系

[复制链接]

尚未签到

发表于 2019-1-14 10:17:28 | 显示全部楼层 |阅读模式
  一.监测服务的定义:
  首先看看在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
  Copyright (c) 1999-2006 Nagios Plugin Development Team
  
  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指定主机。
  ------------------------------------------------------------------
  
  define service{
  use                              connection-service
  host_name                        localhost,KCentOS5A,KCWIN2K3A,KCXP1
  service_description              PING
  check_command    check_ping!100.0,20%!500.0,60%
  }
  
  define command{
  command_name     check_ping
  command_line     $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
  }
  
  Usage:check_ping -H  -w ,% -c ,%
  [-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连接。
  ------------------------------------------------------------------
  
  define service{
  use                              connection-service
  host_name                        localhost,KCentOS5A,KCWIN2K3A,KCXP1
  service_description              Check TCP 80
  check_command    check_tcp!80
  }
  
  define command{
  command_name check_tcp
  command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$
  }
  
  Usage:check_tcp -H host -p port [-w ] [-c ] [-s ]
  [-e ] [-q ][-m ] [-d ]
  [-t ] [-r ] [-M ] [-v] [-4|-6] [-j]
  [-D ] [-S ] [-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.本地系统监测服务:监测本地主机磁盘剩余空间。
  ------------------------------------------------------------------
  
  define service{
  use                              local-service
  host_name                        localhost
  service_description              Root Partition
  check_command    check_local_disk!20%!10%!
  }
  
  define command{
  command_name     check_local_disk
  command_line     $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
  }
  
  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.本地系统监测服务:监测本地主机运行进程数。
  ------------------------------------------------------------------
  
  define service{
  use                              local-service
  host_name                        localhost
  service_description              Total Processes
  check_command    check_local_procs!250!400!RSZDT
  }
  
  define command{
  command_name     check_local_procs
  command_line     $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
  }
  
  Usage:check_procs -w  -c  [-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者关系概念模糊的话,会使得接下去的理解非常艰难。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-663076-1-1.html 上篇帖子: 完整的nagios和centreon安装过程 下篇帖子: centos 6.0 安装 nagios 4.0.2
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表