存档

‘nagios’ 分类的存档

check_memcache with python

2011年4月27日 eric 1 条评论

在 http://exchange.nagios.org/ 上有shell 写的脚本,nagios可以监控到命中率,他是基于 telnet 的,使用之后看到 进程里有个telnet 进程,很不爽,而且脚本休要修改一下,不然会报错,不知道大家是不是同样的问题,而我,想要的是监控命中率,还有内存使用率以及,当前连接数·所以只能自己动手来写个脚本了·在python 的官网上看到有 python-memcache包,就下来看了一下源码,使用还是很方便的·。

shell $> cat check_memcache.py
#!/usr/bin/python
import memcache
import getopt
import sys

def usage():
   print """check_memcache is a Nagios to monitor memcached memory Plugin
   Usage:

   check_memcache [-h|--help][-w|warning][-c|critical]

   Options:
       --help|-h)
            print check_memcache help
       --warning|-w)
            Sets a warning level for memcache use memory.Default is :o ff
       --critical|-c)
            Sets a critical level for memcache use memory.Default is:off. """
   sys.exit(0)
分类: nagios 标签: , , ,

check_log检查日志关键词for nagios

2011年1月12日 eric 9 条评论

基于 python-2.5.2 版本写的一个小插件,巡检日志里的关键词,可以设置阀值,超过阀值报警!
开始写的时候没有太多注意,结果处理一个大的日志文件脚本执行时间有点长,看了下日志有 70M,想了一下的确啊·如果一次读取么多字符串处理起来肯定会漫长!随后在python.org 上看到了MMAP,这个模块,看到这个一下让我想起,以前编译lustre的时候,添加这个小模块时候的作用,虚拟文件·哈哈大大提升了读取大文件内容的速度! 下面看脚本,例子是我检测nginx日志有多少个 No such file or directory

nagios $> cat check_log
# -*- coding: utf-8 -*-
#!/usr/bin/python
# QQ:277057817
import mmap
import os
import sys
import getopt

def usage():
    print """
    check_log is a Nagios monitor logs Script

    Usage:

    check_log [-h|--help][-l|--log][-s|--string][-w|warning][-c|critical]

    Options:
           --help|-h)
                 check_log help.
           --log|-l)
                 sets log file path.
           --string|-s)
                 sets monitor Keywords.
           --warning|-w)
                 sets Keywords quantity.Default is: off
           --critical|-c)
                 sets Keywords quantity.Default is: off
     example:
            ./check_log -l /var/log/nginx.log -s "502 Bad Gateway" -w 5 -c 10 ""                                                                                                 "
分类: nagios 标签: , ,

python插件做nagios发报警邮件<二>

2010年12月21日 eric 没有评论

接上文 python插件做nagios发报警邮件 http://www.nginxs.com/linux/371.html,由于python 传入的参数,python 会自动加 \ ,经过代码测试,代码如下:

nagios $> cat test.py
#!/usr/bin/python
import sys

str = sys.argv[1]
str = repr(str)
print str
nagios $> python test.py “aaaa\nfffff”
‘aaaa\\nfffff’

测试过很多方法,都不行,最后用了最笨的的方法就是读文件!就稍微改动了一下上文脚本

分类: nagios 标签: , ,

python插件做nagios发报警邮件

2010年12月17日 eric 2 条评论

Ps: 完美的解决了python传入参数带有回车换行符,不换行问题。修改本文时间:2010年12月21号,脚本有变动·nagios commands.cfg无需修改·用了此版本·就解决了不用去读文本方式。

安装好nagios后,一直利用nagios服务器上的sendmail服务器去发邮件,修改配置文件可以伪造别的邮件地址发邮件,但是一直会被邮局视为垃圾邮件,我把email地址加在了QQ上,好处是一来邮件QQ右下角会弹提示。工作时间会第一时间知道服务器出状况(手机短信暂时不提),但是如果是垃圾邮件,QQ不会提醒的,当然可以在QQ邮箱把其添加为信任邮局,可以避免。我就不那么浪费时间了。自己写一个发邮件的插件来替换掉本机的sendmail服务,可以为服务器节省资源,大家也知道启动sendmail服务稍稍费点时间,如果主机名没有设置好的话sendmail服务会启动很久才能起来的哦。废话不多说了,发源代码。

nagios $> cat /usr/local/nagios/libexec/sendmail
#!/usr/bin/python
import smtplib
import string
import sys
import getopt

def usage():
   print """sendmail is a send mail Plugins
   Usage:

   sendmail [-h|--help][-t|--to][-s|--subject][-m|--message]

   Options:
          --help|-h)
                 print sendmail help.
          --to|-t)
                 Sets sendmail to email.
          --subject|-s)
                  Sets the mail subject.
          --message|-m)
                  Sets the mail body
    Example:
           only one to email  user
          ./sendmail -t 'eric@nginxs.com' -s 'hello eric' -m 'hello eric,this is sendmail test!
           many to email  user
          ./sendmail -t 'eric@nginxs.com,yangzi@nginxs.com,zhangsan@nginxs.com' -s 'hello eric' -m 'hello eric,this is sendmail test!"""
   sys.exit(3)

