环境为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 批量添加聚合图形的更多相关文章

  1. zabbix 批量生成聚合图形

    通过插入数据库的方式批量生成 zabbix 聚合图形 原型图形 聚合的 sql 批量操作 .在聚合图形创建好一个聚合图形A.找出图形A的ID (创建图形的时候记得填写好行数和列数) select sc ...

  2. 分布式监控系统Zabbix-批量添加聚合图形

    之前部署了Zabbix(3.4.4版本)监控环境,由于主机比较多,分的主机组也比较多,添加聚合图形比较麻烦,故采用python脚本进行批量添加聚合图形.脚本下载地址:https://pan.baidu ...

  3. 利用python3 调用zabbix接口完成批量加聚合图形(screens)

    在上一篇博客中,我们完成的利用python3 调用zabbix接口批量增加主机,增加主机的item,增加主机的图形! 接下来我们完成批量增加主机的screen 首先我们要增加screen需要哪些参数呢 ...

  4. zabbix批量添加SNMP监听H3C端口检测以及流量图

    由于之前网络设备不是很多,监控网络设备接口就直接使用模版中的item来实现了,可是现在公司上线了一大批网络设备,如果要每个网络设备都做模板,添加item......那就该废了,于是迫于压力今天来测试使 ...

  5. zabbix 批量添加web场景监控

    公司有大量测试环境的url需要监控是否能够访问,即url状态不为200即报警.状态为200即正常.因url比较多,且经常发生改变,如通过web场景配置(我没配过)会比较繁琐,工作量比较大.通过网上查找 ...

  6. zabbix批量添加被监控windows客户端

    由于公司大部分用的是windows服务器,大概有50多台.如果是一台一台添加的话很是麻烦,如果数量更多的话那工作量可想而知.所以网络管理员通常都是非常懒的. 环境:公司虽是域环境,但是除了几台域服务器 ...

  7. Zabbix批量添加Hosts

    添加脚本 addhost.py #coding:utf-8 import json import urllib2 from urllib2 import URLError import sys imp ...

  8. Zabbbix之十二------Zabbix实现微信报警通知及创建聚合图形

    实战一:实现zabbix监控微信报警 1.在企业微信上注册账号 1.注册企业微信,管理员需要写上自己的真实姓名,扫描以下的二维码,与微信关联真实姓名. 2.登陆企业微信,然后创建一个微信故障通知应用 ...

  9. 02 . Zabbix配置监控项及聚合图形

    安装Zabbix Agent监控本机 安装agent软件 与server端不同,Agent只需安装zabbix-agent包 cat /etc/yum.repos.d/zabbix.repo [zab ...

随机推荐

  1. 笔记-docker-3 使用

    笔记-docker-3 使用 1.      镜像 image是docker最重要的概念,docker运行容器前需要本地存在对应的镜像,如果没有,会尝试从默认镜像库下载. 1.1.    镜像获取 查 ...

  2. 3670: [Noi2014]动物园

    题目链接 题意:给n个字符串,求出每个字符串的num值,加1后相乘.num[i]表示1~i中,有多少没有重叠的公共前缀后缀. 分析: kmp中p数组表示最大的公共前缀后缀.设一cnt数组,表示1~i中 ...

  3. 抽象类的作用之一:sdk 传递你需要的参数

    抽象类可以干什么?抽象类可以让别人必须做一件事情,比如实现一个方法. 那它有什么作用呢? 我开始也不知道啊,后来慢慢的知道了,在开发中,我知道了它是干什么的,怎么用的.比如你要写一个sdk给别人用.但 ...

  4. laravel5.5事件广播系统

    目录 1. 定义广播事件 1.1 广播名称 1.2 广播数据 1.3 广播队列 1.4 广播条件 2. 频道授权 2.1 定义授权路由 2.2 定义授权回调 3. 对事件进行广播 3.1 可以使用ev ...

  5. php jsonp单引号转义

    php中jsonp输出时一般用下面的格式: callbackname('json string'); 如果中间的json string中含有单引号,这个输出就是有问题的,调用方一般是无法处理的,所以我 ...

  6. node.js和npm的安装

    1.进入node.js官方网站,下载和系统对应的版本,我下载的是这个最新版本:node-v8.2.1-x64.msi https://nodejs.org/en/download/ 2.windows ...

  7. 获取访问者ip及其所在城市

    原本使用新浪Api,然后发现不行了,以下小编重新查找了几个,个人推荐太平洋的接口 1.首先获取真实ip $ip = $_SERVER['REMOTE_ADDR']; 2.要知道的Api接口 几个接口$ ...

  8. Python学习1,代码

      看了好久的网上视频,今天尝试着写了一串代码: _author_ = "Happyboy" produce_list = [ ('Iphone',5800), ('Mac Pro ...

  9. 上手Caffe(一)

    @author:oneBite 本文记录编译使用caffe for windows 使用环境 VS2013 ultimate,win7 sp1,caffe-windows源码(从github上下载ca ...

  10. 201621123033 《Java程序设计》第7周学习总结

    1. 本周学习总结 1.1 思维导图:Java图形界面总结 2.书面作业 1. GUI中的事件处理 1.1 写出事件处理模型中最重要的几个关键词. 事件源:事件发生的场所,具体指各个组件. 事件:组件 ...