nagios插件编写和使用pnp4nagios出图
其实在nagios官方网站上也有很多插件,足够让我们使用,但是也不排除不能满足公司的需求,这时,得运维工程师或者程序员自己去编写脚本,网上也有很多教程,但是看了感觉都是讲的不够清楚,所以自己写了一份记录,希望可以帮得到网友们,同时,有哪里讲错的地方希望你们指出来,免得误人子弟。
一 、写nagios插件,可以使用shell、perl、python等脚本语言,不管什么语言来写原理是一样的。那么先来认识下4种状态返回信息:
0(OK)表示状态正常/绿色
1(WARNING)表示出现警告/×××
2(CRITICAL)表示出现非常严重的错误/红色
3(UNKNOWN)表示未知错误/深×××。
图解:
原理: Nagios根据插件返回来的值,来判断监控对象的状态,通过web显示出来,并通过邮件或者是短信方式(其他方式也可以)给管理员报警,及时处理故障.
二、脚本编写教程
1 编写脚本
- [root@node1 libexec]# cat /usr/local/nagios/libexec/check_disk_used
- #!/bin/bash
- #############返回状态码################
- STATE_OK=0
- STATE_WARNING=1
- STATE_CRITICAL=2
- STATE_UNKNOWN=3
- #############参数提示帮助###############
- help(){
- echo "Usage:$0 -h to help"
- }
- #############参数使用教程###############
- full_help(){
- echo "Usage:"
- echo "linux disk used"
- echo "example:$0 -w 80 -c 100"
- }
- #############以下是作判断和返回的结果,这里注意的函数getopts,非常好用##############
- if [ $# -lt 1 ];then
- help
- exit 0
- else
- while getopts :w:c:h OPTION
- do
- case $OPTION
- in
- w)
- WARNING=$OPTARG
- ;;
- c)
- CRITICAL=$OPTARG
- ;;
- h)
- full_help
- exit 0
- ;;
- *)
- echo "Error option"
- help
- exit 0
- ;;
- esac
- done
- fi
- ############拿出磁盘的used,以下那个乘以1024,单位的转换#############
- used_one=`df -l|sed -n '2p'|awk '{print $3}'`
- used=`expr $used_one \* 1024`
- ############拿出磁盘的total,以下那个乘以1024,单位的转换#############
- total_one=`df -l|sed -n '2p'|awk '{print $2}'`
- total=`expr $total_one \* 1024`
- ###############判断大于给出的参数-C -w 的结果,如果没问题,就显示OK#################
- if [ "$used" -ge "$CRITICAL" ] && [ "$CRITICAL" -ne "0" ];then
- state="$STATE_CRITICAL"
- state_used="CRITICAL"
- elif [ "$used" -ge "$WARNING" ] && [ "$WARNING" -ne "0" ];then
- state="$STATE_WARNING"
- state_used="WARNING"
- else
- state="$STATE_ok"
- state_used="ok"
- fi
- echo ""The server disk_tatal=$total,the disk_used is "$state_used",disk_used="$used""|disk_used="$used";3387649424;3587635328;0;"$total""
- exit $state ############这个就是返回的状态码,在注意这里#############
2 在被监控的客户端/usr/local/nagios/etc/nrpe.cfg加上以下语句,添加完后要记得重启nrpe服务,一般使用/etc/rc.d/init.d/xinetd restart
- command[check_disk_used]=/usr/local/nagios/libexec/check_disk_used -w 3387649424 -c 3587635328
3 在nagios服务器端,主机配置文件添加服务和重启nagios(service nagios restart):
- [root@node2 servers]# cat/usr/local/nagios/etc/servers/192.168.250.40.cfg
- define service{
- use generic-service,service-pnp
- host_name web1
- service_description check_disk_used
- check_command check_nrpe!check_disk_used
- }
4 web查看
这样,自己编写的插件就可以正常使用了,运维工程师或者程序员就可以根据自己本身的 业务和需求去编写脚本。
三、 pnp4nagios出图
细心的网友们应该会看到旁边有一个图形,这个就是pnp插件,在这里pnp4nagios配置 我就不写出来了,如果哪位网友需要交流的话就联系我或者在后面回复。
1 首先出图的话需要服务需要加入PNP4nagios插件(在配置好pnp4nagios基础上)
- [root@node2 servers]# cat /usr/local/nagios/etc/servers/192.168.250.40.cfg
- define service{
- use generic-service,service-pnp
- host_name web1
- service_description check_disk_used
- check_command check_nrpe!check_disk_used
- }
通过以上的配置,图标就会出现
2 绘图
绘图是使用rrdtool,安装pnp4nagios的时候需要安装的依赖包。首先大家要明白,生成 图像,需要的是什么?---->当然是数据。但数据从哪里来呢?请看看被监控的客户端脚本:
- [root@node1 libexec]# cat /usr/local/nagios/libexec/check_disk_used
- #!/bin/bash
- STATE_OK=0
- STATE_WARNING=1
- STATE_CRITICAL=2
- STATE_UNKNOWN=3
- .........
- .........
- echo ""The server disk_tatal=$total,the disk_used is "$state_used",disk_used="$used""|disk_used="$used";3387649424;3587635328;0;"$total""
- exit $state
|disk_used="$used";3387649424;3587635328;0;"$total"大家有没有留意到,这里就是数据,那么是怎么样定义的呢?
| 当前值;警告值;临界值;最小值;最大值
| ---->是用来区别输出的数据的,|之前输出的数据是显示在web上面,后面则是绘图的数据
当前值:这个要定义一个名字,例如:disk_used=
警告值: 这个就是 - w参数的值
临界值:这个就是 - c参数的值
最小值: 0
最大值: 这个根据自己本身监控去定义拿取
3 最后,在使用这个脚本的时候也需要加上参数
[root@node1 libexec]# vi /usr/local/nagios/etc/nrpe.cfg
- command[check_disk_used]=/usr/local/nagios/libexec/check_disk_used -w 3387649424 -c 3587635328
这样的话就可以有数据绘图了,我们验证下结果:
希望简单的教程能帮助到大家,谢谢!!!