nagios监控网卡流量
来源:互联网 发布:linux gzip 打包压缩 编辑:程序博客网 时间:2024/05/01 16:22
/proc/net/dev文件记录了网卡的进出数据,通过sleep一秒,将前后的两次数据相减得出流量,脚本如下
#!/usr/bin/env python# _*_coding:utf-8_*_"""check interface traffic"""# $Id$#__author__ = 'warshipJian'__version__ = '$Revision: 0.1 $'import sysimport mathimport timeimport fcntlimport structimport socketdef convertbytes(data): return int(data) / math.pow(1024, 1)def ifconfig_bytes(): traffic_in = dict() traffic_out = dict() with open('/proc/net/dev') as f: for val in f: if 'lo' in val: continue if ':' not in val: continue _val = val.split(':') try: ifname = _val[0].strip(':').strip() netdata = _val[1].strip(':').strip().split() if(len(netdata)) < 8: continue if_in = netdata[0] if_out = netdata[8] except ValueError: continue traffic_in[ifname] = int(if_in) traffic_out[ifname] = int(if_out) return traffic_in, traffic_outdef get_ip_address(ifname): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) try: return socket.inet_ntoa(fcntl.ioctl( s.fileno(), 0x8915, # SIOCGIFADDR struct.pack('256s', ifname[:15]) )[20:24]) except IOError: return Nonedef ip_type(ip): f = struct.unpack('!I', socket.inet_pton(socket.AF_INET, ip))[0] private = ( [2130706432, 4278190080], # 127.0.0.0, 255.0.0.0 http://tools.ietf.org/html/rfc3330 [3232235520, 4294901760], # 192.168.0.0, 255.255.0.0 http://tools.ietf.org/html/rfc1918 [2886729728, 4293918720], # 172.16.0.0, 255.240.0.0 http://tools.ietf.org/html/rfc1918 [167772160, 4278190080], # 10.0.0.0, 255.0.0.0 http://tools.ietf.org/html/rfc1918 ) for net in private: if (f & net[1]) == net[0]: return True return Falsedef main(): info = list() label = list() status = 0 if_in, if_out = ifconfig_bytes() time.sleep(1) _if_in, _if_out = ifconfig_bytes() for val in if_in: ip = get_ip_address(val) if ip == None: continue receive = convertbytes(_if_in[val] - if_in[val]) transmit = convertbytes(_if_out[val] - if_out[val]) ptf = '%s receive:%.2fkB/s,transmit:%.2fkB/s' % (val, receive, transmit) labe = '%s_receive=%.2f;0;100 %s_transmit=%.2f;0;100' % (val, receive, val, transmit) info.append(ptf) label.append(labe) if(ip_type(ip)): if receive >= 50000 or transmit >= 50000: status = 2 elif receive >= 30000 or transmit >= 30000: status = 1 else: if receive >= 5000 or transmit >= 5000: status = 2 elif receive >= 3000 or transmit >= 3000: status = 1 print ' '.join(info) + '|' + ' '.join(label) sys.exit(status)if __name__ == '__main__': main()
0 0
- Nagios 网卡流量监控
- Nagios 网卡流量监控
- nagios监控网卡流量
- Nagios监控Windows的网卡流量
- nagios监控mysql主机,nginx,磁盘IO,网卡流量
- iftop 监控 网卡流量
- 监控网卡实时流量
- 网卡流量监控脚本
- 监控所有网卡流量
- 网卡流量监控方法
- shell监控网卡流量
- 监控网卡流量的命令
- iftop监控网卡实时流量
- linux下监控网卡流量
- 动态监控网卡流量异常
- Linux 监控每秒网卡流量
- linux网卡流量监控iftop
- iftop 监控网卡实时流量
- AOP(注解)【理解】【应用】【重点】
- JQuery Show()的效果,看看有没有你需要的!
- ElasticSearch Java API之滚动搜索(Scroll API)
- java Servlet使用c3p0创建多个Mysql数据库连接池,Sevlet使用c3p0创建oracle数据库连接池
- avalon引入一个外部css(link href)ms-href无效
- nagios监控网卡流量
- JSP表达式
- alter
- Java反射机制详解
- Unity3D如何获取GameObject上的Component
- BAT脚本编写教程(比较易懂和全面)
- 【shell】正则表达式语法
- 代码块测试
- mysql-select深入应用一