zoukankan      html  css  js  c++  java
  • 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 - 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/ /
    /g'`
        fi
        #写key开头参数
        echo -e "{"'
    	''"data":['
        #收集ifconfig,网卡名,mac,IP,子网掩码,网关
        for i in $NIC;
        do
          echo -e '		''{'
    
          if [ $judgment == 0 ]
          then
               #新布局
              if [ $add == $Less ]
              then
                    #当为最后一块网卡,则替换结尾逗号
                    ifconfig $i | grep -E 'HWaddr|inet addr|Bcast|Mask' | sed -e ':a;$!N;s/
    / /;ta;P;D' | sed -e 's/inet addr:/inet addr /g' -e 's/Bcast:/Bcast /g' -e 's/Mask:/Mask /g' | awk '{print "			"{#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/
    / /;ta;P;D' | sed -e 's/inet addr:/inet addr /g' -e 's/Bcast:/Bcast /g' -e 's/Mask:/Mask /g' | awk '{print "			"{#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/
    / /;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 "			"{#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/
    / /;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 "			"{#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#: # #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 '	' '{print $1}'`
    port=`echo "$link" | awk -F '	' '{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" $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 ' ' '{print $1}'` port=`echo "$link" | awk -F ' ' '{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"?> <zabbix_export> <version>3.0</version> <date>2016-04-14T02:53:19Z</date> <screens> <screen> <name>$name</name> <hsize>3</hsize> <vsize>$y</vsize> <screen_items>" sh-ip-port.xml #添加结尾
    echo -e ' </screen_items> </screen> </screens> </zabbix_export>' >>sh-ip-port.xml

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

  • 相关阅读:
    CLR Via CSharp读书笔记(6):类型和成员基础
    Maven 环境快速搭建二(eclipse+maven2+jetty)
    Struts2架构图
    Struts2 不依赖Spring 的测试方式
    最全的Eclipse使用快捷键
    ts2+Spring的UnitTest编写(使用StrutsTestCase的子类StrutsSpringTestCase)
    分析Vector、ArrayList、Hashtable、HashMap数据结分享一下
    Struts2与Velocity模板
    maven环境快速搭建
    转】Java集合框架学习笔记
  • 原文地址:https://www.cnblogs.com/cainiaoit/p/7478890.html
Copyright © 2011-2022 走看看