您的位置:首页 > 其它

zabbix 批量添加聚合图形

2017-09-06 20:37 495 查看
环境为centos 脚本要在centos zabbix服务器上运行,zabbix server上运行

1.先把脚本部署到zabbix客户端,把脚本保存为nic.sh 存放路径确保zabbix可以访问

#!/bin/sh
function NIC {
#变量
#网卡名
NIC=`ifconfig | grep -v ':Link' | grep -E 'Link|flags' | awk '{print $1}' | grep -vE 'lo|^$'`
#统计网卡个数
Num=`ifconfig | grep -v ':Link' | grep -E 'Link|flags' | awk '{print $1}' | grep -vE 'lo|^$' | wc -l`
#新布局的网卡名后面有冒号需要去掉
sed=`ifconfig | grep -v ':Link' | grep -E 'Link|flags' | awk '{print $1}' | grep -vE 'lo|^$'| sed 's/://g'`
#网卡总数减1
Less=`expr $Num - 1`
#用于修改key结尾的自增变量
add="0"
#存放"判断ifconfig是否为新布局"值
judgment=''
#判断ifconfig是否为新布局
if [ $add == 0 ]
then
HWaddr=`ifconfig $i | grep -E 'HWaddr'`
judgment=`echo $?`
fi
#替换NIC变量
if [ $judgment != 0 ]
then
NIC=`echo $sed| sed 's/ /\n/g'`
fi
#写key开头参数
echo -e "{"'\n\t''"data":['
#收集ifconfig,网卡名,mac,IP,子网掩码,网关
for i in $NIC;
do
echo -e '\t\t''{'

if [ $judgment == 0 ]
then
#新布局
if [ $add == $Less ]
then
#当为最后一块网卡,则替换结尾逗号
ifconfig $i | grep -E 'HWaddr|inet addr|Bcast|Mask' | sed -e ':a;$!N;s/\n/ /;ta;P;D' | sed -e 's/inet addr:/inet addr /g' -e 's/Bcast:/Bcast /g' -e 's/Mask:/Mask /g' | awk '{print "\t\t\t\"{#IFNMSG}\":\""$1"\":\""$5"\":\""$8"\":\""$12"\":\""$10"\"},"}'|sed -e 's/,/]}/g'
else
ifconfig $i | grep -E 'HWaddr|inet addr|Bcast|Mask' | sed -e ':a;$!N;s/\n/ /;ta;P;D' | sed -e 's/inet addr:/inet addr /g' -e 's/Bcast:/Bcast /g' -e 's/Mask:/Mask /g' | awk '{print "\t\t\t\"{#IFNMSG}\":\""$1"\":\""$5"\":\""$8"\":\""$12"\":\""$10"\"},"}'
fi
else
#旧布局
if [ $add == $Less ]
then
#当为最后一块网卡,则替换结尾逗号
ifconfig $i | grep -v inet6 | grep -E 'flags|inet|netmask|broadcast|ether' | sed -e ':a;$!N;s/\n/ /;ta;P;D' | sed -e 's/:://g' -e 's/inet addr:/inet addr /g' -e 's/Bcast:/Bcast /g' -e 's/Mask:/Mask /g' | awk '{print "\t\t\t\"{#IFNMSG}\":\"""'"$i"'""\":\""$12"\":\""$6"\":\""$8"\":\""$10"\"},"}'|sed -e 's/,/]}/g'
else
ifconfig $i | grep -v inet6 | grep -E 'flags|inet|netmask|broadcast|ether' | sed -e ':a;$!N;s/\n/ /;ta;P;D' | sed -e 's/:://g' -e 's/inet addr:/inet addr /g' -e 's/Bcast:/Bcast /g' -e 's/Mask:/Mask /g' | awk '{print "\t\t\t\"{#IFNMSG}\":\"""'"$i"'""\":\""$12"\":\""$6"\":\""$8"\":\""$10"\"},"}'
fi
fi
#用于修改key结尾的自增变量
let add+=1
done
}
$1


chown zabbix:zabbix /usr/local/zabbix/scripts/nic.sh

chmod +x /usr/local/zabbix/scripts/nic.sh

修改zabbix_agentd.conf最后行添加UserParameter=nic.nic,/usr/local/zabbix/scripts/nic.sh NIC; 

重启zabbix agent

 

2.打开zabbix>配置>主机>选择群组    将页面的内容全部复制到服务器的文档上

3.执行 grep -Ev 'Windows|停用的' 文档名 | egrep -o '([0-9]{1,3}\.){3}[0-9]{1,3}\: [0-9]{5}' | sed -e 's#: #\t#g' | sort -t'.' -k1,1n -k2,2n -k3,3n -k4,4n > zabbix-ip-port

4.保存下面的代码然后执行,过滤出 ip和zabbix端口

#!/bin/bash
#避免已存在,先执行删除
rm -rf sh-ip-port
while read link
do
ip=`echo "$link" | awk -F '\t' '{print $1}'`
port=`echo "$link" | awk -F '\t' '{print $2}'`
#显示当前ip
#echo ${ip}
#调用客户端的脚本
nic=`/usr/local/zabbix/bin/zabbix_get -s$ip -p$port -k"nic.nic" | grep -E "填写需要加到聚合图形的ip段,多个ip段 | 分隔符隔开,如: 172.17.16|172.16.16" | awk -F '\"' '{print $4}' | awk -F ':' '{print $1}' | sed -e 's/"//g' | uniq`
a=`echo $?`
for i in $nic;
do
if [ i != "" ];
then
echo -e $ip"\t$i" >> sh-ip-port
fi
done
done < zabbix-ip-port


5.保存下面的代码然后执行,生成聚合图形的xml文件


#!/bin/bash
#避免已存在,先执行删除
rm -rf sh-ip-port.xml
#提示输入组名
read -t 30 -p "group name:" name
x=0
y=0
while read link
do
ip=`echo "$link" | awk -F '\t' '{print $1}'`
port=`echo "$link" | awk -F '\t' '{print $2}'`
#显示ip与xy值
#echo ${ip}
#echo x=$x
#echo y=$y
#可以自定义width与height值
cat >> sh-ip-port.xml << EOF
<screen_item>
<resourcetype>0</resourcetype>
<width>500</width>
<height>100</height>
<x>$x</x>
<y>$y</y>
<colspan>1</colspan>
<rowspan>1</rowspan>
<elements>0</elements>
<valign>0</valign>
<halign>0</halign>
<style>0</style>
<url/>
<dynamic>0</dynamic>
<sort_triggers>0</sort_triggers>
<resource>
<name>Network traffic on $port</name>
<host>$ip</host>
</resource>
<max_columns>3</max_columns>
<application/>
</screen_item>
EOF
  #指定一列只有3个
if [ $x -eq 2 ];then
x=0
let y=$y+1;
else
let x=$x+1;
fi
done < sh-ip-port
#由于第一次的列值为0但是zabbix导入时必须为总数,y值小一位所以这里要加1
let y=$y+1;
#添加文件头
sed -i "1i<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<zabbix_export>\n\t<version>3.0</version>\n\t<date>2016-04-14T02:53:19Z</date>\n\t<screens>\n\t<screen>\n\t\t<name>$name</name>\n\t\t<hsize>3</hsize>\n\t\t<vsize>$y</vsize>\n\t\t<screen_items>" sh-ip-port.xml
#添加结尾
echo -e '\t\t</screen_items>\n\t</screen>\n\t</screens>\n</zabbix_export>' >>sh-ip-port.xml


6.将sh-ip-port.xml文件从服务器下载,然后到zabbix聚合图形导入即可

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: