zoukankan      html  css  js  c++  java
  • zabbix agent shell一键安装脚本

    #!/bin/bash
    
    basepath=$(cd `dirname $0`; pwd)
    SHELL_DIR="${basepath}/shell"
    PACKAGE_DIR="${basepath}/package"
    
    
    #获取参数
    while getopts "i:" opt; do
        case $opt in
            i)
                ipaddr=$OPTARG
                ;;
            ?)
                ;;
        esac
    done
    
    echo "ip NO:"
    echo $ipaddr
    
    rpm -ivh  $PACKAGE_DIR/zabbix-release-2.4-1.el6.noarch.rpm
    
    yum install -y zabbix-agent
    
    if [ -e /etc/zabbix/zabbix_agentd.conf ];then
    echo
    echo "##########begin modify zabbix_agentd.conf##########"
    sed -i 's/^Server=127.0.0.1/Server=116.*******28/g' /etc/zabbix/zabbix_agentd.conf
    sed -i 's/^ServerActive=127.0.0.1/ServerActive=116.*******.28/g' /etc/zabbix/zabbix_agentd.conf
    sed -i "s/Hostname=Zabbix server/Hostname=${ipaddr}/g" /etc/zabbix/zabbix_agentd.conf
    #sed -i 's/^Hostname=Zabbix server/Hostname=$ip/g' /etc/zabbix/zabbix_agentd.conf
    #sed -i '/ListenPort=10050$/aListenPort=21224' /etc/zabbix/zabbix_agentd.conf
    #sed -i "/ListenIP=0.0.0.0$/aListenIP=${ip}" /etc/zabbix/zabbix_agentd.conf
    sed -i '/Timeout=3$/aTimeout=30' /etc/zabbix/zabbix_agentd.conf
    grep -v '^#' /etc/zabbix/zabbix_agentd.conf |grep -v '^$'
    echo "##########end modify zabbix_agentd.conf##########"
    echo
    else
    echo
    echo "##########zabbix_agentd.conf is not exit##########"
    echo
    exit 2
    fi
    
    
    if [ -d /etc/zabbix/zabbix_agentd.d ];then
    cp -r $PACKAGE_DIR/yuwang.conf /etc/zabbix/zabbix_agentd.d
    else
    echo "##########/etc/zabbix/zabbix_agentd.d is not exist##########"
    echo
    exit 3
    fi
    
    
    echo "##########begin move scripts to /etc/zabbix/scripts##########"
    if [ -d /etc/zabbix/scripts ];then
        cp -r $PACKAGE_DIR/scripts/* /etc/zabbix/scripts
        chmod +x /etc/zabbix/scripts/*
    else
        mkdir /etc/zabbix/scripts
        cp -r $PACKAGE_DIR/scripts/* /etc/zabbix/scripts
        chmod +x /etc/zabbix/scripts/*
    fi
    echo "##########end move scripts to /etc/zabbix/scripts##########"
    
    echo "##########begin modify /etc/sudoers##########"
    sed -i 's/(Defaults.*requiretty)/#1/g' /etc/sudoers
    echo '...'
    sed -i 's/!visiblepw/visiblepw/g' /etc/sudoers
    echo '...'
    echo 'zabbix ALL=(ALL) NOPASSWD:/etc/zabbix/scripts/*' >> /etc/sudoers
    echo '...'
    echo "##########end modify /etc/sudoers##########"
    
    
    service zabbix-agent restart
    chkconfig zabbix-agent on
    
    zabbixagentpid=`ps aux|grep zabbix_agentd|grep -v "grep"|awk '{print $2}'`
    
    if [ "$zabbixagentpid" ];then
          echo "success ! zabbix agent is running now"
    fi
    配置文件内容
    cat yuwang.conf 
    UserParameter=iostat[*],/etc/zabbix/scripts/iostat.sh $1 $2
    UserParameter=discovery.disk,/etc/zabbix/scripts/discovery.disk.sh
    UserParameter=net.if.discovery2,/etc/zabbix/scripts/net.if.discovery2.sh
    脚本网卡发现,磁盘io监控,网卡流量监控
    
    [root@pro- scripts]# cat discovery.disk.sh 
    #!/bin/bash
    
    count=`cat /proc/diskstats |grep '[vs]d[a-z] ' |wc -l`
    i=1
    
    echo '{'
    echo '    "data":['
    
    for disk in `cat /proc/diskstats |grep '[vs]d[a-z] ' |awk '{print $3}'`
    do
            if [ $i -lt $count ] ; then
                    echo '        {"{#DISK}":"'$disk'"},'
            else
                    echo '        {"{#DISK}":"'$disk'"}'
            fi
            i=`echo $(($i+1))`
    done
    
    echo '    ]'
    echo '}'
    
    [root@pro- scripts]# cat iostat.sh 
    #!/bin/bash
    result=`iostat -k -x $1 1 2|grep $1 |tail -n1`
    #echo "$result"
    #Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
    #sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    function readkB(){
        echo "$result" |awk '{print $6}'
    }
    function writekB(){
        echo "$result" |awk '{print $7}'
    }
    function avgrq-sz(){
        echo "$result" |awk '{print $8}'
    }
    function avgqu-sz(){
        echo "$result" |awk '{print $9}'
    }
    function await(){
        echo "$result" |awk '{print $10}'
    }
    function svctm(){
        echo "$result" |awk '{print $11}'
    }
    function util(){
        echo "$result" |awk '{print $12}'
    }
    $2
    [root@ scripts]# cat net.if.discovery2.sh 
    #/bin/bash
    
    i=0
    names=()
    for interface in `cat /proc/net/dev |tail -n +3 |grep -v 'lo|vir|vnet' |grep -oP 'w+d*(?=:)'`
    #for interface in `cat /proc/net/dev |tail -n +3 |grep -v 'lo' |grep -oP 'w+d*(?=:)'`
    do
        c=`ifconfig $interface 2>/dev/null|grep 'inet ' |grep -v -c '127.0.0.1'`
        if [ $c -gt 0 ];then
            names[$i]=$interface
            i=`echo $((i+1))`
        fi
    done
    
    
    length=${#names[*]}
    i=1
    echo '{'
    echo '    "data":['
    for interface in ${names[*]}
    do
        if [ $i -lt $length ];then
            echo '        {"{#IFNAME}":"'$interface'"},'
            i=`echo $((i+1))`
        else
            echo '        {"{#IFNAME}":"'$interface'"}'
            break
        fi
    done
    
    echo '    ]'
    echo '}'
  • 相关阅读:
    0325JavaScript
    0322css样式表,选择器
    0320表单
    0313函数
    0312数组
    0311类
    0309笔记整理
    进制转换
    Xcode快捷键大全
    Android LearningNotes
  • 原文地址:https://www.cnblogs.com/weifeng1463/p/8808849.html
Copyright © 2011-2022 走看看