之前寫了一篇文章主要介紹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 |

添加eth0_out:
Name:eth0_net_out Key:my.net.if[eth0,out] |
然後我們在 Monitoring --> Latest data 找到對應的主機名,看到對應的項目
也可以點開右邊的 Graph 檢視圖表形式。