溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

zabbix 自定義腳本

發(fā)布時(shí)間:2020-05-31 08:28:17 來(lái)源:網(wǎng)絡(luò) 閱讀:914 作者:季先生1 欄目:安全技術(shù)

這個(gè)腳本的思路,自定義一個(gè)key,然后就是通過(guò)查看文件 /proc/net/dev  里面的數(shù)值,來(lái)計(jì)算實(shí)時(shí)網(wǎng)卡流量,其實(shí)我算的是一個(gè)平均值。分為進(jìn)和出。如果這個(gè)腳本每隔1分鐘執(zhí)行一次,那么算出來(lái)的流量值就是1分鐘的平均值。最終得到網(wǎng)卡流量趨勢(shì)圖。


客戶(hù)端操作

# vim /etc/zabbix/zabbix_agentd.conf

# UnsafeUserParameters=0 取消注釋并修改為1,在下面增加一行

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

my.net.if[相當(dāng)于命令名字,他是key

其中UserParameter用來(lái)自定義鍵值,(類(lèi)似于net.if.in),自己寫(xiě)的腳本往往會(huì)有參數(shù),[*] 表示他有自己的參數(shù),所以需要加[*],這是固定寫(xiě)法,如果腳本壓根就沒(méi)有什么參數(shù),那么這個(gè)就省了。逗號(hào)后面就是我們寫(xiě)的腳本的路徑了,再后面就是要用到的參數(shù),有幾個(gè)就寫(xiě)幾。如果沒(méi)有參數(shù),后面的 $1 $2 還有前面的 [*] 就都可以省略。

不足之處:

腳本需要工作中不斷的進(jìn)行改進(jìn)。

并沒(méi)有針對(duì)每個(gè)網(wǎng)卡設(shè)定單獨(dú)的文件,所有網(wǎng)卡使用同一個(gè)日志文件

# 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

----------------------------------------------------------------------------------------------------------------------------

詳解

eth=$1 # 第一個(gè)參數(shù),網(wǎng)卡名字,腳本并不針對(duì)特定的網(wǎng)卡,可以監(jiān)控很多網(wǎng)卡,監(jiān)控進(jìn)和出

io=$2 # 第二個(gè)參數(shù),并非io,而是in or out 的簡(jiǎn)寫(xiě)

net_file="/proc/net/dev" # 最關(guān)鍵文件,網(wǎng)卡流量就是從這個(gè)文件獲得的。這個(gè)腳本的思路,就是通過(guò)查看文件 /proc/net/dev  里面的數(shù)值,來(lái)計(jì)算實(shí)時(shí)網(wǎng)卡流量,其實(shí)我算的是一個(gè)平均值。分為進(jìn)和出。如果這個(gè)腳本每隔1分鐘執(zhí)行一次,那么算出來(lái)的流量值就是1分鐘的平均值。

n_new=`grep "$eth" $net_file|awk '{print $2}'` # 通過(guò)上面的文件,獲得最新的一個(gè)數(shù)值

n_old=`tail -1 /tmp/neti.log` # 查看上一次網(wǎng)卡流量多少

n=`echo "$n_new-$n_old"|bc` # n 是兩者的差值(上面二個(gè)新老網(wǎng)卡流量做減法)

d_new=`date +%s` # 記錄當(dāng)前的時(shí)間戳

d_old=`tail -2 /tmp/neti.log|head -1` # 查找上一次的時(shí)間戳

d=`echo "$d_new-$d_old"|bc` # d 是兩個(gè)時(shí)間間隔

if_net=`echo "$n/$d"|bc` # 求平均值

echo $if_net # 輸出平均值

date +%s>>/tmp/neti.log # 當(dāng)前時(shí)間戳輸入到日志中

grep "$eth" $net_file|awk '{print $2}'>>/tmp/neti.log # 當(dāng)前流量輸入到日志中

----------------------------------------------------------------------------------------------------------------------------


值與上一次減一下然后除一下,求一個(gè)平均值

# chmod a+x /usr/local/sbin/zabbix/net.sh # 更改權(quán)限

執(zhí)行操作執(zhí)行,先創(chuàng)建腳本里面要使用的目錄和文件

# touch /tmp/net[io].log

# date +%s >>/tmp/neti.log

# grep eth0 /proc/net/dev |awk '{print $2}' >>/tmp/neti.log

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

# grep eth0 /proc/net/dev |awk '{print $10}' >>/tmp/neto.log

# chown zabbix  /tmp/net[io].log

執(zhí)行腳本檢測(cè):

# /usr/local/sbin/zabbix/net.sh eth0 in

# /usr/local/sbin/zabbix/net.sh eth0 out

此時(shí)檢測(cè) eth2 或者其他網(wǎng)卡的流量會(huì)報(bào)錯(cuò),因?yàn)閳?zhí)行腳本之前,grep 過(guò)濾出來(lái)的是 eth0 的流量,這里直接使用 eth2 得出的數(shù)字肯定是錯(cuò)誤的。所以,如果是想檢測(cè) eth2 的流量,那么在 grep 和 touch 的時(shí)候,就應(yīng)該使用 eth2。

# /etc/init.d/zabbix-agent restart

服務(wù)端

# zabbix_get -s 192.168.32.150 -p10050 -k "my.net.if[eth0,out]"查看out網(wǎng)卡流量,單位字節(jié)

395

# zabbix_get -s 192.168.32.150 -p10050 -k "my.net.if[eth0,in]" 查看in網(wǎng)卡流量,單位字節(jié)

308

WEB端

zabbix 自定義腳本

下圖的 key 只能手寫(xiě),并不能選擇。

創(chuàng)建eth0_net_in和eth0_net_out


查看是否添加成功


需求:統(tǒng)計(jì)每分鐘的在線人數(shù),通過(guò)數(shù)據(jù)庫(kù)獲得在線人數(shù)。

思路:

1、客戶(hù)端增加 key

UserParameter=my.online,/usr/local/sbin/zabbix/online.sh

#因?yàn)檫@個(gè)需求沒(méi)有參數(shù),所以去掉參數(shù)選項(xiàng)

2、編寫(xiě)腳本

從數(shù)據(jù)庫(kù)里面獲得每分鐘的在線人數(shù)

3、測(cè)試

服務(wù)端進(jìn)行操作

# zabbix_get -s 192.168.32.150 -p10050 -k "my.online"

如果返回了參數(shù),那么就代表成功。


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI