用 Python 脚本实现对 Linux 服务器的网卡流量监控

*这篇文章网上已经有相关代码,为了加深印象,我做了相关注释,希望对朋友们有帮助

工作原理:基于/proc文件系统

Linux 系统为管理员提供了非常好的方法,使其可以在系统运行时更改内核,而不需要重新引导内核系统,这是通过/proc 虚拟文件系统实现的。/proc 文件虚拟系统是一种内核和内核模块用来向进程(process)发送信息的机制(所以叫做“/proc”),这个伪文件系统允许与内核内部数据结构交互,获取有关进程的有用信息,在运行中(on the fly)改变设置(通过改变内核参数)。与其他文件系统不同,/proc 存在于内存而不是硬盘中。proc 文件系统提供的信息如下:

1:进程信息:系统中的任何一个进程,在 proc 的子目录中都有一个同名的进程 ID,可以找到 cmdline、

   mem、root、stat、statm,以及 status。某些信息只有超级用户可见,例如进程根目录。每一个单独含

   有现有进程信息的进程有一些可用的专门链接,系统中的任何一个进程都有一个单独的自链接指向进程

   信息,其用处就是从进程中获取命令行信息。
2:系统信息:如果需要了解整个系统信息中也可以从/proc/stat 中获得,其中包括 CPU 占用情况、磁盘

   空间、内存对换、中断等。
3:CPU 信息:利用/proc/CPUinfo 文件可以获得中央处理器的当前准确信息。
   负载信息:/proc/loadavg 文件包含系统负载信息。
4:系统内存信息:/proc/meminfo 文件包含系统内存的详细信息,其中显示物理内存的数量、可用交换空

   间的数量,以及空闲内存的数量等。

                                                                                             摘记自http://www.ibm.com/developerworks/cn/linux/1312_caojh_pythonlinux/index.html

使用 Python 脚本实现对 Linux 服务器的监控
#!/usr/bin/env python
# _*_coding:utf-8_*_
# File: get_net_infor.py
# Author li ning
# Date 2015.11.30 00:41:35
import sys
import time

"""
原理:linux系统基于一切皆文件原理,我们可以把任何信息当做字符串读入进行分析
"""
#若没有提供参数,这里默认为网卡为eth0,可根据自己实际情况接参数.eg:(python get_net_infor.py eth1)
if len(sys.argv) > 1:
	INTERFACE = sys.argv[1]
else:
    INTERFACE = "eth0"
print "当前查看的网卡为:", INTERFACE

STATS = []

#定义接收流量函数
def rx():
    #open 读取文件若非常大,读入到内存会非常耗时,这时就建议用readline 而非readlines
    ifstat = open("/proc/net/dev").readlines()
    #遍历list ifstat中的字符串
    for interface in ifstat:
        #判断eth0是否在字符串中
        if INTERFACE in interface:
            #默认空格分裂字符串获取需要的流量包值
            stat = float(interface.split()[1])
            #将值复制给STATS
            STATS[0:] = [stat]

#定义发送流量函数
def tx():
    ifstat = open("/proc/net/dev").readlines()
    for interface in ifstat:
        if INTERFACE in interface:
            stat = float(interface.split()[9])
            STATS[1:] = [stat]

if __name__ == ‘__main__‘:
    print "IN",">>>>","OUT"
    rx()
    tx()
    #死循环 时刻监控网卡流量
    while True:
        time.sleep(1)
        sta_0 = list(STATS)
        rx()
        tx()
        RX = float(STATS[0])
        RX_0 = sta_0[0]
        TX = float(STATS[0])
        TX_0 = sta_0[1]
#round函数转换,保留小数点后三位
        RX_INFO = round((RX - RX_0)/1024/1024,3)
       TX_INFO = round((TX - TX_0)/1024/1024,3)
       print RX_INFO,"MB",TX_INFO,"MB"
以下是本地运行结果

时间: 2024-11-08 01:15:29

用 Python 脚本实现对 Linux 服务器的网卡流量监控的相关文章

用 Python 脚本实现对 Linux 服务器的监控

