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

2014年第一篇哦,nagios插件开发demo版

[复制链接]

尚未签到

发表于 2015-11-23 07:46:12 | 显示全部楼层 |阅读模式
  2014年元旦,下班回来,洗涮完毕,床上一躺,腿一盘,笔记本一放,开搞,必须整明白nagios的很多方面的东西。昨晚搞定安装配置,报警等东西,今天搞定了自定义添加服务用的是nagios已有的插件check_mysql,接下来是自定义插件,扯淡完毕,开搞~~~
  nagios自带了一些监控服务,但是有的时候因为业务或者是特殊的需求,需要自己去写,下面是我写的一个demo,不断的google,百度去搜索去学习,基本弄明白了,然后就是怎么写出牛逼的监控脚本了,以后要多逼迫自己写python的而不是shell的
  首先,看看nagios自定义脚本的样式:
  

[iyunv@Git ~]# cd /usr/lib/nagios/plugins/
check_breeze       check_file_age     check_ircd         check_mysql_query  check_nwstat       check_simap        check_ups
check_by_ssh       check_flexlm       check_jabber       check_nagios       check_oracle       check_smtp         check_users
check_clamd        check_fping        check_ldap         check_nntp         check_overcr       check_snmp         check_wave
check_cluster      check_ftp          check_ldaps        check_nntps        check_pgsql        check_spop         eventhandlers/
check_dhcp         check_game         check_load         check_nrpe         check_ping         check_ssh          negate
check_dig          check_hpjd         check_log          check_nt           check_pop          check_ssmtp        netstat.sh
check_disk         check_http         check_mailq        check_ntp          check_procs        check_swap         urlize
check_disk_smb     check_icmp         check_mrtg         check_ntp_peer     check_real         check_tcp          utils.pm
check_dns          check_ide_smart    check_mrtgtraf     check_ntp.pl       check_rpc          check_time         utils.sh
check_dummy        check_imap         check_mysql        check_ntp_time     check_sensors      check_udp         
[iyunv@Git ~]# cd /usr/lib/nagios/plugins/

目录下有个utils.sh的脚本,这就是一个nagios自带的简单的demo,netstat.sh是我写的一个demo  
  声明nagios的stat value
  

#! /bin/sh
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
STATE_DEPENDENT=4然后就是普通的脚本了,需要在退出的时候,exit 相应的value  
  一个监控连接的脚本
  

#!/bin/bash
path=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
total=`netstat -n | awk '/^tcp/ {++S[$NF]}END {for(a in S) print a, S[a]}' |grep "ESTABLISHED" | awk '{print$NF}'`
if [ $total -lt 100 ];then
echo "TEST OK : The established status id $total"
exit $STATE_OK
elif [ $total -gt 100 -a $total -lt 200];then
echo "TEST WARNING : The established status id $total"
exit $STATE_WARNING
elif [ $total -gt 201 ];then
echo "TEST CRITICAL : The established status id $total"
exit $STATE_CRITICAL
else
echo "UNKNOWN STATE"
exit $STATE_UNKNOWN
fi
netstat.sh (END)

很简单的一个测试脚本。  
  写完了之后放到和各种check_XXXX的东西在一起,名字自定义,我就用的原始脚本的名字
  接下来是如何使用,其实这个使用和上一篇文章的check_mysql的使用是一样的,还是在墨迹的写一次吧
  1.添加到commands.cfg里面
  

[iyunv@Git objects]# ll
total 44
-rw-rw-r-- 1 root root  7982 Jan  1 00:33 commands.cfg
-rw-rw-r-- 1 root root  2275 Dec 31 18:40 contacts.cfg
drwxr-xr-x 2 root root  4096 Jan  1 00:34 hosts
-rw-rw-r-- 1 root root  3124 Aug 31 06:28 printer.cfg
-rw-rw-r-- 1 root root  3293 Aug 31 06:28 switch.cfg
-rw-rw-r-- 1 root root 11247 Dec 31 22:44 templates.cfg
-rw-rw-r-- 1 root root  3208 Aug 31 06:28 timeperiods.cfg
-rw-rw-r-- 1 root root  4019 Aug 31 06:28 windows.cfg
[iyunv@Git objects]# vim commands.cfg 添加到文件的最后:  
  

#check netstat
define command{
command_name   netstat_check
command_line   $USER1$/netstat.sh
}
"commands.cfg" 252L, 7982C  command_name自定义,别重复  
  command就是如何使用这条命令
  2.使用命令
  

[iyunv@Git objects]# cd hosts/
[iyunv@Git hosts]# ll
total 20
-rw-r--r-- 1 root root 5212 Jan  1 00:34 front.cfg
-rw-r--r-- 1 root root  143 Dec 30 22:37 group.cfg
-rw-r--r-- 1 root root 5403 Dec 30 21:49 localhost.cfg
[iyunv@Git hosts]#front.cfg 和localhost.cfg对应的是两台机器  
  修改front.cfg作为测试吧
  

define service{
use             local-service
host_name       Front1.Webserver
service_description     netstat_check
check_command           netstat_check
}
"front.cfg" 153L, 5212C  在最后添加一个service,名字要和command.cfg里面的相符合  
  然后 重启nagios服务,这时候在nagios管理界面会看到相应的服务,但是显示的是pending,等一会就好了
  这样一个简单的netstat插件写好了。真的很简单啊。
  特别补充:
  1.自定义的监控脚本放在server机器的plugin下面
  2.默认的监控方式主动的监控
  3.脚本必须chmod a+x sh 可执行

-------------------------------------------------------------------------------------------------------------------------------------------------------------
  添加一个新的被监控节点
  1.首先子节点安装nrpe-cient
  [iyunv@Front2 nagios]# yum install nagios-plugins-nrpe.i686 nrpe.i686 2.修改nrpe.cfg
  allowed_hosts=192.168.74.143

3.nagios-server,添加一个clientc.cfg
  和其他的一样,cp一份已经存在的
  把下面对应的修改掉就可以了          host_name              Front2.Webserver
alias                  Front2.Webserver
address                192.168.74.128

然后重启nagios,这样就添加上了




  

运维网声明 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-142336-1-1.html 上篇帖子: nagios 监控页面脚本 下篇帖子: nagios 邮件报警的设置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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