zabbix监控网卡流量

zabbix监控网卡流量

大家好,又见面了,我是全栈君。

1. 根据/proc/net/dev文件,获取网卡流量信息

wKioL1jIr5Gj8QO4AAAnstld0H8054.png

 

   说明:

   最左边的表示接口的名字,Receive表示收包,Transmit表示发包:

   bytes表示收发的字节数;

   packets表示收发正确的包量;

   errs表示收发错误的包量;

   drop表示收发丢弃的包量;

 


2. zabbix客户端,编辑脚本/tmp/net.sh,初始化环境

    内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/bash
eth=$1   
# 第一个参数,可以针对多个网卡
io=$2     
# 第二个参数,可以针对进出流量
net_file=
"/proc/net/dev"  
# 网卡流量从该文件中取,该值为总计,如记录几天的值,需做减法
if 
[ $2 == 
"in" 
]   
# 收到的流量值
then
    
n_new=`
grep 
"$eth" 
$net_file|
awk 
'{print $2}'
`  
# 获得最新的网卡流量值
    
n_old=`
tail 
-1 
/tmp/neti
.log`   
# 获得上一次记录的网卡流量值
    
n=`
echo 
"$n_new-$n_old"
|
bc
`   
# 流量值之差;bc是一个计算器,直接出结果
    
d_new=`
date 
+%s`   
# 记录最新的时间戳
    
d_old=`
tail 
-2 
/tmp/neti
.log|
head 
-1`   
# 获得上一次时间戳
    
d=`
echo 
"$d_new-$d_old"
|
bc
`   
# 时间戳之差
    
if_net=`
echo 
"$n/$d"
|
bc
`  
# 流量差值/时间差,取平均值
    
echo 
$if_net 
    
date 
+%s>>
/tmp/neti
.log   
# 记录一个时间戳,放文件中,即记录d_new
    
grep 
"$eth" 
$net_file|
awk 
'{print $2}'
>>
/tmp/neti
.log   
# 将获取的流量值,放进时间戳的文件中,即记录n_new
elif 
[ $2 == 
"out" 
]
then
    
n_new=`
grep 
"$eth" 
$net_file|
awk 
'{print $10}'
`
    
n_old=`
tail 
-1 
/tmp/neto
.log`
    
n=`
echo 
"$n_new-$n_old"
|
bc
`
    
d_new=`
date 
+%s`
    
d_old=`
tail 
-2 
/tmp/neto
.log|
head 
-1`
    
d=`
echo 
"$d_new-$d_old"
|
bc
`
    
if_net=`
echo 
"$n/$d"
|
bc
`
    
echo 
$if_net
    
date 
+%s>>
/tmp/neto
.log
    
grep 
"$eth" 
$net_file|
awk 
'{print $10}'
>>
/tmp/neto
.log
else
    
echo 
0
fi

    创建文件,赋予初始值:  

1
2
3
4
5
6
7
8
touch 
/tmp/neti
.log
chown 
zabbix  
/tmp/neti
.log
date 
+%s >>
/tmp/neti
.log
grep 
eth0 
/proc/net/dev 
|
awk 
'{print $2}' 
>>
/tmp/neti
.log
touch 
/tmp/neto
.log
chown 
zabbix  
/tmp/neto
.log
date 
+%s >>
/tmp/neto
.log
grep 
eth0 
/proc/net/dev 
|
awk 
'{print $10}' 
>>
/tmp/neto
.log


3. 客户端修改配置文件/etc/zabbix/zabbix_agentd.conf

    UnsafeUserParameters=1

    UserParameter=my.net.if[*], /tmp/shell/net.sh $1 $2



4. zabbix服务端测试

    zabbix_get -s 172.16.115.162 -p10050 -k “my.net.if[eth0,in]”

   wKioL1jIsQSCT93dAAALi80G_Eo440.png


5. 服务端web添加监控项,查看结果

 wKioL1jIsXqAvxMCAADm-rm8EJs183.png

wKioL1jIsbLgxLDKAACXwciav74029.png

wKiom1jIseKRq1L7AAC26dQ281o927.png










本文转自 huangzp168 51CTO博客,原文链接:http://blog.51cto.com/huangzp/1906750,如需转载请自行联系原作者
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107915.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 二叉树算法(java)

    为什么实用二叉树一,在有序数组中插入删除数据太慢   1插入或者删除一条数据会移动后面的所有数据 二,在链表中查找数据太慢  2查找只能从头或者尾部一条一条的找用树解决问题   有没有一种插入和删除像链表那么快,查询可以向有序数组一样查得快那样就好了。 数实现了这些特点,称为了最有意思的数据结构之一树的术语如下图树分平衡树和非平衡树二叉树的类publicclassTree{ …

    2022年4月9日
    41
  • React入门小记

    React入门小记

    2021年7月5日
    100
  • 贪心 Codeforces Round #263 (Div. 2) C. Appleman and Toastman

    贪心 Codeforces Round #263 (Div. 2) C. Appleman and Toastman

    2021年9月8日
    59
  • python count()函数

    python count()函数Python元组count()方法用于统计某个元素在元祖,列表,字符串中出现的次数。可选参数为在字符串搜索的开始与结束位置。参数sub–搜索的子字符串start–字符串开始搜索

    2022年7月5日
    21
  • db2 分区数据库详解

    db2 分区数据库详解本文主要介绍什么是DB2数据库分区,为什么采用数据库分区,并以BalancedWarehouseE7100为例介绍数据库分区管理的基本方法及应用实践。DB2数据库分区是DB2企业版DPF(DataPartitioningFeature)选件提供的,它主要用来为大规模数据处理、高并发数据访问提供支持。DB2数据库分区采用Share-nothing体系结构

    2022年5月3日
    33
  • matlab求一维热传导方程数值解代码,一维热传导方程数值解法及matlab实现

    matlab求一维热传导方程数值解代码,一维热传导方程数值解法及matlab实现实例简介 含 matlab 程序 个人感觉很有帮助 在研究传热学的可以下来看看能呈守恒定律 因为内部无热源 净流入的热量应该等于介质在此时间内温度升高所需要的热量 cdmdu dQ q x t g x dx t dtg x t dxdt comdt cpdd perdu q dxdtcpm 9 即 cPm2 9 2 q x t q x dx t xxIxX kCOL 由

    2025年10月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号