网卡监控脚本--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 ...
随机推荐
- 【C#进阶学习】泛型
一.泛型引入 需求:传入一个类型(整型/日期/字符串或其他),打印出它的类型和内容. 1.初级版 public class CommonMethod { /// <summary> /// ...
- 【翻译】tus----一个可续传文件上传的开放协议
tus tus是一个可续穿文件上传协议,它以Http协议为载体,统一了一个文件断点续传的标准. 这篇文章翻译自https://tus.io/ 目前该协议版本信息如下: Version: 1.0.0 ( ...
- python每日经典算法题5(基础题)+1(较难题)
一:基础算法题5道 1.阿姆斯特朗数 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数.判断用户输入的数字是否为阿姆斯特朗数. (1)题目分析:这里要先得到该数是多少位的,然后再把 ...
- 设计模式之(十四)责任链模式(Chain of Responsibility)
在业务场景中,有很多是需要审批的.审核方式还可能常常发生变化,而责任链模式就是为了解决这种场景的情况的. 责任链模式定义:十多个对象都有机会处理请求,从而避免发送者和接受者之间的耦合关系.讲这些对象连 ...
- web安全常用工具
简单工具:明小子,阿d注入工具,namp,穿山甲,御剑,旁注 漏洞扫描工具:appscan .awvs.nbsi 端口扫描工具:nessus.namp.天镜脆弱性扫描与管理系统 数据库备份工具:中国菜 ...
- Docker搭建Nexus(Maven私库)
0.镜像的查找:docker search nexus 1.拉取官方镜像:docker pull sonatype/nexus3 2.创建了自己的目录 (/opt/nexus/nexus-data) ...
- 第一部分day4-三次登录实验、字符编码
#-----三次登录实验----- memu = { "陕西":{ "西安市":{ "新城区":["大明宫遗址",&qu ...
- CentOS6.7编译安装mysql5.6
可能因为有各种情况,无法通过yum安装mysql,这里记录一下编译安装的简单步骤 使用yum安装一些依赖 yum -y install make gcc-c++ cmake bison-devel ...
- Codeforces A. Playlist(暴力剪枝)
题目描述: Playlist time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...
- 【转】Pandas学习笔记(三)修改&添加值
Pandas学习笔记系列: Pandas学习笔记(一)基本介绍 Pandas学习笔记(二)选择数据 Pandas学习笔记(三)修改&添加值 Pandas学习笔记(四)处理丢失值 Pandas学 ...