try:
   options,args = getopt.getopt(sys.argv[1:],"ht:s:m:","--help --to= --subject= --message=")
except getopt.GetoptError:
   usage()
for name,value in options:
    if name in ("-h","--help"):
       usage()
    if name in ("-t","--to"):
# accept message user
       TO = value
       TO = TO.split(",")
    if name in ("-s","--title"):
       SUBJECT = value
    if name in ("-m","--message"):
       MESSAGE = value
       MESSAGE = MESSAGE.split('\\n')        #以‘\n’字符切割字符串,分割后的字符串python就不会在加\
       MESSAGE = '\n'.join(MESSAGE)          #在每个字符串后加 '\n' 字符,这样python 就会认为字符'\n'是换行符
分类: nagios 标签: , ,

python写的nginx的nagios插件

2010年12月9日 eric 4 条评论

闲的蛋疼学习python urllib2模块,想到了可以写nginx status模块,就试着写了一下,随后测试下了,比shell写的执行速度要快些,数据如下

第一次:                    第二次:
check_nginx.sh                          check_nginx.sh
real    0m0.453s                         real    0m0.264s
user    0m0.020s                        user    0m0.030s
sys     0m0.030s                        sys     0m0.020s

check_nginx.py                         check_nginx.py
real    0m0.244s                        real    0m0.244s
user    0m0.030s                       user    0m0.020s
sys     0m0.020s                        sys     0m0.010s

由此可以看出 python速度要快些。

下面帖源码:

分类: nagios 标签: , ,

nagios监控带宽插件更新

2010年12月8日 eric 5 条评论

以前写的一个nagios 监控带宽的插件,今天看了下有个小BUG,看代码 BS=”`cat wget-log |tail -n20 |awk ‘{print $8}’|sed ‘s/K//’|awk ‘{sum+=$1};END{print sum}’`” speed=`echo $BS / 19|bc` 我是统计20行数据,在我算平均值的时候是除以了19,是按19行算的,因为最后一行90%数据是不完整,没有统计到下载速度,所以我是按19行来算的,但是考虑到也有10%的可能有数据,这样按照19行来统计平均值会不准确。所以加一条管道更新了一下脚本: #!/bin/bash PROGNAME=`basename $0` VERSION=”Version 1.1″ AUTHOR=”2010.11.17,www.nginxs.com” ST_OK=0 ST_WR=1 ST_CR=2 ST_UK=3 interval=5 url=”http://mirrors.163.com/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-LiveCD.iso” print_version() { echo “$VERSION $AUTHOR” } print_help() { print_version $PROGNAME $VERSION echo “$PROGNAME is a Nagios plugin to monitor download speed” echo “Use of wget download [...]

分类: nagios 标签: , ,

nagios利用fetion发送报警

2010年11月30日 eric 5 条评论

飞信系统升级公告(2010.11.26)
发布时间:2010-11-25尊敬的用户:
为了给您提供更完善的服务,系统于2010年11月26日凌晨0:00-3:00进行升级操作。在升级期间,飞信客户端无法使用。
我们会在此时段内尽快完成升级操作恢复至业务能够正常使用。对此给您带来的不便我们深表歉意,再次感谢您对此次升级的支持和谅解。期待您一如既往的关注飞信!
飞信官方网站
2010-11-25
由于飞信版本升级,pyfetion 再次无法使用,有的开源版本需要输入验证码。经过http://code.google.com/p/pytool 的努力 cocobear.cn 更新了版本,不需要加载RSA_Encrypt.so 模块了·直接用源码就可以·在cocobear.cn的版本上我稍微修改了下,让其支持nagios报警

