nagios pnp - nagios脚本支持pnp绘图

【简单介绍】
这里介绍如何编写nagios脚本支持nagios图形化界面。重点在脚本的返回值的格式上。

【简单实例】


#!/bin/bash

# Determine memory usage percentage on Linux servers.

# Original write for RHEL3 for PC1 Project - jlightner 05-Jul-2005

#

# Modified for RHEL5 on mailservers.

# -Some of the escapes previously required for RHEL3's ksh not needed on RHEL5.

# -Changed comparisons to allow for decimal rather than integer values.

# jlightner 23-Jan-2009

#

# Usage: check_mem.sh WARNING CRITICAL

# Where WARNING and CRITICAL are the integer only portions of the

# percentage for the level desired.

# (i.e. 85% Warning & 95% Critical should be input only as "85 95".)

# Define Levels based on input

#

WARN=$1

CRIT=$2

# Setup standard Nagios/NRPE return codes

#

# Give full paths to commands - Nagios can't determine location otherwise

#

BC=/usr/bin/bc

GREP=/bin/grep

AWK=/bin/awk

FREE=/usr/bin/free

TAIL=/usr/bin/tail

HEAD=/usr/bin/head

# Get memory information from the "free" command - output of top two lines

# looks like:

# total used free shared buffers cached

# Mem: 8248768 6944444 1304324 0 246164 5647524

# The set command will get everything from the second line and put it into

# posiional variables $1 through $7.

#

set `$FREE |$HEAD -2 |$TAIL -1`

# Now give variable names to the positional variables we set above

#

MEMTOTAL=$2

MEMUSED=$3

MEMFREE=$4

MEMBUFFERS=$6

MEMCACHED=$7

# Do calculations based on what we got from free using the variables defined

#

REALMEMUSED=`echo $MEMUSED - $MEMBUFFERS - $MEMCACHED | $BC`

USEPCT=`echo "scale=3; $REALMEMUSED / $MEMTOTAL * 100" |$BC -l`

REALMEMUSEDmb=`echo "($REALMEMUSED)/1024" | $BC`

# Compare the Used percentage to the Warning and Critical levels input at

# command line. Issue message and set return code as appropriate for each

# level. Nagios web page will use these to determine alarm level and message.

#

#if [ `echo "5.0 > 5" |bc` -eq 1 ]

#then echo it is greater

#else echo it is not greater

#fi

if [ "`echo "$USEPCT > $CRIT" |bc`" == 1 ]

then echo "MEM CRITICAL - Memory usage = ${USEPCT}%, RealUsed=${REALMEMUSEDmb}MB |Used=${USEPCT}%;REALMEMUSED=${REALMEMUSEDmb}MB"

exit 2

elif [ "`echo "$USEPCT > $WARN" |bc`" == 1 ]

then echo "MEM WARNING - Memory usage = ${USEPCT}%, RealUsed=${REALMEMUSEDmb}MB |Used=${USEPCT}%;REALMEMUSED=${REALMEMUSEDmb}MB"

exit 1

elif [ "`echo "$USEPCT < $WARN" |bc`" == 1 ]

then echo "MEM OK - Memory usage = ${USEPCT}%, RealUsed=${REALMEMUSEDmb}MB|Used=${USEPCT}%;REALMEMUSED=${REALMEMUSEDmb}MB"

exit 0

else echo "MEM ERROR - Unable to determine memory usage"

exit 3

fi

echo "Unable to determine memory usage."

exit 3


正常情况下nagios脚本返回的值就是一个字符串变量,显示在“Status Information”列上。
为了支持pnp获取nagios的返回值,脚本返回中"|"号后的内容作为性能数据。
格式:

[quote]'label'=value[UOM];[warn];[crit];[min];[max][/quote]


注意:

1. 多个性能数据之间用空格分割

2. label 可以包含任何字符

3. 如果label中包含空格、等号、或者单引号,则label需要用单引号来括起来

4. warn/crit/min/max可以为null值

value, min and max只能为负号“-” “0到9” 和小数点“.” 并且单位必须统一

例如:cpu_user=0.5%;99.9;-9;

5. 如果UOM单位是%,则min和max不需要再指定

6. UOM单位可以是如下: 默认空,表示数量(用于用户数、处理器数等)

s 表示秒(也可以用us,ms)

% 表示百分比

B 表示字节(也可以用KB,MB,TB,GB)

c 一个连续的计数(如:接口传输的字节数)

如内存监控的数据:

    # /usr/local/nagios/libexec//check_mem 90 95

MEM OK - Memory usage = 18.700%, RealUsed=3003MB|Used=18.700%;REALMEMUSED=3003MB


图片显示:
[img]http://dl2.iteye.com/upload/attachment/0103/0242/3430a26e-70d0-3577-856e-bdcf31a4fed3.jpg[/img]


【参考引用】
[url]http://blog.chinaunix.net/uid-25266990-id-3437195.html[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值