Chinaunix首页 | 论坛 | 博客
  • 博客访问: 147360
  • 博文数量: 68
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 720
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-28 20:01
文章分类

全部博文(68)

文章存档

2015年(68)

我的朋友

分类: 系统运维

2015-08-31 19:21:37

简单来说nagios对主机或服务状态的检测,基本上都是通过外部程序(也就是我们说的插件)来完成的,,nagios要做的只是对这些插件所做的检测结果进行分析处理,该告警的告警、该处理的处理(事件处理机制)。nagios安装好后,在安装目录的libexec目录下已经有很多插件以用于监控象CPU负载、磁盘、内存等,另外,还可以到像 style="font-size:14px;">、 style="font-size:14px;">这些网站去下寻找并下载所需要插件。如果没找到或觉得满足不了需求,还可以自己写插件,用sh、python、perl等都没关系,只要满足下面的2个条件就行了

  • 返回值:也可以说是插件的退出码,让nagios知道主机、服务的状态

  • 输出检测的结果数据:让nagios知道具体检测结果,加上性能数据可以给像pnp4nagios这些插件来绘图

返回值:插件的状态返回值有(0 1 2 3)4个,每个返回值对应不同主机、服务的状态,如下图:

检测的结果数据:插件至少返回一行文本格式的信息,从版本3开始,nagios支持多行,比如:

DISK OK - free space: / 3326 MB (56%);

加上性能数据:

DISK OK - free space: / 3326 MB (56%); | /=2643MB;5948;5958;0;5968


示例:

写了一个简单的check_url.sh插件,插件的作用是监控网页,实现的原理也很简单-访问网页时,如果返回的http返回码不为200,就认为这个网页不能访问,插件内容如下:


-----------------------------------------------

#/bin/bash


STATE_OK=0

STATE_WARNING=1

STATE_CRITICAL=2


URL=$1


CURL="/usr/bin/curl -o /dev/null -s -m 15"

RESULT=$($CURL -w "%{time_total} %{http_code}" $URL)

TIME_SPENT=$(echo $RESULT|awk '{print $1}')

HTTP_CODE=$(echo $RESULT|awk '{print $2}')


if [ "$HTTP_CODE" -eq 200 ];then

   STATUS=$STATE_OK

   OUTPUT="HTTP/1.1 $HTTP_CODE OK - $TIME_SPENT second response time on $URL | response_time=$TIME_SPENT"

else

   STATUS=$STATE_CRITICAL

   OUTPUT="HTTP/1.1 $HTTP_CODE CRITICAL - $TIME_SPENT second response time on $URL | response_time=$TIME_SPENT"

fi


echo $OUTPUT

exit $STATUS

## 后面这个输出检测结果、退出状态是必须的

-----------------------------------------------

//测试

[root@monitor ~]# /usr/local/nagios/libexec/check_url.sh 

HTTP/1.1 200 OK - 10.091 second response time on | response_time=10.091


结果是可以正常访问,响应时间为 10.091秒,|号后面的response_time=10.091为性能数据。这个只是一个很简单的示例,只用到OK和CRITICAL状态,没考虑重定向什么的。有需要的可以改一下,如返回30x状万态也为OK、响应时间超过10为WARNING,性能数据还可加上连接时间、网页大小等。

阅读(606) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~