天天看點

zabbix自定義監控網卡流量腳本

之前寫了一篇文章主要介紹zabbix的搭建使用http://msiyuetian.blog.51cto.com/8637744/1705396

下面這篇文章主要介紹zabbix自定義監控網卡流量的腳本實作

前期準備

1、說明

server ip :192.168.0.115

client ip :192.168.0.114

2、開啟服務

因為之前搭建過zabbix環境,這裡就不重複了,直接開啟服務端的所需服務:

[root@server ~]# /etc/init.d/httpd start

[root@server ~]# /etc/init.d/mysqld start

[root@server ~]# /etc/init.d/zabbix-server start

[root@server ~]# /etc/init.d/zabbix-agent start

然後在浏覽器輸入: http://192.168.0.115/zabbix,輸入使用者名密碼後驗證登入到zabbix主界面。

用戶端也開啟zabbix-agent服務:

[root@client ~]# /etc/init.d/zabbix-agent start

以下指令都在用戶端執行

1、修改配置檔案

[root@client ~]# vim /etc/zabbix/zabbix_agentd.conf   //改動兩個地方

UnsafeUserParameters=1

UserParameter=my.net.if[*], /usr/local/sbin/zabbix/net.sh $1 $2

說明:UserParameter用來自定義鍵值,(類似于net.if.in),自己寫的腳本往往會有參數,是以需要加,這是固定寫法,如果腳本壓根就沒有什麼參數,那麼這個就省了。逗号後面就是我們寫的腳本的路徑了,再後面就是要用到的參數,有幾個就寫幾。

2、編寫腳本

[root@client ~]# mkdir /usr/local/sbin/zabbix

[root@client ~]# vim /usr/local/sbin/zabbix/net.sh

#!/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`

    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

    grep "$eth" $net_file|awk '{print $2}'>>/tmp/neti.log

elif [ $2 == "out" ]

    n_new=`grep "$eth" $net_file|awk '{print $10}'`

    n_old=`tail -1 /tmp/neto.log`

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

    date +%s>>/tmp/neto.log

    grep "$eth" $net_file|awk '{print $10}'>>/tmp/neto.log

else

    echo 0

fi

說明:腳本的思路就是通過檢視檔案 /proc/net/dev 裡面的數值,來計算實時網卡流量,其實我算的是一個平均值。分為進和出。如果這個腳本每隔1分鐘執行一次,那麼算出來的流量值就是1分鐘的平均值。

3、修改權限

[root@client ~]# chmod a+x /usr/local/sbin/zabbix/net.sh

4、執行腳本前的操作

[root@client ~]# touch /tmp/net{i,o}.log

[root@client ~]# date +%s >>/tmp/neti.log

[root@client ~]# grep eth0 /proc/net/dev |awk '{print $2}' >>/tmp/neti.log

[root@client ~]# date +%s >>/tmp/neto.log

[root@client ~]# grep eth0 /proc/net/dev |awk '{print $10}' >>/tmp/neto.log

[root@client ~]# chown zabbix  /tmp/net[io].log

[root@client ~]# /etc/init.d/zabbix-agent restart

5、執行腳本

[root@client ~]# /usr/local/sbin/zabbix/net.sh eth0 in

3                           

注意:若報“bc: command not found”,需安裝bc:yum install -y bc

[root@client ~]# /usr/local/sbin/zabbix/net.sh eth0 out

2

6、檢查腳本是否可用(在服務端執行)

[root@server ~]# zabbix_get -s 192.168.0.114 -p10050 -k "my.net.if[eth0,in]"

3

[root@server ~]# zabbix_get -s 192.168.0.114 -p10050 -k "my.net.if[eth0,out]"

7、在zabbix網頁上配置

首先找到對應添加的主機,這裡我用上篇文章做實驗時候添加的主機,名為tpp,這裡隻修改以下幾處:

添加eth0_in:

Configuration --> Hosts --> Items --> Create item

Name:eth0_net_in

Type: Zabbix agent

Key:my.net.if[eth0,in]

Update interval (in sec):30

Save

zabbix自定義監控網卡流量腳本

添加eth0_out:

Name:eth0_net_out

Key:my.net.if[eth0,out]

zabbix自定義監控網卡流量腳本

然後我們在 Monitoring --> Latest data 找到對應的主機名,看到對應的項目

zabbix自定義監控網卡流量腳本

也可以點開右邊的 Graph 檢視圖表形式。