设为首页 收藏本站
查看: 1269|回复: 0

[经验分享] 安装zabbix客户端脚本

[复制链接]

尚未签到

发表于 2015-11-23 12:39:06 | 显示全部楼层 |阅读模式
安装zabbix客户端脚本

#!/bin/bash
# get network ip addr function
function getIP()
{
NET=$1
if [ "$NET" = "" ]; then
NET="eth0"
fi
IP=""
if [ $(ifconfig | grep "$NET" | wc -l) -gt 0 ]; then
IP=$(ifconfig $NET | grep 'inet addr:' | awk -F: '{print $2}' | awk '{print $1}')
fi
echo $IP
}
# get IP segment function
function getSegment()
{
IP_ADD=$1
N=$2
echo $(echo $IP_ADD | cut -d. -f$N)
}
ETH0_IP=$(getIP eth0)
ETH1_IP=$(getIP eth1)
IP_ADDR=""
if [ "$ETH0_IP" != "" ]; then
if [ "$(getSegment $ETH0_IP 1)" = "10" ]; then
IP_ADDR=$ETH0_IP   
fi
fi   
if [ "$ETH1_IP" != "" ]; then
if [ "$(getSegment $ETH1_IP 1)" = "10" ]; then
IP_ADDR=$ETH1_IP   
fi
fi
LOCAL_IP=$IP_ADDR
LOCAL_IP_FIELD_2=$(getSegment $LOCAL_IP 2)
case "$LOCAL_IP_FIELD_2" in
1)
SERVER_IP="10.2.0.44"
;;
2)
SERVER_IP="10.2.0.44"
;;
3)
SERVER_IP="10.3.0.246"
;;
*)
SERVER_IP=""
echo "ip addr is error!"
exit
esac

groupadd zabbix
useradd -g zabbix -s /sbin/nologin  -M zabbix
cd /usr/local/src
ls  zabbix-2.2.3.tar.gz || wget  http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX Latest Stable/2.2.3/zabbix-2.2.3.tar.gz
tar zxvf zabbix-2.2.3.tar.gz
cd zabbix-2.2.3
./configure --prefix=/usr/local/zabbix --enable-agent
make install

cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d
sed -i 's/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g' /etc/init.d/zabbix_agentd
chkconfig --add zabbix_agentd
chkconfig zabbix_agentd on
sed -i "s/^Server=127.0.0.1/Server=$SERVER_IP/g" /usr/local/zabbix/etc/zabbix_agentd.conf
sed -i "s/^ServerActive=127.0.0.1/ServerActive=$SERVER_IP/" /usr/local/zabbix/etc/zabbix_agentd.conf
sed -i "s/^# ListenIP=0.0.0.0/ListenIP=$LOCAL_IP/" /usr/local/zabbix/etc/zabbix_agentd.conf
/etc/init.d/zabbix_agentd start



添加自定义的zabbix监控脚本  #!/bin/bash
ZABBIX_AGETNTD_CONF="/usr/local/zabbix/etc/zabbix_agentd.conf"
ZABBIX_SCRIPT_DIR="/usr/local/zabbix/scripts"
# modify UnsafeUserParameters=1
sed -i "/# UnsafeUserParameters=0/a\UnsafeUserParameters=1" $ZABBIX_AGETNTD_CONF
# if not exits script dir, then create script dir
if [ ! -d "$ZABBIX_SCRIPT_DIR" ]; then
mkdir -p "$ZABBIX_SCRIPT_DIR"
fi

