检查lvs连接数脚本(nagios插件版)-python
2013-03-22 00:00
92 查看
目标:监控lvs的ActiveConn和InActConn连接数
准备工作:由于使用ipvsadm -L -n命令查看lvs连接数一般配置需要root权限,所以需要使用visuo命名在/etc/sudoers中添加下行内容(注意这么使用nagios需要是可登陆用户):
nagios ALL=(root) NOPASSWD: /sbin/ipvsadm -L -n
输入:活跃连接数报警值、非活跃连接数报警值
输出:相关数值大于报警值则进行报警,脚本退出装套为2,将所需报警内容打印在stdout中。
使用方法:
./check_lvs_conn.py -a 10000 -i 10000
可能输出:
lvs warn!:;ip_prot:111.111.111.116:80 active_conn:16980 inact_conn:12590
check_result函数稍作修改就可以改成crontab中的监控形式
附:
一次sudo /sbin/ipvsadm -L -n命令的可能输出如下:
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 111.111.111.111:80 wlc
-> 111.111.111.112:80 Route 2 240 260
-> 111.111.111.113:80 Route 2 240 390
-> 111.111.111.114:80 Route 2 240 280
-> 111.111.111.115:80 Route 60 6990 1520
-> 111.111.111.116:80 Route 60 16980 12590
...
...
准备工作:由于使用ipvsadm -L -n命令查看lvs连接数一般配置需要root权限,所以需要使用visuo命名在/etc/sudoers中添加下行内容(注意这么使用nagios需要是可登陆用户):
nagios ALL=(root) NOPASSWD: /sbin/ipvsadm -L -n
输入:活跃连接数报警值、非活跃连接数报警值
输出:相关数值大于报警值则进行报警,脚本退出装套为2,将所需报警内容打印在stdout中。
使用方法:
./check_lvs_conn.py -a 10000 -i 10000
可能输出:
lvs warn!:;ip_prot:111.111.111.116:80 active_conn:16980 inact_conn:12590
check_result函数稍作修改就可以改成crontab中的监控形式
#! /usr/bin/python import subprocess import re import sys import optparse class ip_info(): def __init__(self,ip_port,active_conn,inact_conn): self.ip_port=ip_port self.active_conn=active_conn self.inact_conn=inact_conn def __str__(self): return ('ip_prot:%s active_conn:%s inact_conn:%s' % ( self.ip_port,self.active_conn,self.inact_conn)) def str(self): return self.__str__() def get_lvs_status(): #这里需要linux使用visudo命令为脚本执行者执行该命令的权限 #例如:nagios ALL=(root) NOPASSWD: /sbin/ipvsadm -L -n command=['/usr/bin/sudo','/sbin/ipvsadm','-L','-n'] lvs_status_p=subprocess.Popen(command,stdout=subprocess.PIPE) return lvs_status_p.stdout def check_lvs_status(lvs_status,warn_active_conn,warn_inact_conn): warn_content=list() # 针对ipvsadm的输出去掉不需要处理的行 require_pattern=re.compile('->') exclusive_pattern=re.compile('RemoteAddress') separate_pattern=re.compile('\s+') for line in lvs_status: if require_pattern.search(line) and not exclusive_pattern.search(line): # 2字段为ip:port,5字段为活跃连接数,6字段为非活跃连接数 info_per_line=separate_pattern.split(line) active_conn=int(info_per_line[5]) inact_conn=int(info_per_line[6]) if active_conn >= warn_active_conn or inact_conn >= warn_inact_conn: ip_port=info_per_line[2] info_per_line=ip_info(ip_port,active_conn,inact_conn) warn_content.append(info_per_line) return warn_content def check_result(warn_content): warn_message='lvs warn!:' if len(warn_content): for warn_ip in warn_content: warn_message+=(';'+warn_ip.str()) print(warn_message) sys.exit(2) else: sys.exit(0) def exec_check(warn_active_conn,warn_inact_conn): lvs_status=get_lvs_status() warn_content=check_lvs_status(lvs_status,warn_active_conn,warn_inact_conn) check_result(warn_content) def generate_arguments(): #为兼容旧版使用optparse parser=optparse.OptionParser() parser.add_option('-a',action='store',type='int',dest='warn_active_conn',help='active conn warn counts') parser.add_option('-i',action='store',type='int',dest='warn_inact_conn',help='inactive conn warn counts') (options,others)=parser.parse_args() return (options.warn_active_conn,options.warn_inact_conn) if __name__ == '__main__': (warn_active_conn,warn_inact_conn)=generate_arguments() exec_check(warn_active_conn,warn_inact_conn)
附:
一次sudo /sbin/ipvsadm -L -n命令的可能输出如下:
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 111.111.111.111:80 wlc
-> 111.111.111.112:80 Route 2 240 260
-> 111.111.111.113:80 Route 2 240 390
-> 111.111.111.114:80 Route 2 240 280
-> 111.111.111.115:80 Route 60 6990 1520
-> 111.111.111.116:80 Route 60 16980 12590
...
...
相关文章推荐
- 检查resin的gc相关log的脚本(nagios插件版)-python
- nagios检查主从同步的脚本插件执行出错 推荐
- nagios插件-监控tcp状态连接数shell脚本
- LVS之RealServer健康检查脚本
- nagios插件脚本check_linux_stats
- python 获取脚本传递参数 及参数个数 检查文件 变量 是否存在 退出脚本
- CentOS 7 中自定义nagios 插件脚本
- lvs-dr启动及健康状态检查脚本
- python nagios简单监控进程数脚本
- 给python脚本做个语法检查
- python 调用 lvs 脚本 [备忘]
- 用于windbg检查堆是否被破坏的python脚本
- 检查json日志的python脚本
- CLUSTER部署LVS-NAT集群-LVS-DR集群及健康性检查脚本
- ATOM基础教程一使用python编码规范检查插件linter-pep8(19)
- linux 下 vim编辑器插件安装 方便python脚本编写
- 工程脚本插件方案 - c集成Python基础篇
- 工程脚本插件方案 - c集成Python基础篇(VC++嵌入Python)
- lvs+keepalived自定义健康检查脚本(MISC_CHECK用法)
- Notepad++ GBK转UTF8 python script插件脚本【转】