存档

文章标签 ‘监控’

check_memcache with python

2011年4月27日 eric 72 条评论

在 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_nginx插件

2011年1月25日 eric 58 条评论

新增功能:
增加 BasicAuth 认证功能,
去掉了显示:serveraccepts handled requests
只显示主要的: ActiveConn reading writing waiting
优化代码可以省去不需要的参数。

源码:

# -*- coding: utf-8 -*-
#!/usr/bin/python
# check_nginx is a Nagios to monitor nginx statu
# my blog: http://www.nginxs.com
# The version is 1.0.1
# MSN: yangzi2008@126.com

import string
import urllib2
import getopt
import sys

def usage():
   print """check_nginx is a Nagios to monitor nginx status
   Usage:

   check_nginx [-h|--help][-u|--url][-p|--path][-w|--warning][-c|--critical]

   Options:
          --help|-h)
分类: nginx 标签: ,

python插件做nagios发报警邮件

2010年12月17日 eric 88 条评论

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 115 条评论

闲的蛋疼学习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 467 条评论

以前写的一个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 标签: , ,

监控linux系统资源

2010年12月1日 eric 6 条评论

Dstat是什么?
可以说,Dstat是 vmstat,iostat,netstat,ifstat的结合体,dstat包含了他们所有没有的功能,并增加了一些额外的功能,Dstat是用于监测性能优化测试,故障诊断系统功能更方便.
你可以使用Dstat可以查看实时系统的所有资源,从你的IDE控制器中结合磁盘比较利用率,或数字比较与磁盘吞吐量的网络带宽更直观。

Dstat 监测结果带颜色,看着更直观,方便。
官方网站:http://packages.sw.be/dstat/

都是 rpm版本,我的是服务器是ubuntu,所以我下载源码编译的

nginx $> wget wget http://packages.sw.be/dstat/dstat-0.7.2-1.rfx.src.rpm
nginx $> rpm -i dstat-0.7.2-1.rfx.src.rpm
#可能会报错,不需要管。
nginx $> cd rpmbuild/SOURCES/dstat-0.7.2
nginx $> make install
nginx $> dstat --help
Usage: dstat [-afv] [options..] [delay [count]]
Versatile tool for generating system resource statistics

Dstat options:
  -c, --cpu              enable cpu stats
     -C 0,3,total           include cpu0, cpu3 and total
  -d, --disk             enable disk stats
     -D total,hda           include hda and total
  -g, --page             enable page stats
  -i, --int              enable interrupt stats
     -I 5,eth2              include int5 and interrupt used by eth2
  -l, --load             enable load stats
  -m, --mem              enable memory stats
  -n, --net              enable network stats
     -N eth1,total          include eth1 and total
  -p, --proc             enable process stats
  -r, --io               enable io stats (I/O requests completed)
  -s, --swap             enable swap stats
     -S swap1,total         include swap1 and total
  -t, --time             enable time/date output
  -T, --epoch            enable time counter (seconds since epoch)
  -y, --sys              enable system stats

  --aio                  enable aio stats
  --fs, --filesystem     enable fs stats
  --ipc                  enable ipc stats
  --lock                 enable lock stats
  --raw                  enable raw stats
  --socket               enable socket stats
  --tcp                  enable tcp stats
  --udp                  enable udp stats
  --unix                 enable unix stats
  --vm                   enable vm stats

  --plugin-name          enable plugins by plugin name (see manual)
  --list                 list all available plugins

  -a, --all              equals -cdngy (default)
  -f, --full             automatically expand -C, -D, -I, -N and -S lists
  -v, --vmstat           equals -pmgdsc -D total

  --float                force float values on screen
  --integer              force integer values on screen

  --bw, --blackonwhite   change colors for white background terminal
  --nocolor              disable colors (implies --noupdate)
  --noheaders            disable repetitive headers
  --noupdate             disable intermediate updates
  --output file          write CSV output to file

delay is the delay in seconds between each update (default: 1)
count is the number of updates to display before exiting (default: unlimited)
分类: linux 标签: ,

nagiospnp 添加模版替换默认模版

2010年8月25日 eric 89 条评论

PNP,我们安装好了,有很多监控服务,都是使用的默认模版,而且有三条数据的,都不在同一图上显示,会出三个图,所以默认模版不可取,而且也难看。那么我就来添加新的模版替换掉默认模版。 添加模版呢,记得要与commands.cfg里的 check_cpu 名字相同。 比如我的 commands.cfg 里的 check_memory 我添加一个模版。 nagios $> cd /usr/local/pnp4nagios/share/templates nagios $> vim check_memory.php < ?php # # Copyright (c) 2006-2010 Joerg Linge (http://www.pnp4nagios.org) # Plugin: check_load # $opt[1] = “–vertical-label MEMORY -l0 –title \”NGINX_MEMORY for $hostname / $servicedesc\” “; # # # $def[1] = rrd::def(“var1″, $RRDFILE[1], $DS[1], “AVERAGE”); //第一条数据 变量1 $def[1] [...]

分类: xen 标签: , ,

mail(exim4)发邮件没反应

2010年7月21日 eric 9 条评论

从新搭建的 Nagios 服务器,该监控的业务服务都添加了内存,磁盘I/O,nginx 连接的监控,今天测试了一下邮件报警,居然不报警,查看 nagios.log 日志 有这样的错误:

[1279598130] SERVICE NOTIFICATION: eric;fms;int_net;UNKNOWN;notify-service-by-email;ERROR: Description table : The requested table is empty or does not exist.
[1279598130] Warning: Attempting to execute the command “/usr/bin/printf “%b” “***** Nagios *****\n\nNotification Type: PROBLEM\n\nService: int_net\nHost: fms-server\nAddress: 219.232.237.166\nState: UNKNOWN\n\nDate/Time: Tue Jul 20 11:55:30 CST 2010\n\nAdditional Info:\n\nERROR: Description table : The requested table is empty or does not exist.” | /bin/mail -s “** PROBLEM Service Alert: fms-server/int_net is UNKNOWN **” eric@nginxs.com” resulted in a return code of 127. Make sure the script or binary you are trying to execute actually exists…

“Make sure the script or binary you are trying to execute actually exists…” 提示的 mail 命令不存在

nagios $> whereis mail

mail: /usr/bin/mail /etc/mail.rc /usr/share/man/man1/mail.1.gz

路径果然 不是 /bin/mail

分类: nagios 标签: , ,