zabbix自定義監(jiān)控網(wǎng)卡流量腳本
2015-11-20 00:09:46
標(biāo)簽:zabbix監(jiān)控網(wǎng)卡流量
原創(chuàng)作品闰集,允許轉(zhuǎn)載沽讹,轉(zhuǎn)載時請務(wù)必以超鏈接形式標(biāo)明文章原始出處、作者信息和本聲明返十。否則將追究法律責(zé)任妥泉。http://msiyuetian.blog.51cto.com/8637744/1714873
之前寫了一篇文章主要介紹zabbix的搭建使用http://msiyuetian.blog.51cto.com/8637744/1705396
下面這篇文章主要介紹zabbix自定義監(jiān)控網(wǎng)卡流量的腳本實(shí)現(xiàn)
前期準(zhǔn)備
1椭微、說明
server ip :192.168.0.115
client ip :192.168.0.114
2洞坑、開啟服務(wù)
因為之前搭建過zabbix環(huán)境,這里就不重復(fù)了蝇率,直接開啟服務(wù)端的所需服務(wù):
[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服務(wù):
[root@client ~]# /etc/init.d/zabbix-agent start
以下命令都在客戶端執(zhí)行
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)侧漓,自己寫的腳本往往會有參數(shù),所以需要加监氢,這是固定寫法布蔗,如果腳本壓根就沒有什么參數(shù),那么這個就省了浪腐。逗號后面就是我們寫的腳本的路徑了纵揍,再后面就是要用到的參數(shù),有幾個就寫幾议街。
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" ]
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
說明:腳本的思路就是通過查看文件 /proc/net/dev 里面的數(shù)值,來計算實(shí)時網(wǎng)卡流量特漩,其實(shí)我算的是一個平均值吧雹。分為進(jìn)和出。如果這個腳本每隔1分鐘執(zhí)行一次涂身,那么算出來的流量值就是1分鐘的平均值雄卷。
3、修改權(quán)限
[root@client ~]# chmod a+x /usr/local/sbin/zabbix/net.sh
4蛤售、執(zhí)行腳本前的操作
[root@client ~]# touch /tmp/net[io].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龙亲、執(zhí)行腳本
[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悍抑、檢查腳本是否可用(在服務(wù)端執(zhí)行)
[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]"
2
7鳄炉、在zabbix網(wǎng)頁上配置
首先找到對應(yīng)添加的主機(jī),這里我用上篇文章做實(shí)驗時候添加的主機(jī)搜骡,名為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:
Configuration?--> Hosts?--> Items?--> Create item
Name:eth0_net_out
Type: Zabbix agent
Key:my.net.if[eth0,out]
Update interval (in sec):30
Save
然后我們在Monitoring--> Latest data 找到對應(yīng)的主機(jī)名,看到對應(yīng)的項目
也可以點(diǎn)開右邊的 Graph 查看圖表形式记靡。