########################################### add check_tcp script ################################################
CHECK_SCRIPT_FILE_NAME="check_tcps.sh"
CHECK_SCRIPT_FILE=$ZABBIX_SCRIPT_DIR"/"$CHECK_SCRIPT_FILE_NAME
SERVER_KEY_NAME=${CHECK_SCRIPT_FILE_NAME%.*}
SERVER_KEY_NAME=${SERVER_KEY_NAME//_/.}
cat > $CHECK_SCRIPT_FILE <<&quot;EOF&quot;
#!/bin/bash
STAT=&quot;&quot;
case &quot;$1&quot; in
ESTABLISHED)
STAT='ESTABLISHED'
;;
TIME-WAIT)
STAT='TIME-WAIT'
;;
*)
exit 1
esac
NUM=$(/usr/sbin/ss -a state $STAT | wc -l)
echo $NUM
EOF
chmod 755 $CHECK_SCRIPT_FILE
# add UserParameter
REPEAT_COMM_NUM=$(grep -c &quot;$CHECK_SCRIPT_FILE&quot; $ZABBIX_AGETNTD_CONF)
if [ $REPEAT_COMM_NUM -eq 0 ]; then
sed -i &quot;/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME
  • , $CHECK_SCRIPT_FILE \$1&quot; $ZABBIX_AGETNTD_CONF
    fi

    ########################################### add check_cpu_usage script ################################################
    CHECK_SCRIPT_FILE_NAME=&quot;check_cpu_usage.py&quot;
    CHECK_SCRIPT_FILE=$ZABBIX_SCRIPT_DIR&quot;/&quot;$CHECK_SCRIPT_FILE_NAME
    SERVER_KEY_NAME=${CHECK_SCRIPT_FILE_NAME%.*}
    SERVER_KEY_NAME=${SERVER_KEY_NAME//_/.}
    cat > $CHECK_SCRIPT_FILE <<&quot;EOF&quot;
    #!/usr/bin/env python
    # http://blog.iyunv.com/uid-108431-id-3359082.html
    from __future__ import division
    import os
    import re
    import time
    import sys
    cpu = &quot;cpu&quot;
    if(len(sys.argv)>1):
    cpu = cpu+sys.argv[1]

    # define get cpu_total_time and cpu_busy_time function
    def get_times(cpu):
    shell_cmd = &quot;cat /proc/stat | sed -n '/^&quot;+cpu+&quot; /p'&quot;
    stat_str = os.popen(shell_cmd).read().strip()
    stat_list = stat_str.split()
    # if the cpu core is not exists
    if (len(stat_list) != 10):
    return []
    cpu_total_time = int(stat_list[1]) + int(stat_list[2]) + int(stat_list[3]) + int(stat_list[4]) + int(stat_list[5]) + int(stat_list[7]) + int(stat_list[8]) + int(stat_list[9])
    cpu_busy_time = int(stat_list[1]) + int(stat_list[2]) + int(stat_list[3]) + int(stat_list[5]) + int(stat_list[7]) + int(stat_list[8]) + int(stat_list[9])
    return [cpu_total_time, cpu_busy_time]
    res = get_times(cpu)
    if(len(res) != 2):
    print 0
    exit(0)
    cpu_total_time_1,cpu_busy_time_1 = res
    time.sleep(1)
    res = get_times(cpu)
    cpu_total_time_2,cpu_busy_time_2 = res

    # calculate the cpu usage
    total = cpu_total_time_2 - cpu_total_time_1
    busy = cpu_busy_time_2 - cpu_busy_time_1
    print busy/total*100
    EOF
    chmod 755 $CHECK_SCRIPT_FILE
    # add UserParameter
    REPEAT_COMM_NUM=$(grep -c &quot;$CHECK_SCRIPT_FILE&quot; $ZABBIX_AGETNTD_CONF)
    if [ $REPEAT_COMM_NUM -eq 0 ]; then
    sed -i &quot;/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME
  • , $CHECK_SCRIPT_FILE \$1&quot; $ZABBIX_AGETNTD_CONF
    fi
    ########################################### add check_redis script ################################################
    CHECK_SCRIPT_FILE_NAME=&quot;check_redis.sh&quot;
    CHECK_SCRIPT_FILE=$ZABBIX_SCRIPT_DIR&quot;/&quot;$CHECK_SCRIPT_FILE_NAME
    SERVER_KEY_NAME=${CHECK_SCRIPT_FILE_NAME%.*}
    SERVER_KEY_NAME=${SERVER_KEY_NAME//_/.}
    cat > $CHECK_SCRIPT_FILE <<&quot;EOF&quot;
    #!/bin/bash
    PARA=&quot;$1&quot;&quot;:&quot;
    REDIS_PORT=$2
    REDIS_CLI=&quot;/usr/local/redis/bin/redis-cli&quot;
    if [ &quot;$REDIS_PORT&quot; = &quot;&quot; ]; then
    REDIS_PORT=6379
    fi
    REDIS_INFO_COMMAND=&quot;$REDIS_CLI -p $REDIS_PORT  info&quot;
    ITEM=&quot;&quot;
    case $PARA in
    connected_clients:)
    ITEM=&quot;$PARA&quot;
    ;;
    used_memory:)
    ITEM=&quot;$PARA&quot;
    ;;
    used_memory_peak:)
    ITEM=&quot;$PARA&quot;
    ;;
    latest_fork_usec:)
    ITEM=&quot;$PARA&quot;
    ;;
    master_link_status:)
    ITEM=&quot;$PARA&quot;
    ;;
    instantaneous_ops_per_sec:)
    ITEM=&quot;$PARA&quot;
    ;;
    *)
    exit 1
    esac
    VAL=$($REDIS_INFO_COMMAND | awk -F:  '/^'$ITEM'/{print $2}')
    echo $VAL
    EOF
    chmod 755 $CHECK_SCRIPT_FILE
    # add UserParameter
    REPEAT_COMM_NUM=$(grep -c &quot;$CHECK_SCRIPT_FILE&quot; $ZABBIX_AGETNTD_CONF)
    if [ $REPEAT_COMM_NUM -eq 0 ]; then
    sed -i &quot;/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME
  • , $CHECK_SCRIPT_FILE \$1 \$2&quot; $ZABBIX_AGETNTD_CONF
    fi
    ########################################### add check_mongodb script ################################################
    CHECK_SCRIPT_FILE_NAME=&quot;check_mongodb.sh&quot;
    CHECK_SCRIPT_FILE=$ZABBIX_SCRIPT_DIR&quot;/&quot;$CHECK_SCRIPT_FILE_NAME
    SERVER_KEY_NAME=${CHECK_SCRIPT_FILE_NAME%.*}
    SERVER_KEY_NAME=${SERVER_KEY_NAME//_/.}
    cat > $CHECK_SCRIPT_FILE <<&quot;EOF&quot;
    #!/bin/bash
    PARA=&quot;$1&quot;
    PORT=$2
    CLI=&quot;/usr/local/mongodb264/bin/mongostat&quot;
    if [ &quot;$PORT&quot; = &quot;&quot; ]; then
    PORT=27017
    fi
    RES=`$CLI --port $PORT -n 1 --noheaders | grep -v connected`
    case &quot;$PARA&quot; in
    res)
    VAL=$(echo $RES | awk '{print $10}' | tr -d g | tr -d m)
    VAL=$(echo &quot;scale=2;$VAL*1024*1024&quot; | bc | awk -F. '{if(substr($2,1,1)>=5)$1+=1;print $1}')
    ;;
    total_mem)
    VAL=$(free -b | grep Mem: | awk '{print $2}')
    ;;
    conn)
    VAL=$(echo $RES | awk '{print $18}')
    ;;
    faults)
    VAL=$(echo $RES | awk '{print $11}')
    ;;
    locked)
    VAL=$(echo $RES | awk '{print $12}' | awk -F: '{print $2}' | tr -d '%')
    ;;
    flushes)
    VAL=$(echo $RES | awk '{print $7}')
    ;;
    *)
    exit 1
    esac
    echo $VAL
    EOF
    chmod 755 $CHECK_SCRIPT_FILE
    # add UserParameter
    REPEAT_COMM_NUM=$(grep -c &quot;$CHECK_SCRIPT_FILE&quot; $ZABBIX_AGETNTD_CONF)
    if [ $REPEAT_COMM_NUM -eq 0 ]; then
    sed -i &quot;/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME
  • , $CHECK_SCRIPT_FILE \$1 \$2&quot; $ZABBIX_AGETNTD_CONF
    fi
    ########################################### add cpu_core_discovery script ################################################
    CHECK_SCRIPT_FILE_NAME=&quot;cpu_core_discovery.py&quot;
    CHECK_SCRIPT_FILE=$ZABBIX_SCRIPT_DIR&quot;/&quot;$CHECK_SCRIPT_FILE_NAME
    SERVER_KEY_NAME=${CHECK_SCRIPT_FILE_NAME%.*}
    SERVER_KEY_NAME=${SERVER_KEY_NAME//_/.}
    cat > $CHECK_SCRIPT_FILE <<&quot;EOF&quot;
    #!/usr/bin/env python
    # coding: utf8
    # discovery cpu cores

    __author__ = 'zhaoruixiong'
    import os,sys,json

    shell_cmd = &quot;cat /proc/stat | awk '/^cpu[0-9]+/{print $1}'&quot;
    cpu_str = os.popen(shell_cmd).read().strip()
    core_list = cpu_str.split()
    res = {}
    a = []
    for core in core_list:
    b = {'{#COREINDEX}':core.replace('cpu', '')}
    a.append(b)
    res['data'] = a
    print json.dumps(res)
    EOF
    chmod 755 $CHECK_SCRIPT_FILE
    # add UserParameter
    REPEAT_COMM_NUM=$(grep -c &quot;$CHECK_SCRIPT_FILE&quot; $ZABBIX_AGETNTD_CONF)
    if [ $REPEAT_COMM_NUM -eq 0 ]; then
    sed -i &quot;/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME
  • , $CHECK_SCRIPT_FILE \$1&quot; $ZABBIX_AGETNTD_CONF
    fi
    #restart zabbix agentd
    /etc/init.d/zabbix_agentd restart





      


      


      


      
      
      


      


      





    添加自定义的zabbix监控项脚本

    #!/bin/bash



    ZABBIX_AGETNTD_CONF=&quot;/usr/local/zabbix/etc/zabbix_agentd.conf&quot;

    ZABBIX_SCRIPT_DIR=&quot;/usr/local/zabbix/scripts&quot;



    # modify UnsafeUserParameters=1

    sed -i &quot;/# UnsafeUserParameters=0/a\UnsafeUserParameters=1&quot; $ZABBIX_AGETNTD_CONF



    # if not exits script dir, then create script dir

    if [ ! -d &quot;$ZABBIX_SCRIPT_DIR&quot; ]; then

            mkdir -p &quot;$ZABBIX_SCRIPT_DIR&quot;

    fi





    ########################################### add check_tcp script ################################################

    CHECK_SCRIPT_FILE_NAME=&quot;check_tcps.sh&quot;

    CHECK_SCRIPT_FILE=$ZABBIX_SCRIPT_DIR&quot;/&quot;$CHECK_SCRIPT_FILE_NAME

    SERVER_KEY_NAME=${CHECK_SCRIPT_FILE_NAME%.*}

    SERVER_KEY_NAME=${SERVER_KEY_NAME//_/.}

    cat > $CHECK_SCRIPT_FILE <<&quot;EOF&quot;

    #!/bin/bash



    STAT=&quot;&quot;



    case &quot;$1&quot; in

            ESTABLISHED)

                    STAT='ESTABLISHED'

                    ;;

            TIME-WAIT)

                    STAT='TIME-WAIT'

                    ;;

            *)

                    exit 1

    esac



    NUM=$(/usr/sbin/ss -a state $STAT | wc -l)

    echo $NUM

    EOF

    chmod 755 $CHECK_SCRIPT_FILE

    # add UserParameter

    REPEAT_COMM_NUM=$(grep -c &quot;$CHECK_SCRIPT_FILE&quot; $ZABBIX_AGETNTD_CONF)

    if [ $REPEAT_COMM_NUM -eq 0 ]; then

            sed -i &quot;/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME
  • , $CHECK_SCRIPT_FILE \$1&quot; $ZABBIX_AGETNTD_CONF

    fi





    ########################################### add check_cpu_usage script ################################################

    CHECK_SCRIPT_FILE_NAME=&quot;check_cpu_usage.py&quot;

    CHECK_SCRIPT_FILE=$ZABBIX_SCRIPT_DIR&quot;/&quot;$CHECK_SCRIPT_FILE_NAME

    SERVER_KEY_NAME=${CHECK_SCRIPT_FILE_NAME%.*}

    SERVER_KEY_NAME=${SERVER_KEY_NAME//_/.}

    cat > $CHECK_SCRIPT_FILE <<&quot;EOF&quot;

    #!/usr/bin/env python



    # http://blog.iyunv.com/uid-108431-id-3359082.html



    from __future__ import division

    import os

    import re

    import time





    # define get cpu_total_time and cpu_busy_time function

    def get_times():

            stat_str = os.popen(&quot;cat /proc/stat | sed -n '1p'&quot;).read().strip()

            stat_list = stat_str.split()

            cpu_total_time = int(stat_list[1]) &#43; int(stat_list[2]) &#43; int(stat_list[3]) &#43; int(stat_list[4]) &#43; int(stat_list[5]) &#43; int(stat_list[7]) &#43; int(stat_list[8]) &#43; int(stat_list[9])

            cpu_busy_time = int(stat_list[1]) &#43; int(stat_list[2]) &#43; int(stat_list[3]) &#43; int(stat_list[5]) &#43; int(stat_list[7]) &#43; int(stat_list[8]) &#43; int(stat_list[9])

            return [cpu_total_time, cpu_busy_time]



    cpu_total_time_1,cpu_busy_time_1 = get_times()



    time.sleep(1)



    cpu_total_time_2,cpu_busy_time_2 = get_times()





    # calculate the cpu usage

    total = cpu_total_time_2 - cpu_total_time_1

    busy = cpu_busy_time_2 - cpu_busy_time_1

    print busy/total*100

    EOF

    chmod 755 $CHECK_SCRIPT_FILE

    # add UserParameter

    REPEAT_COMM_NUM=$(grep -c &quot;$CHECK_SCRIPT_FILE&quot; $ZABBIX_AGETNTD_CONF)

    if [ $REPEAT_COMM_NUM -eq 0 ]; then

            sed -i &quot;/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME
  • , $CHECK_SCRIPT_FILE \$1&quot; $ZABBIX_AGETNTD_CONF

    fi



    ########################################### add check_redis script ################################################

    CHECK_SCRIPT_FILE_NAME=&quot;check_redis.sh&quot;

    CHECK_SCRIPT_FILE=$ZABBIX_SCRIPT_DIR&quot;/&quot;$CHECK_SCRIPT_FILE_NAME

    SERVER_KEY_NAME=${CHECK_SCRIPT_FILE_NAME%.*}

    SERVER_KEY_NAME=${SERVER_KEY_NAME//_/.}

    cat > $CHECK_SCRIPT_FILE <<&quot;EOF&quot;

    #!/bin/bash



    PARA=&quot;$1&quot;&quot;:&quot;

    REDIS_PORT=$2

    REDIS_CLI=&quot;/usr/local/redis/bin/redis-cli&quot;



    if [ &quot;$REDIS_PORT&quot; = &quot;&quot; ]; then

            REDIS_PORT=6379

    fi

    REDIS_INFO_COMMAND=&quot;$REDIS_CLI -p $REDIS_PORT  info&quot;



    ITEM=&quot;&quot;

    case $PARA in

            connected_clients:)

                    ITEM=&quot;$PARA&quot;

                    ;;

            used_memory:)

                    ITEM=&quot;$PARA&quot;

                    ;;

            used_memory_peak:)

                    ITEM=&quot;$PARA&quot;

                    ;;

            latest_fork_usec:)

                    ITEM=&quot;$PARA&quot;

                    ;;

            master_link_status:)

                    ITEM=&quot;$PARA&quot;

                    ;;

            instantaneous_ops_per_sec:)

                    ITEM=&quot;$PARA&quot;

                    ;;

            *)

                    exit 1

    esac



    VAL=$($REDIS_INFO_COMMAND | awk -F:  '/^'$ITEM'/{print $2}')

    echo $VAL

    EOF

    chmod 755 $CHECK_SCRIPT_FILE

    # add UserParameter

    REPEAT_COMM_NUM=$(grep -c &quot;$CHECK_SCRIPT_FILE&quot; $ZABBIX_AGETNTD_CONF)

    if [ $REPEAT_COMM_NUM -eq 0 ]; then

            sed -i &quot;/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME
  • , $CHECK_SCRIPT_FILE \$1 \$2&quot; $ZABBIX_AGETNTD_CONF

    fi



    ########################################### add check_mongodb script ################################################

    CHECK_SCRIPT_FILE_NAME=&quot;check_mongodb.sh&quot;

    CHECK_SCRIPT_FILE=$ZABBIX_SCRIPT_DIR&quot;/&quot;$CHECK_SCRIPT_FILE_NAME

    SERVER_KEY_NAME=${CHECK_SCRIPT_FILE_NAME%.*}

    SERVER_KEY_NAME=${SERVER_KEY_NAME//_/.}

    cat > $CHECK_SCRIPT_FILE <<&quot;EOF&quot;

    #!/bin/bash



    PARA=&quot;$1&quot;

    PORT=$2

    CLI=&quot;/usr/local/mongodb260/bin/mongostat&quot;



    if [ &quot;$PORT&quot; = &quot;&quot; ]; then

        PORT=27017

    fi



    RES=`$CLI --port $PORT -n 1 --noheaders | grep -v connected`



    case &quot;$PARA&quot; in

        res)

            VAL=$(echo $RES | awk '{print $10}' | tr -d g | tr -d m)

            VAL=$(echo &quot;scale=2;$VAL*1024*1024&quot; | bc | awk -F. '{if(substr($2,1,1)>=5)$1&#43;=1;print $1}')

            ;;

        total_mem)

            VAL=$(free -b | grep Mem: | awk '{print $2}')

            ;;

        conn)

            VAL=$(echo $RES | awk '{print $18}')

            ;;

        faults)

            VAL=$(echo $RES | awk '{print $11}')

            ;;

        locked)

            VAL=$(echo $RES | awk '{print $12}' | awk -F: '{print $2}' | tr -d '%')

            ;;

        flushes)

            VAL=$(echo $RES | awk '{print $7}')

            ;;

        *)

            exit 1

    esac



    echo $VAL

    EOF

    chmod 755 $CHECK_SCRIPT_FILE

    # add UserParameter

    REPEAT_COMM_NUM=$(grep -c &quot;$CHECK_SCRIPT_FILE&quot; $ZABBIX_AGETNTD_CONF)

    if [ $REPEAT_COMM_NUM -eq 0 ]; then

            sed -i &quot;/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME
  • , $CHECK_SCRIPT_FILE \$1 \$2&quot; $ZABBIX_AGETNTD_CONF

    fi





    #restart zabbix agentd

    /etc/init.d/zabbix_agentd restart









    个别主机使用的脚本

    监控redis

    sed -i &quot;/^# UserParameter=$/a\UserParameter=check.redis
  • , /usr/local/zabbix/scripts/check_redis.sh \$1 \$2&quot; /usr/local/zabbix/etc/zabbix_agentd.conf



    #!/bin/bash



    PARA=&quot;$1&quot;&quot;:&quot;

    REDIS_PORT=$2

    REDIS_CLI=&quot;/usr/local/bin/redis-cli&quot;



    if [ &quot;$REDIS_PORT&quot; = &quot;&quot; ]; then

            REDIS_PORT=6379

    fi

    REDIS_INFO_COMMAND=&quot;$REDIS_CLI -p $REDIS_PORT  info&quot;



    ITEM=&quot;&quot;

    case $PARA in

            connected_clients:)

                    ITEM=&quot;$PARA&quot;

                    ;;

            used_memory:)

                    ITEM=&quot;$PARA&quot;

                    ;;

            used_memory_peak:)

                    ITEM=&quot;$PARA&quot;

                    ;;

            latest_fork_usec:)

                    ITEM=&quot;$PARA&quot;

                    ;;

            master_link_status:)

                    ITEM=&quot;$PARA&quot;

                    ;;

            instantaneous_ops_per_sec:)

                    ITEM=&quot;$PARA&quot;

                    ;;

            *)

                    exit 1

    esac



    VAL=$($REDIS_INFO_COMMAND | awk -F:  '/^'$ITEM'/{print $2}')

    echo $VAL



    监控mongodb

    sed -i &quot;/^# UserParameter=$/a\UserParameter=check.mongodb
  • , /usr/local/zabbix/scripts/check_mongodb.sh \$1 \$2&quot; /usr/local/zabbix/etc/zabbix_agentd.conf



    #!/bin/bash



    PARA=&quot;$1&quot;

    PORT=$2

    CLI=&quot;/usr/local/mongodb260/bin/mongostat&quot;



    if [ &quot;$PORT&quot; = &quot;&quot; ]; then

        PORT=27017

    fi



    RES=`$CLI --port $PORT -n 1 --noheaders | grep -v connected`



    case &quot;$PARA&quot; in

        res)

            VAL=$(echo $RES | awk '{print $10}' | tr -d g | tr -d m)

            VAL=$(echo &quot;scale=2;$VAL*1024*1024&quot; | bc | awk -F. '{if(substr($2,1,1)>=5)$1&#43;=1;print $1}')

            ;;

        total_mem)

            VAL=$(free -b | grep Mem: | awk '{print $2}')

            ;;

        conn)

            VAL=$(echo $RES | awk '{print $18}')

            ;;

        faults)

            VAL=$(echo $RES | awk '{print $11}')

            ;;

        locked)

            VAL=$(echo $RES | awk '{print $12}' | awk -F: '{print $2}' | tr -d '%')

            ;;

        flushes)

            VAL=$(echo $RES | awk '{print $7}')

            ;;

        *)

            exit 1

    esac



    echo $VAL



    监控elasticsearch

    sed -i &quot;/^# UserParameter=$/a\UserParameter=check.es
  • , /usr/local/zabbix/scripts/check_es.py \$1&quot; /usr/local/zabbix/etc/zabbix_agentd.conf



    #!/usr/bin/env python

    # coding: utf8

    __author__ = 'zhaoruixiong'



    import os,sys,urllib2,json

    from pprint import pprint





    server_ip = '10.2.0.48'

    monitor_url = 'http://'&#43;server_ip&#43;':9200/_nodes/stats/jvm'



    if(len(sys.argv)>1):

        monitor_item = sys.argv[1]

        if ((monitor_item != 'heap_used_in_bytes') and (monitor_item != 'heap_used_percent') and (monitor_item != 'heap_max_in_bytes')):

            print 0

            exit(0)

    else:

        print 0

        exit(0)



    item_val = 0

    try:

        res = {}

        request = urllib2.Request(monitor_url)

        result = urllib2.urlopen(request)

        res = json.loads(result.read())

        nodes_dic = res['nodes']

        for (k,v) in nodes_dic.items():

            if (v['transport_address'].find(server_ip) > 0):

                item_val = v['jvm']['mem'].get(monitor_item, 0)

        print item_val



    except urllib2.URLError as e:

        print 0

  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-142628-1-1.html 上篇帖子: zabbix_agentd.conf详解 下篇帖子: zabbix监控vmware的数据结构、业务逻辑和最简单原型代码
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表