网卡监控脚本--nagios
#!/usr/bin/python26
#filename:check_traffic.py
#the python script function for monitoring network traffic.
'''
--help
example:
python26 check_traffic.py dev in out checknum
python26 check_traffic.py eth0 30000 30000 checknum
the limit unit is KB
'''
import sys,os,time
import psutil
if len(sys.argv) != 5:
print __doc__
sys.exit(3)
dev=sys.argv[1]
value_in=int(sys.argv[2])
value_out=int(sys.argv[3])
lineNum=sys.argv[4]
tmpFile=dev+"_traffic.log"
unit="KB/s"
###get script pwd
binPwd=os.path.dirname(os.path.realpath(__file__))
os.chdir(binPwd)
###get current network traffic
def getCurrentTraffic(dev):
device=dev
current=psutil.network_io_counters(pernic=True)
time.sleep(1)
current1=psutil.network_io_counters(pernic=True)
c_send=current[device][0]
c_rev=current[device][1]
sc_send=current1[device][0]
sc_rev=current1[device][1]
send=(sc_send-c_send)/1024
rev=(sc_rev-c_rev)/1024
witeLog(send,rev)
return send,rev
###write log file the network traffic
def witeLog(send,rev):
now=time.strftime("%Y-%m-%d %X")
f=file(tmpFile,'a')
f.write("%s,%s,%s\n" % (rev,send,now))
f.close()
def isTraffic():
X=[]
Y=[]
if len(open(tmpFile,'rU').readlines()) < int(lineNum):
print "The check num too less."
sys.exit(0)
lastData=os.popen("cat "+tmpFile+"|tail -n " + lineNum)
for tmp in lastData.readlines():
X.append(int(tmp.split(",")[0].strip('\n')))
Y.append(int(tmp.split(",")[1].strip('\n')))
X.sort()
Y.sort()
return X[0],Y[0]
###check tmpFile size
def isTmpFileSzie():
os.system("touch %s" % tmpFile)
if os.path.getsize(tmpFile)/1024 > 65535:
os.remove(tmpFile)
###check network traffic the value of is normal
def monitor():
getCurrentTraffic(dev)
isCheck=isTraffic()
if isCheck[0] < value_in and isCheck[1] < value_out:
print "network traffic ok, in: %s %s out: %s %s" % (isCheck[0],unit,isCheck[1],unit)
sys.exit(0)
elif isCheck[0] >= value_in or isCheck[1] >= value_out:
print "network traffic warning, in: %s %s out: %s %s" % (isCheck[0],unit,isCheck[1],unit)
sys.exit(1)
else:
print "UNKNOWN."
sys.exit(3)
def main():
isTmpFileSzie()
monitor()
if __name__=='__main__':
main()
网卡监控脚本--nagios的更多相关文章
- centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课
centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobacku ...
- nagios和zabbix自定义监控脚本
一. 自定义nagios监控脚本1. 在客户端上创建脚本/usr/local/nagios/libexec/check_disk.shvim /usr/local/nagios/libexec/ch ...
- [工具开发] keepalived使用nagios监控脚本
最近在做开发和办公环境的高可用,采用的是keepalived:keepalived基于Linux内核支持的LVS,既能实现高可用,又能实现负载均衡,非常实用. keepalived监控服务状态时可以用 ...
- Linux下针对服务器网卡流量和磁盘的监控脚本
1)实时监控网卡流量的通用脚本: [root@ceph-node1 ~]# cat /root/net_monit.sh #!/bin/bash PATH=/bin:/usr/bin:/sbin:/u ...
- Python 监控脚本(硬盘、cpu、内存、网卡、进程)
#磁盘使用率disk = psutil.disk_partitions()for i in disk: print "磁盘:%s 分区格式:%s"%(i.device,i ...
- 自定义nagios监控脚本---磁盘检测
自定义nagios监控脚本---磁盘检测 1. 在客户端上创建脚本/usr/local/nagios/libexec/check_disk.shvim /usr/local/nagios/libexe ...
- nginx+keepalived主辅切换(监控脚本在keepalived.conf中执行)
以前写过一篇,nginx+keepalived 双机互备的文章,写那篇文章的时候没有想过如果apache或者nginx 挂了,而 keepalived 或者 机器没有死,那么主辅是不会切换的,今天就研 ...
- 【不积跬步,无以致千里】五个常用的Linux监控脚本代码
为大家提供五个常用Linux监控脚本(查看主机网卡流量.系统状况监控.监控主机的磁盘空间,当使用空间超过90%就通过发mail来发警告.监控CPU和内存的使用情况.全方位监控主机),有需要的朋友不妨看 ...
- linux系统CPU,内存,磁盘,网络流量监控脚本
前序 1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2,#vmstat –s 或者#vmstat 虚拟内存统计 3, #cat ...
随机推荐
- 两数相加II--链表
题目 给定两个非空链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储单个数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 进阶: ...
- Qt 的两个许可证区别分析:LGPL 和商业协议
Qt 的两个许可证区别分析:LGPL 和商业协议 Qt 有两个许可证:LGPL 和商业协议.这两个协议在现在的 Qt 版本中的代码是完全一致的(潜在含义是,Qt 的早期版本,商业版的 Qt 通常包含有 ...
- c#WinForm中TeeChart控件的注册和使用
首先要注册好TeeChart控件,注册方法参考:https://blog.csdn.net/my_clear_mind/article/details/79741020 完成注册之后,新建一个WinF ...
- C# 通过方法的字符串名动态调用方法 反射实现
通过字符串执行方法,在可能会调用不同方法时对不同方法进行调用 以下为实例: public class ABC { string str = "通过反射执行的方法"; //Class ...
- Console程序下监控EFCore生成的SQL语句!
最近这两天在使用控制台程序学习EFCore,突然想看看生成的SQL语句,所以在网上找到一位大神的分享的方法! 准备工作: 1). MySqlEFCore NuGet: Pomelo.EntityF ...
- loadrunner:Action.c(4): Error -27796: Failed to connect to server "10.8.251.101:10086": [10060] Connection timed out
Action.c(4): Error -27796: Failed to connect to server "10.8.251.101:10086": [10060] Conne ...
- ASP.NET Core Caching简介
在.NET Core中提供了Caching的组件.目前Caching组件提供了三种存储方式: Memory Redis SQLSever 1.Memeor Caching 新建一个ASP.NET Co ...
- Delphi中destroy, free, freeAndNil, release用法和区别
Delphi中destroy, free, freeAndNil, release用法和区别 1)destroy:虚方法 释放内存,在Tobject中声明为virtual,通常是在其子类中overri ...
- QML官方文档:Qt Quick Controls 1和2对比
Qt Quick Controls有1和2两个版本,在程序中会看到好多1和2版本混合使用的情况. 原文:https://doc.qt.io/qt-5/qtquickcontrols2-differen ...
- 被严重误会?APS系统没有想象的那么复杂
APS的出现要从90年代了,但到现在,很多行业内的顾问或用户提到APS都马上想到的是“要求很精确”“难度很大”“脱离实际”“太理想化”“工作量太大”等等,然后把它束之高阁不睬. 在这里,给大家分析一下 ...