python写的nginx的nagios插件

2010年12月9日 eric 2 条评论

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

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

FastDFS nginx 模块 php_client使用。

2010年12月7日 eric 没有评论

由于本人对PHP了解有限,读起 README来有些慢·不过还是看明白了点·先写下上传,和得到文件的fileid,同理也可以下载·呵呵。其实很简单函数有说明的。接上文的安装完毕后,在nginx 上编译php-fpm,让其支持php. 1.编译php-fpm nginx $> wget http://cn2.php.net/get/php-5.2.14.tar.bz2/from/cn.php.net/mirror nginx $> wget http://php-fpm.org/downloads/php-5.2.14-fpm-0.5.14.diff.gz nginx $> tar jxvf php-5.2.14.tar.bz2 nginx $> gzip -cd php-5.2.14-fpm-0.5.14.diff.gz | patch -d php-5.2.14 -p1 nginx $> cd php-5.2.14 nginx $> ./configure –prefix=/usr/local/php –enable-fastcgi –enable-fpm –enable-force-cgi-redirect nginx $> make nginx $> make install nginx $> cp php.ini-dist /usr/local/php/etc/ 2.编译fastdfs_client.so php扩展模块 nginx $> cd [...]

分类: nginx 标签: , ,

测试nginx的FastDFS分布式存储模块

2010年12月2日 eric 2 条评论

很长时间没有关注FastDFS了,第一次使用FastDFS 是在 08年的时候11月的时候,那个时候是为了解决公司的数据存储~那时候可能是对Fastdfs了解不深,功能还不算太健全,最后选择了lustre。再回过头来看FastDFS更新很快,还看到fastdfs-nginx-module_v1.01.tar.gz nginx模块,所以今天在一台测试机上测试了·测试几天看稳定不稳定,在考虑换掉浪费资源的 lustre !

环境:

storage1:192.168.6.100
storage2:192.168.6.101
tracker:192.168.6.102

1. 在每个机器上,下载安装 FastDFS

nginx $>  wget http://fastdfs.googlecode.com/files/FastDFS_v2.04.tar.gz
# 解压
nginx $> tar zxvf FastDFS_v2.04.tar.gz
nginx $> cd FastDFS
# 因为我是给nginx添加fastdfs模块,所以不需要fastdfs支持 http 所以我就不需要去掉  #WITH_HTTPD=1 前的注释了,直接编译
nginx $> ./make.sh
nginx $> ./make.sh install

2.修改tracker 和 storage 的配置文件
# tracker 的修改

tracker $> vim /etc/fdfs/tracker.conf
disabled=false
#配置是否生效
bind_addr=192.168.6.102
#绑定IP
port=22122
#服务端口
connect_timeout=30
#连接超时时间
network_timeout=60
#  tracker server的网络超时,单位为秒。
base_path=/home/yangzi
#目录地址,里面会创建data(存放存储服务器信息)、logs,日志文件
max_connections=256
#系统提供服务最大连接数
work_threads=4
#线程数,通常设置CPU数
store_lookup=2
上传组(卷) 的方式 0:轮询方式 1: 指定组 2: 平衡负载(选择最大剩余空间的组(卷)上传)
这里如果在应用层指定了上传到一个固定组,那么这个参数被绕过
store_group=group1
当上一个参数设定为1 时 (store_lookup=1,即指定组名时),必须设置本参数为系统中存在的一个组名。如果选择其他的上传方式,这个参数就没有效了
store_server=0
选择哪个storage server 进行上传操作(一个文件被上传后,这个storage server就相当于这个文件的storage server源,会对同组的storage server推送这个文件达到同步效果)
# 0: 轮询方式
# 1: 根据ip 地址进行排序选择第一个服务器(IP地址最小者)
# 2: 根据优先级进行排序(上传优先级由storage server来设置,参数名为upload_priority)
store_path=0
分类: linux 标签: , ,

监控linux系统资源

2010年12月1日 eric 2 条评论

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 标签: ,

直升机大逃亡

2010年11月30日 eric 没有评论

帮我的哥们做个推广,他花几天时间做的一个FLASH游戏,直升机大逃亡,可惜是别人的网站,不是很轻缓做这个连接呢~ 游戏地址: http://www.youyouwin.com/en/2010/1689.html 呵呵 大家支持下,记得点下广告支持他。谢谢了!

分类: 生活 标签: ,

nagios利用fetion发送报警

2010年11月30日 eric 没有评论

飞信系统升级公告(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 1 条评论

首先不好意思,最近几天由于公司极个人的有点忙,所以就没有及时做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监控nginx status

2010年11月22日 eric 没有评论

网上已经有nagios 的 nginx的脚本了,有通过本地拿数据通过check_nrpe 传输给nagios的,也有pl写的通过get status 页面来获得数据的。 我自己也做了个。通过wget nginx status页面,来拆分数据·来实现报警功能的。至于出图,暂时还没有做测试。稍后会把出图数据以及pnp模版发布上来。 脚本如下: nginx $> cat check_nginx.sh #!/bin/bash PROGNAME=`basename $0` VERSION=”Version 1.0″ AUTHOR=”2010.11.18-www.nginxs.com” ST_OK=0 ST_WR=1 ST_CR=2 ST_UK=3 print_version() {         echo “$VERSION $AUTHOR” } print_help() {         print_version $PROGNAME  $VERSION         echo “$PROGNAME is a Nagios plugin to monitor nginx status”         echo “Use of wget nginxstatus page” [...]

分类: linux 标签: ,