hon 分享到:8 原文出处: 曹江华 目前 Linux 下有一些使用 Python 语言编写的 Linux 系统监控工具 比如 inotify-sync(文件系统安全监控软件).glances(资源监控工具)在实际工作中,Linux 系统管理员可以根据自己使用的服务器的具体情况编写一下简单实用的脚本实现对 Linux 服务器的监控. 本文介绍一下使用 Python 脚本实现对 Linux 服务器 CPU 内存 网络的监控脚本的编写. Python 版本说明 Python 是由 Guido va

keepalived结合nginx状态检测脚本实现对web服务器集群的高可用

实验环境 两台CentOS-7.5虚拟机web1:10.0.11.203web2:10.0.11.204VIP :10.0.11.210web类型:nginx客户端:自用笔记本(win10)nginx状态检测脚本:ck_nginx.sh 实验一.使用keepalived简单实现web集群的高可用功能 1.准备两台web服务器 1)web1网卡情况[[email protected] ~]# [[email protected] ~]# ip a 2)web2网卡情况[[email protect

Linux下iftop网卡流量监控使用

在类linux系统中可以使用top查看系统资源.进程.内存占用等信息.查看网络状态可以使用netstat.nmap等工具.若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop. 一.iftop是什么? iftop是类似于top的实时流量监控工具. 官方网站:http://www.ex-parrot.com/~pdw/iftop/ 二.iftop有什么用? iftop可以用来监控网卡的实时流量(可以指定网段).反向解析IP.显示端口信息等,详细的将会在后面的使用参数中说明. 三.安

Cacti实现对linux和win监控

参考文章:http://coolner.blog.51cto.com/957576/689400 Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具. Cacti 是通过 snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数.它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结 构.host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善.界面友

linux服务器查看网卡连接的交换机IP和PORT

cdpr命令: 安装:yum -y install cdpr   (安装epel库) [21:53:07 [email protected] ~]# cdpr -h cdpr - Cisco Discovery Protocol Reporter Version 2.4 Copyright (c) 2002-2010 - MonkeyMental.com d: Specify device to use (eth0, hme0, etc.) h: Print this usage t: time

linux 服务器双网卡绑定

1.首先关闭NetworkManager服务 [[email protected] ~]# service NetworkManager stop [[email protected] ~]# chkconfig NetworkManager off 2.配置网卡一 [[email protected] ~]# vi ifcfg-eth0  DEVICE=eth0  ONBOOT=yes  BOOTPROTO=none  USERCTL=no  MASTER=bond0  SLAVE=yes 3

Linux查看实时网卡流量的几种方式

Linux查看实时网卡流量的几种方式 来源  https://www.jianshu.com/p/b9e942f3682c 在工作中,我们经常需要查看服务器的实时网卡流量.通常,我们会通过这几种方式查看Linux服务器的实时网卡流量. 1. sar -n DEV 1 2 sar命令包含在sysstat工具包中,提供系统的众多统计数据.其在不同的系统上命令有些差异,某些系统提供的sar支持基于网络接口的数据统计,也可以查看设备上每秒收发包的个数和流量. sar –n DEV 1 2 命令后面1 2

Linux下查看网卡流量

        在Linux下怎么看网络流量? 在Windows下,我们可以很方便的通过360来查看网络流量,知道哪个进程占用的网络带宽比较多.那在Linux下怎么看流量呢,对于Web服务器来说这是很重要的. 下面这边博客很仔细的介绍了Linux下看流量的方法: Linux 各种查看网卡流量的方法  http://jasonyong.blog.51cto.com/47753/174197 我使用了其中一些,还找了网上其他一些资料,总结如下: 1. 使用 iptraf iptraf是一个实时查看网

zabbix监控安装及实现对tomcat服务器监控

一.zabbix监控安装配置实现对本机的监控 监控端ip 192.168.1.11 被监控端ip 192.168.1.12 1.zabbix相关包的安装 1)zabbix的仓库源配置 [email protected]:~# wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-2+bionic_all.deb 2)安装zabbixx-release_4.0-2+b