zabbix自定義監控流量腳本

完全參考,只是把單位換了一下,默認從該文件查看的流量值單位是bps,所以轉換了一下,系統默認是沒有bc計算器的,需要下載

yum -y install bc

#!/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 /etc/zabbix/zabbix_agentd.d/netin.log`
        # 流量值之差
        diff=$(echo "$n_new - $n_old"|bc)
        #轉爲KB(單位是bps,KB爲/1024,MB爲/1048576)
        diff_h=$(echo "$diff / 1024"|bc)
        # 記錄最新的時間戳
        d_new=`date +%s`
        # 獲得上一次時間戳
        d_old=`tail -2 /etc/zabbix/zabbix_agentd.d/netin.log|head -1`
        # 時間戳之差
        d_diff=$(echo "$d_new - $d_old"|bc)
        # 流量差值/時間差,得出平均下載速度,乘8得到帶寬數
        if_net=$(echo "$diff_h / $d_diff * 8"|bc)
        echo $if_net
        # 記錄一個時間戳,放文件中,即記錄d_new
        date +%s>>/etc/zabbix/zabbix_agentd.d/netin.log
        # 將獲取的流量值,放進時間戳的文件中,即記錄n_new
        grep "$eth" $net_file|awk '{print $2}'>>/etc/zabbix/zabbix_agentd.d/netin.log
elif [ $2 == "out" ]
then
        n_new=`grep "$eth" $net_file|awk '{print $10}'`
        n_old=`tail -1 /etc/zabbix/zabbix_agentd.d/netout.log`
        diff=$(echo "$n_new - $n_old"|bc)
        diff_h=$(echo "$diff / 1024"|bc)
        d_new=`date +%s`
        d_old=`tail -2 /etc/zabbix/zabbix_agentd.d/netout.log|head -1`
        d_diff=$(echo "$d_new - $d_old"|bc)
        if_net=$(echo "$diff_h / $d_diff * 8"|bc)
        echo $if_net
        date +%s>>/etc/zabbix/zabbix_agentd.d/netout.log
        grep "$eth" $net_file|awk '{print $10}'>>/etc/zabbix/zabbix_agentd.d/netout.log
else
        echo 0
fi

一鍵agent端安裝配置腳本

#!/bin/bash
#zabbix4.2 agent端安裝配置

#server端IP
s_ip=192.168.1.100
#本機IP
host_ip=$(ip -4 a|grep inet|head -2|tail -1|awk -F '/' '{print $1}'|awk -F' ' '{print $2}')

#檢查操作系統版本,該腳本只能運行在 Centos 7.x 系統上
cat /etc/redhat-release |grep -i centos |grep '7.[[:digit:]]' &>/dev/null
if [[ $? != 0 ]]
then
    echo -e "\e[1;31m不支持的操作系統,該腳本只適用於CentOS 7.x  x86_64 操作系統\e[0m"
    exit 1
fi

#檢查是否存在流量監控腳本
if [ ! -f net.sh ];then
	echo -e "\e[1;31m未找得到net.sh流量監控腳本,請上傳後重試\e[0m"
	exit 2
fi

#下載yum源
rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
#更改爲阿里鏡像
sed -i 's/repo.zabbix.com/mirrors.aliyun.com\/zabbix/g' /etc/yum.repos.d/zabbix.repo
#清理yum源緩存
yum clean all
#安裝zabbix-agent
yum -y install zabbix-agent

#設置server端IP,被動模式
sed -i "s/Server=127.0.0.1/Server=$s_ip/" /etc/zabbix/zabbix_agentd.conf
#設置server端IP,主動模式,當和上一行一起啓動時,認爲主動
sed -i "s/ServerActive=127.0.0.1/ServerActive=$s_ip/" /etc/zabbix/zabbix_agentd.conf
#指定當前主機的主機名,server端通過此參數對應的主機名識別當前主機(主動模式)
sed -i "/^Hostname=/d" /etc/zabbix/zabbix_agentd.conf
sed -i "/^# Hostname=/a Hostname=$host_ip" /etc/zabbix/zabbix_agentd.conf
#添加是否限制用戶自定義 keys 使用特殊字符
sed -i "/^# UnsafeUserParameters=0/a UnsafeUserParameters=1" /etc/zabbix/zabbix_agentd.conf

#增加自定義key值
#流量,單位KB
echo "UserParameter=net.if[*],/etc/zabbix/zabbix_agentd.d/net.sh \$1 \$2" >> /etc/zabbix/zabbix_agentd.d/userparameter.conf

#創建流量監控腳本需要的文本,並記錄當前值
touch /etc/zabbix/zabbix_agentd.d/netin.log && touch /etc/zabbix/zabbix_agentd.d/netout.log
chown zabbix.zabbix /etc/zabbix/zabbix_agentd.d/netin.log
chown zabbix.zabbix /etc/zabbix/zabbix_agentd.d/netout.log
date +%s >> /etc/zabbix/zabbix_agentd.d/netin.log && grep eth0 /proc/net/dev |awk '{print $2}' >> /etc/zabbix/zabbix_agentd.d/netin.log
date +%s >> /etc/zabbix/zabbix_agentd.d/netout.log && grep eth0 /proc/net/dev |awk '{print $2}' >> /etc/zabbix/zabbix_agentd.d/netout.log
#將流量腳本移至agent目錄下,並給與執行權限
mv ~/net.sh /etc/zabbix/zabbix_agentd.d/
chmod a+x etc/zabbix/zabbix_agentd.d/net.sh

#啓動並開機啓動
systemctl enable zabbix-agent
systemctl start zabbix-agent
if [ $? = 0 ];then
	echo  -e "\e[1;31m已啓動成功,請開啓本機對外端口10050,然後到$s_ip機器執行:\nzabbix_get -s 本機IP -p10050 -k "net.if[eth0,out]" \n查看是否能獲取本機目前出站流量信息。\e[0m"
else
	echo  -e "\e[1;31m啓動失敗,請檢查配置。\e[0m"
fi

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章