zabbix 批量添加聚合图形
环境为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 - `
#用于修改key结尾的自增变量
add=""
#存放"判断ifconfig是否为新布局"值
judgment=''
#判断ifconfig是否为新布局
if [ $add == ]
then
HWaddr=`ifconfig $i | grep -E 'HWaddr'`
judgment=`echo $?`
fi
#替换NIC变量
if [ $judgment != ]
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 == ]
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+=
done
}
$
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 -p "group name:" name
x=
y=
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></resourcetype>
<width></width>
<height></height>
<x>$x</x>
<y>$y</y>
<colspan></colspan>
<rowspan></rowspan>
<elements></elements>
<valign></valign>
<halign></halign>
<style></style>
<url/>
<dynamic></dynamic>
<sort_triggers></sort_triggers>
<resource>
<name>Network traffic on $port</name>
<host>$ip</host>
</resource>
<max_columns></max_columns>
<application/>
</screen_item>
EOF
#指定一行只有3个
if [ $x -eq ];then
x=
let y=$y+;
else
let x=$x+;
fi
done < sh-ip-port
#由于第一次的列值为0但是zabbix导入时必须为总数,y值小一位所以这里要加1
let y=$y+;
#添加文件头
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聚合图形导入即可

zabbix 批量添加聚合图形的更多相关文章
- zabbix 批量生成聚合图形
通过插入数据库的方式批量生成 zabbix 聚合图形 原型图形 聚合的 sql 批量操作 .在聚合图形创建好一个聚合图形A.找出图形A的ID (创建图形的时候记得填写好行数和列数) select sc ...
- 分布式监控系统Zabbix-批量添加聚合图形
之前部署了Zabbix(3.4.4版本)监控环境,由于主机比较多,分的主机组也比较多,添加聚合图形比较麻烦,故采用python脚本进行批量添加聚合图形.脚本下载地址:https://pan.baidu ...
- 利用python3 调用zabbix接口完成批量加聚合图形(screens)
在上一篇博客中,我们完成的利用python3 调用zabbix接口批量增加主机,增加主机的item,增加主机的图形! 接下来我们完成批量增加主机的screen 首先我们要增加screen需要哪些参数呢 ...
- zabbix批量添加SNMP监听H3C端口检测以及流量图
由于之前网络设备不是很多,监控网络设备接口就直接使用模版中的item来实现了,可是现在公司上线了一大批网络设备,如果要每个网络设备都做模板,添加item......那就该废了,于是迫于压力今天来测试使 ...
- zabbix 批量添加web场景监控
公司有大量测试环境的url需要监控是否能够访问,即url状态不为200即报警.状态为200即正常.因url比较多,且经常发生改变,如通过web场景配置(我没配过)会比较繁琐,工作量比较大.通过网上查找 ...
- zabbix批量添加被监控windows客户端
由于公司大部分用的是windows服务器,大概有50多台.如果是一台一台添加的话很是麻烦,如果数量更多的话那工作量可想而知.所以网络管理员通常都是非常懒的. 环境:公司虽是域环境,但是除了几台域服务器 ...
- Zabbix批量添加Hosts
添加脚本 addhost.py #coding:utf-8 import json import urllib2 from urllib2 import URLError import sys imp ...
- Zabbbix之十二------Zabbix实现微信报警通知及创建聚合图形
实战一:实现zabbix监控微信报警 1.在企业微信上注册账号 1.注册企业微信,管理员需要写上自己的真实姓名,扫描以下的二维码,与微信关联真实姓名. 2.登陆企业微信,然后创建一个微信故障通知应用 ...
- 02 . Zabbix配置监控项及聚合图形
安装Zabbix Agent监控本机 安装agent软件 与server端不同,Agent只需安装zabbix-agent包 cat /etc/yum.repos.d/zabbix.repo [zab ...
随机推荐
- sql查询题目
--1.查询在1981年入职的员工信息select * from emp where hiredate between '01-1月-1981'and '31-12月-1981'; select * ...
- python基础之正则表达式和re模块
正则表达式 就其本质而言,正则表达式(或 re)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 ...
- P3819 松江1843路(洛谷月赛)
P3819 松江1843路 题目描述 涞坊路是一条长L米的道路,道路上的坐标范围从0到L,路上有N座房子,第i座房子建在坐标为x[i]的地方,其中住了r[i]人. 松江1843路公交车要在这条路上建一 ...
- android 布局preview 技巧
最近开始看老外写的文章,博客,嗯,不能说比国人写的好,但是感觉看着很爽.真的,一手资料就是爽. 嗯,自己做得不错,第一次看外文博客,我知道自己怎么看的,一句话一句话看下来的,越看越有感觉. 下面这个 ...
- APP测试用例要考虑的一些方面
安装与卸载:●应用是否可以在IOS不同系统版本或android不同系统版本上安装(有的系统版本过低,应用不能适配)●软件安装后是否可以正常运行,安装后的文件夹及文件是否可以写到指定的目录里.●安装过程 ...
- day04_08-while查询所有行
<?php $link = @mysql_connect('localhost','root',''); mysql_query('use test',$link); mysql_query(' ...
- ASP.net MVC入门及Razor语法
一.MVC入门: 1.MVC简介 约定大于配置 2.MVC访问流程 csthml模板(razor模板)就是简化HTML的拼接的模板,最终还是生成html给浏览器显示,不能直接访问cshtml文件. 二 ...
- 孤荷凌寒自学python第六十五天学习mongoDB的基本操作并进行简单封装4
孤荷凌寒自学python第六十五天学习mongoDB的基本操作并进行简单封装4 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十一天. 今天继续学习mongoDB的简单操作 ...
- 孤荷凌寒自学python第五十四天使用python来删除Firebase数据库中的文档
孤荷凌寒自学python第五十四天使用python来删除Firebase数据库中的文档 (完整学习过程屏幕记录视频地址在文末) 今天继续研究Firebase数据库,利用google免费提供的这个数据库 ...
- android studio 配置网络代理
1.首先在vultr网站购买服务器. 然后使用shadowsocksR给服务器配置FQ,再在本地机器配置好shadowsocksR. 参考网址:https://github.com/getlanter ...