天天看点

zabbix监控网卡流量

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

<a href="https://s4.51cto.com/wyfs02/M01/8E/A9/wKioL1jIr5Gj8QO4AAAnstld0H8054.png" target="_blank"></a>

   说明:

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

   bytes表示收发的字节数;

   packets表示收发正确的包量;

   errs表示收发错误的包量;

   drop表示收发丢弃的包量;

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

    内容:

<code>#!/bin/bash</code>

<code>eth=$1   </code><code># 第一个参数,可以针对多个网卡</code>

<code>io=$2     </code><code># 第二个参数,可以针对进出流量</code>

<code>net_file=</code><code>"/proc/net/dev"</code>  <code># 网卡流量从该文件中取,该值为总计,如记录几天的值,需做减法</code>

<code>if</code> <code>[ $2 == </code><code>"in"</code> <code>]   </code><code># 收到的流量值</code>

<code>then</code>

<code>    </code><code>n_new=`</code><code>grep</code> <code>"$eth"</code> <code>$net_file|</code><code>awk</code> <code>'{print $2}'</code><code>`  </code><code># 获得最新的网卡流量值</code>

<code>    </code><code>n_old=`</code><code>tail</code> <code>-1 </code><code>/tmp/neti</code><code>.log`   </code><code># 获得上一次记录的网卡流量值</code>

<code>    </code><code>n=`</code><code>echo</code> <code>"$n_new-$n_old"</code><code>|</code><code>bc</code><code>`   </code><code># 流量值之差;bc是一个计算器,直接出结果</code>

<code>    </code><code>d_new=`</code><code>date</code> <code>+%s`   </code><code># 记录最新的时间戳</code>

<code>    </code><code>d_old=`</code><code>tail</code> <code>-2 </code><code>/tmp/neti</code><code>.log|</code><code>head</code> <code>-1`   </code><code># 获得上一次时间戳</code>

<code>    </code><code>d=`</code><code>echo</code> <code>"$d_new-$d_old"</code><code>|</code><code>bc</code><code>`   </code><code># 时间戳之差</code>

<code>    </code><code>if_net=`</code><code>echo</code> <code>"$n/$d"</code><code>|</code><code>bc</code><code>`  </code><code># 流量差值/时间差,取平均值</code>

<code>    </code><code>echo</code> <code>$if_net </code>

<code>    </code><code>date</code> <code>+%s&gt;&gt;</code><code>/tmp/neti</code><code>.log   </code><code># 记录一个时间戳,放文件中,即记录d_new</code>

<code>    </code><code>grep</code> <code>"$eth"</code> <code>$net_file|</code><code>awk</code> <code>'{print $2}'</code><code>&gt;&gt;</code><code>/tmp/neti</code><code>.log   </code><code># 将获取的流量值,放进时间戳的文件中,即记录n_new</code>

<code>elif</code> <code>[ $2 == </code><code>"out"</code> <code>]</code>

<code>    </code><code>n_new=`</code><code>grep</code> <code>"$eth"</code> <code>$net_file|</code><code>awk</code> <code>'{print $10}'</code><code>`</code>

<code>    </code><code>n_old=`</code><code>tail</code> <code>-1 </code><code>/tmp/neto</code><code>.log`</code>

<code>    </code><code>n=`</code><code>echo</code> <code>"$n_new-$n_old"</code><code>|</code><code>bc</code><code>`</code>

<code>    </code><code>d_new=`</code><code>date</code> <code>+%s`</code>

<code>    </code><code>d_old=`</code><code>tail</code> <code>-2 </code><code>/tmp/neto</code><code>.log|</code><code>head</code> <code>-1`</code>

<code>    </code><code>d=`</code><code>echo</code> <code>"$d_new-$d_old"</code><code>|</code><code>bc</code><code>`</code>

<code>    </code><code>if_net=`</code><code>echo</code> <code>"$n/$d"</code><code>|</code><code>bc</code><code>`</code>

<code>    </code><code>echo</code> <code>$if_net</code>

<code>    </code><code>date</code> <code>+%s&gt;&gt;</code><code>/tmp/neto</code><code>.log</code>

<code>    </code><code>grep</code> <code>"$eth"</code> <code>$net_file|</code><code>awk</code> <code>'{print $10}'</code><code>&gt;&gt;</code><code>/tmp/neto</code><code>.log</code>

<code>else</code>

<code>    </code><code>echo</code> <code>0</code>

<code>fi</code>

    创建文件,赋予初始值:  

<code>touch</code> <code>/tmp/neti</code><code>.log</code>

<code>chown</code> <code>zabbix  </code><code>/tmp/neti</code><code>.log</code>

<code>date</code> <code>+%s &gt;&gt;</code><code>/tmp/neti</code><code>.log</code>

<code>grep</code> <code>eth0 </code><code>/proc/net/dev</code> <code>|</code><code>awk</code> <code>'{print $2}'</code> <code>&gt;&gt;</code><code>/tmp/neti</code><code>.log</code>

<code>touch</code> <code>/tmp/neto</code><code>.log</code>

<code>chown</code> <code>zabbix  </code><code>/tmp/neto</code><code>.log</code>

<code>date</code> <code>+%s &gt;&gt;</code><code>/tmp/neto</code><code>.log</code>

<code>grep</code> <code>eth0 </code><code>/proc/net/dev</code> <code>|</code><code>awk</code> <code>'{print $10}'</code> <code>&gt;&gt;</code><code>/tmp/neto</code><code>.log</code>

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]"

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

<a href="https://s4.51cto.com/wyfs02/M02/8E/A9/wKioL1jIsbLgxLDKAACXwciav74029.png" target="_blank"></a>

<a href="https://s2.51cto.com/wyfs02/M00/8E/AB/wKiom1jIseKRq1L7AAC26dQ281o927.png" target="_blank"></a>

本文转自 huangzp168 51CTO博客,原文链接:http://blog.51cto.com/huangzp/1906750,如需转载请自行联系原作者