1.下载修改飞信:

nagios $> svn checkout http://pytool.googlecode.com/svn/trunk/ pytool-read-only
nagios $> cd pytool-read-only
nagios $> cd PyFetion
nagios $> vim fetion.py
#在 385 行处修改:
def main(argv=None):

    #mobile_no = raw_input(toEcho("手机号:"))
    mobile_no = argv[1]       #手机号
    #passwd = getpass(toEcho("口  令:"))
    passwd = argv[2]           #飞信密码
    mes = argv[3]                #发送消息
    tohe = argv[4]               #其他人手机号

# 找到412 行后修改:
      phone.send_sms(toUTF8(mes))
        phone.send_sms(toUTF8(mes),tohe)
        printl("发送成功")
        #printl("登陆成功")
        return 1
#找到最后一行 443行,修改:
     #sys.exit(main())
     sys.exit(main(sys.argv))

修改完后 保存退出
分类: nagios 标签: , , ,

2010年11月26号可用飞信

2010年11月26日 eric 1 条评论

飞信在11月25号又一次变动协议,添加了图片验证码。http://code.google.com/p/pytool 的 cocobear.cn 更新了版本·我稍微改动了一下,完美支持nagios 发送报警了~由于时间问题,今天我线只把源码上传上来。和使用方法,然后在说下 我改动地方。 下载 python fetion.py for nagios nagios $> wget http://www.nginxs.com/download/sms.tar.gz nagios $> ./sms.sh 1361103XXXX 123456 message 1362222XXXX #说明: sms.sh 自己手机号 密码 信息 其他人手机号 用在nagios 如果你不需要给别人发信息 nagios $> ./sms.sh 1361103XXXX 123456 message none 下载 fetion

分类: nagios 标签: , ,

check_nginx pnp4nagios 模版

2010年11月25日 eric 2 条评论

首先不好意思,最近几天由于公司极个人的有点忙,所以就没有及时做check_nginx的模版,今天闲下来,把PNP模版做出来了,感官上还好,由于我把 serveraccepts 、handled、requests 都做到了 PNP模版里,可能他们的图会占用的图比较多,如果你只想把 ActiveConn、reading、writing、waiting 图绘出来,可以把 serveraccepts 、handled、requests 注视掉。

1.首先添加check_nginx.sh 监控

nginx $> wget www.nginxs.com/download/check_nginx.sh

nginx $> mv check_nginx.sh /usr/local/nagios/libexec/

nginx $> vim /usr/local/nagios/etc/objects

nginx $> vim commands.cfg
#  添加:

define command{
        command_name check_nginx
        command_line $USER1$/check_nginx.sh -u $ARG1$ -p $ARG2$ -w $ARG3$ -c $ARG4$
}
分类: linux, nagios 标签: ,

nagios监控带宽插件

2010年11月18日 eric 2 条评论

由于有些业务服务器托管在了二线城市的机房,第4天同事说服务器网络不正常是不是带宽没有给够,我们租用的是5M独享带宽。我登陆服务器,我们租用的是网通线路,就找了一163源下载 Centos 系统 检查了一下下载速度,下载速度居然在 250KB/S,也就是说实际带宽也就给了2M·拿起手机给IDC打电话,他们说让技术查一下,随后给我回电话说,不好意思某某个技术调交换机的时候调错了,然后我就怒了,你们什么职业道德。
随后我想了想,就写了这个脚本·检查下载速度,当然在网站流量大的时候速度会收到影响,你也可以设置nagios 晚上执行这个脚本。或者把阀值调相应低点。下面我贴我的脚本和使用方法。

#!/bin/bash
PROGNAME=`basename $0`
VERSION="Version 1.0"
AUTHOR="2010.11.17,www.nginxs.com"

ST_OK=0
ST_WR=1
ST_CR=2
ST_UK=3

interval=5
url="http://mirrors.163.com/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-LiveCD.iso"

print_version() {
        echo "$VERSION $AUTHOR"
}
分类: nagios 标签: