网卡监控脚本--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 ...
随机推荐
- AtCoder diverta 2019 Programming Contest 2
AtCoder diverta 2019 Programming Contest 2 看起来我也不知道是一个啥比赛. 然后就写写题解QWQ. A - Ball Distribution 有\(n\)个 ...
- 【IntelliJ IDEA】idea部署服务到Tomcat的工作原理
参考地址: https://blog.csdn.net/qq_41116058/article/details/81435084 为什么idea部署服务到tomcat时候,一定要修改Applicati ...
- 【须弥SUMERU】分布式安全服务编排实践
一.概要 1.分布式安全服务编排概念 2.须弥(Sumeru)关键实现思路 3.应用场景 二.前言 在笔者看来,安全防御的本质之一是增加攻击者的攻击成本,尤其是时间成本.那么从防御的角度来说,如何尽早 ...
- java get请求带参数报错 java.io.IOException: Server returned HTTP response code: 400 for URL
解决方案 在使用JAVA发起http请求的时候,经常会遇到这个错误,我们copy请求地址在浏览器中运行的时候又是正常运行的,造成这个错误的原因主要是因为请求的URL中包含空格,这个时候我们要使用URL ...
- c# 合并两个DataTable
当两个DataTable 结构相同可以用自带方法(Merge)合并 // // 摘要: // 将指定的 System.Data.DataTable 与当前的 DataTable 合并,指示是否在当前的 ...
- MongoDB下载+安装+配置+错误解决方法
下载 官网下载: https://www.mongodb.com/download-center/community Server=>Download 安装 下载完成后安装 建议下载根目录(下过 ...
- 安全漏洞系列(一)---XSS漏洞解决方案(C# MVC)
参考地址:https://www.cnblogs.com/sagecheng/p/9462239.html 测试项目:MVCDemo 一.XSS漏洞定义 XSS攻击全称跨站脚本攻击,它允许恶意web用 ...
- HDU2023求平均成绩 - biaobiao88
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2023 求平均成绩 Problem Description 假设一个班有n(n<=50)个学生,每 ...
- 2019 浩德钢圈java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.浩德钢圈等公司offer,岗位是Java后端开发,因为发展原因最终选择去了浩德钢圈,入职一年时间了,也成为了面 ...
- PHP错误日志相关
https://cloud.tencent.com/developer/article/1167951 php错误日志总结 https://cloud.tencent.com/developer/ ...