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 ...
随机推荐
- 15.8,redis-cluster配置
为什么要用redis-cluster 1.并发问题 redis官方生成可以达到 10万/每秒,每秒执行10万条命令假如业务需要每秒100万的命令执行呢? 2.数据量太大 一台服务器内存正常是16~ ...
- Toolbar中menu菜单文字颜色的修改
Toolbar菜单中menu当中我们大多数都使用图片来按钮,可是有些时候我们也会直接使用文字,文字的颜色如何修改呢. 其实很简单,我们只要修改styles.xml文件中,添加一句 <item n ...
- 开启虚拟机所报的错误:VMware Workstation cannot connect to the virtual machine. Make sure you have rights to run the program, access all directories the program uses, and access all directories for temporary fil
当我们开启虚拟机时出现错误: VMware Workstation cannot connect to the virtual machine. Make sure you have rights t ...
- 新兵易学,老兵易用----C++(C++11的学习整理---如何减少代码量,加强代码的可读性)
1.auto类型推导 auto推导最大的优势就是在拥有初始化表达式的复杂类型变量声明时简化代码. auto第二个优势就是免去了程序员在一些类型声明时的麻烦,或者避免一些在类型声明时的错误. auto第 ...
- SDK支付流程
1.普通支付流程 2.代理流程 易接.U8SDK
- OpenStack-Ironic裸金属简介
一,Ironic简述 简而言之,OpenStack Ironic就是一个进行裸机部署安装的项目. 所谓裸机,就是指没有配置操作系统的计算机.从裸机到应用还需要进行以下操作: (1)硬盘RAID ...
- hnust 好友互动标识
问题 A: 好友互动标识 时间限制: 1 Sec 内存限制: 128 MB提交: 897 解决: 122[提交][状态][讨论版] 题目描述 QQ有一个有趣的功能即显示好友互动标识,它 ...
- Struts2+DAO层实现实例02——搭建DAO基本框架并与Struts2组合
实例内容 创建DAO(Data Access Oject)接口:BaseDAO 创建其实例化类:UserDAO 用于获取数据库struts中的userinfo表中的内容 创建User的Java Bea ...
- 团队冲刺Alpha(九)
目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...
- Ajax---概念介绍
Ajax不是某种编程语言,是一种在无需重新加载整个网页的情况下能够更新部分网页的技术. 运用HTML和CSS来实现页面,表达信息: 运用XMLHttpRequest和Web服务器进行数据的异步交换: ...