stbyruby 发表于 2015-11-23 12:39:06

安装zabbix客户端脚本

安装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
lszabbix-2.2.3.tar.gz || wgethttp://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

# 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) + int(stat_list) + int(stat_list) + int(stat_list) + int(stat_list) + int(stat_list) + int(stat_list) + int(stat_list)
cpu_busy_time = int(stat_list) + int(stat_list) + int(stat_list) + int(stat_list) + int(stat_list) + int(stat_list) + int(stat_list)
return
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_PORTinfo&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+/{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) &#43; int(stat_list) &#43; int(stat_list) &#43; int(stat_list) &#43; int(stat_list) &#43; int(stat_list) &#43; int(stat_list) &#43; int(stat_list)

      cpu_busy_time = int(stat_list) &#43; int(stat_list) &#43; int(stat_list) &#43; int(stat_list) &#43; int(stat_list) &#43; int(stat_list) &#43; int(stat_list)

      return



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_PORTinfo&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_PORTinfo&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

    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]
查看完整版本: 安装zabbix客户端脚本