安装zabbix客户端脚本
来源:互联网 发布:超值的网络推广多少钱 编辑:程序博客网 时间:2024/05/21 20:32
安装zabbix客户端脚本
添加自定义的zabbix监控脚本
添加自定义的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 <<"EOF"
#!/bin/bash
STAT=""
case "$1" 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 "$CHECK_SCRIPT_FILE" $ZABBIX_AGETNTD_CONF)
if [ $REPEAT_COMM_NUM -eq 0 ]; then
sed -i "/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME[*], $CHECK_SCRIPT_FILE \$1" $ZABBIX_AGETNTD_CONF
fi
########################################### add check_cpu_usage script ################################################
CHECK_SCRIPT_FILE_NAME="check_cpu_usage.py"
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 <<"EOF"
#!/usr/bin/env python
# http://blog.chinaunix.net/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("cat /proc/stat | sed -n '1p'").read().strip()
stat_list = stat_str.split()
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]
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 "$CHECK_SCRIPT_FILE" $ZABBIX_AGETNTD_CONF)
if [ $REPEAT_COMM_NUM -eq 0 ]; then
sed -i "/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME[*], $CHECK_SCRIPT_FILE \$1" $ZABBIX_AGETNTD_CONF
fi
########################################### add check_redis script ################################################
CHECK_SCRIPT_FILE_NAME="check_redis.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 <<"EOF"
#!/bin/bash
PARA="$1"":"
REDIS_PORT=$2
REDIS_CLI="/usr/local/redis/bin/redis-cli"
if [ "$REDIS_PORT" = "" ]; then
REDIS_PORT=6379
fi
REDIS_INFO_COMMAND="$REDIS_CLI -p $REDIS_PORT info"
ITEM=""
case $PARA in
connected_clients:)
ITEM="$PARA"
;;
used_memory:)
ITEM="$PARA"
;;
used_memory_peak:)
ITEM="$PARA"
;;
latest_fork_usec:)
ITEM="$PARA"
;;
master_link_status:)
ITEM="$PARA"
;;
instantaneous_ops_per_sec:)
ITEM="$PARA"
;;
*)
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 "$CHECK_SCRIPT_FILE" $ZABBIX_AGETNTD_CONF)
if [ $REPEAT_COMM_NUM -eq 0 ]; then
sed -i "/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME[*], $CHECK_SCRIPT_FILE \$1 \$2" $ZABBIX_AGETNTD_CONF
fi
########################################### add check_mongodb script ################################################
CHECK_SCRIPT_FILE_NAME="check_mongodb.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 <<"EOF"
#!/bin/bash
PARA="$1"
PORT=$2
CLI="/usr/local/mongodb260/bin/mongostat"
if [ "$PORT" = "" ]; then
PORT=27017
fi
RES=`$CLI --port $PORT -n 1 --noheaders | grep -v connected`
case "$PARA" in
res)
VAL=$(echo $RES | awk '{print $10}' | tr -d g | tr -d m)
VAL=$(echo "scale=2;$VAL*1024*1024" | 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 "$CHECK_SCRIPT_FILE" $ZABBIX_AGETNTD_CONF)
if [ $REPEAT_COMM_NUM -eq 0 ]; then
sed -i "/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME[*], $CHECK_SCRIPT_FILE \$1 \$2" $ZABBIX_AGETNTD_CONF
fi
#restart zabbix agentd
/etc/init.d/zabbix_agentd restart
个别主机使用的脚本
监控redis
sed -i "/^# UserParameter=$/a\UserParameter=check.redis[*], /usr/local/zabbix/scripts/check_redis.sh \$1 \$2" /usr/local/zabbix/etc/zabbix_agentd.conf
#!/bin/bash
PARA="$1"":"
REDIS_PORT=$2
REDIS_CLI="/usr/local/bin/redis-cli"
if [ "$REDIS_PORT" = "" ]; then
REDIS_PORT=6379
fi
REDIS_INFO_COMMAND="$REDIS_CLI -p $REDIS_PORT info"
ITEM=""
case $PARA in
connected_clients:)
ITEM="$PARA"
;;
used_memory:)
ITEM="$PARA"
;;
used_memory_peak:)
ITEM="$PARA"
;;
latest_fork_usec:)
ITEM="$PARA"
;;
master_link_status:)
ITEM="$PARA"
;;
instantaneous_ops_per_sec:)
ITEM="$PARA"
;;
*)
exit 1
esac
VAL=$($REDIS_INFO_COMMAND | awk -F: '/^'$ITEM'/{print $2}')
echo $VAL
监控mongodb
sed -i "/^# UserParameter=$/a\UserParameter=check.mongodb[*], /usr/local/zabbix/scripts/check_mongodb.sh \$1 \$2" /usr/local/zabbix/etc/zabbix_agentd.conf
#!/bin/bash
PARA="$1"
PORT=$2
CLI="/usr/local/mongodb260/bin/mongostat"
if [ "$PORT" = "" ]; then
PORT=27017
fi
RES=`$CLI --port $PORT -n 1 --noheaders | grep -v connected`
case "$PARA" in
res)
VAL=$(echo $RES | awk '{print $10}' | tr -d g | tr -d m)
VAL=$(echo "scale=2;$VAL*1024*1024" | 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
监控elasticsearch
sed -i "/^# UserParameter=$/a\UserParameter=check.es[*], /usr/local/zabbix/scripts/check_es.py \$1" /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://'+server_ip+':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
#!/bin/bash# get network ip addr functionfunction 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 functionfunction 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 fifi if [ "$ETH1_IP" != "" ]; then if [ "$(getSegment $ETH1_IP 1)" = "10" ]; then IP_ADDR=$ETH1_IP fifiLOCAL_IP=$IP_ADDRLOCAL_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!" exitesac groupadd zabbixuseradd -g zabbix -s /sbin/nologin -M zabbixcd /usr/local/srcls 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.gztar zxvf zabbix-2.2.3.tar.gzcd zabbix-2.2.3./configure --prefix=/usr/local/zabbix --enable-agentmake installcp misc/init.d/fedora/core/zabbix_agentd /etc/init.dsed -i 's/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g' /etc/init.d/zabbix_agentdchkconfig --add zabbix_agentdchkconfig zabbix_agentd onsed -i "s/^Server=127.0.0.1/Server=$SERVER_IP/g" /usr/local/zabbix/etc/zabbix_agentd.confsed -i "s/^ServerActive=127.0.0.1/ServerActive=$SERVER_IP/" /usr/local/zabbix/etc/zabbix_agentd.confsed -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/bashZABBIX_AGETNTD_CONF="/usr/local/zabbix/etc/zabbix_agentd.conf"ZABBIX_SCRIPT_DIR="/usr/local/zabbix/scripts"# modify UnsafeUserParameters=1sed -i "/# UnsafeUserParameters=0/a\UnsafeUserParameters=1" $ZABBIX_AGETNTD_CONF# if not exits script dir, then create script dirif [ ! -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_NAMESERVER_KEY_NAME=${CHECK_SCRIPT_FILE_NAME%.*}SERVER_KEY_NAME=${SERVER_KEY_NAME//_/.}cat > $CHECK_SCRIPT_FILE <<"EOF"#!/bin/bashSTAT=""case "$1" in ESTABLISHED) STAT='ESTABLISHED' ;; TIME-WAIT) STAT='TIME-WAIT' ;; *) exit 1esacNUM=$(/usr/sbin/ss -a state $STAT | wc -l)echo $NUMEOFchmod 755 $CHECK_SCRIPT_FILE# add UserParameterREPEAT_COMM_NUM=$(grep -c "$CHECK_SCRIPT_FILE" $ZABBIX_AGETNTD_CONF)if [ $REPEAT_COMM_NUM -eq 0 ]; then sed -i "/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME[*], $CHECK_SCRIPT_FILE \$1" $ZABBIX_AGETNTD_CONFfi########################################### add check_cpu_usage script ################################################CHECK_SCRIPT_FILE_NAME="check_cpu_usage.py"CHECK_SCRIPT_FILE=$ZABBIX_SCRIPT_DIR"/"$CHECK_SCRIPT_FILE_NAMESERVER_KEY_NAME=${CHECK_SCRIPT_FILE_NAME%.*}SERVER_KEY_NAME=${SERVER_KEY_NAME//_/.}cat > $CHECK_SCRIPT_FILE <<"EOF"#!/usr/bin/env python# http://blog.chinaunix.net/uid-108431-id-3359082.htmlfrom __future__ import divisionimport osimport reimport timeimport syscpu = "cpu"if(len(sys.argv)>1): cpu = cpu+sys.argv[1]# define get cpu_total_time and cpu_busy_time functiondef get_times(cpu): shell_cmd = "cat /proc/stat | sed -n '/^"+cpu+" /p'" 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 = restime.sleep(1)res = get_times(cpu)cpu_total_time_2,cpu_busy_time_2 = res# calculate the cpu usagetotal = cpu_total_time_2 - cpu_total_time_1busy = cpu_busy_time_2 - cpu_busy_time_1print busy/total*100EOFchmod 755 $CHECK_SCRIPT_FILE# add UserParameterREPEAT_COMM_NUM=$(grep -c "$CHECK_SCRIPT_FILE" $ZABBIX_AGETNTD_CONF)if [ $REPEAT_COMM_NUM -eq 0 ]; then sed -i "/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME[*], $CHECK_SCRIPT_FILE \$1" $ZABBIX_AGETNTD_CONFfi########################################### add check_redis script ################################################CHECK_SCRIPT_FILE_NAME="check_redis.sh"CHECK_SCRIPT_FILE=$ZABBIX_SCRIPT_DIR"/"$CHECK_SCRIPT_FILE_NAMESERVER_KEY_NAME=${CHECK_SCRIPT_FILE_NAME%.*}SERVER_KEY_NAME=${SERVER_KEY_NAME//_/.}cat > $CHECK_SCRIPT_FILE <<"EOF"#!/bin/bashPARA="$1"":"REDIS_PORT=$2REDIS_CLI="/usr/local/redis/bin/redis-cli"if [ "$REDIS_PORT" = "" ]; then REDIS_PORT=6379fiREDIS_INFO_COMMAND="$REDIS_CLI -p $REDIS_PORT info"ITEM=""case $PARA in connected_clients:) ITEM="$PARA" ;; used_memory:) ITEM="$PARA" ;; used_memory_peak:) ITEM="$PARA" ;; latest_fork_usec:) ITEM="$PARA" ;; master_link_status:) ITEM="$PARA" ;; instantaneous_ops_per_sec:) ITEM="$PARA" ;; *) exit 1esacVAL=$($REDIS_INFO_COMMAND | awk -F: '/^'$ITEM'/{print $2}')echo $VALEOFchmod 755 $CHECK_SCRIPT_FILE# add UserParameterREPEAT_COMM_NUM=$(grep -c "$CHECK_SCRIPT_FILE" $ZABBIX_AGETNTD_CONF)if [ $REPEAT_COMM_NUM -eq 0 ]; then sed -i "/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME[*], $CHECK_SCRIPT_FILE \$1 \$2" $ZABBIX_AGETNTD_CONFfi########################################### add check_mongodb script ################################################CHECK_SCRIPT_FILE_NAME="check_mongodb.sh"CHECK_SCRIPT_FILE=$ZABBIX_SCRIPT_DIR"/"$CHECK_SCRIPT_FILE_NAMESERVER_KEY_NAME=${CHECK_SCRIPT_FILE_NAME%.*}SERVER_KEY_NAME=${SERVER_KEY_NAME//_/.}cat > $CHECK_SCRIPT_FILE <<"EOF"#!/bin/bashPARA="$1"PORT=$2CLI="/usr/local/mongodb264/bin/mongostat"if [ "$PORT" = "" ]; then PORT=27017fiRES=`$CLI --port $PORT -n 1 --noheaders | grep -v connected`case "$PARA" in res) VAL=$(echo $RES | awk '{print $10}' | tr -d g | tr -d m) VAL=$(echo "scale=2;$VAL*1024*1024" | 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 1esacecho $VALEOFchmod 755 $CHECK_SCRIPT_FILE# add UserParameterREPEAT_COMM_NUM=$(grep -c "$CHECK_SCRIPT_FILE" $ZABBIX_AGETNTD_CONF)if [ $REPEAT_COMM_NUM -eq 0 ]; then sed -i "/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME[*], $CHECK_SCRIPT_FILE \$1 \$2" $ZABBIX_AGETNTD_CONFfi########################################### add cpu_core_discovery script ################################################CHECK_SCRIPT_FILE_NAME="cpu_core_discovery.py"CHECK_SCRIPT_FILE=$ZABBIX_SCRIPT_DIR"/"$CHECK_SCRIPT_FILE_NAMESERVER_KEY_NAME=${CHECK_SCRIPT_FILE_NAME%.*}SERVER_KEY_NAME=${SERVER_KEY_NAME//_/.}cat > $CHECK_SCRIPT_FILE <<"EOF"#!/usr/bin/env python# coding: utf8# discovery cpu cores__author__ = 'zhaoruixiong'import os,sys,jsonshell_cmd = "cat /proc/stat | awk '/^cpu[0-9]+/{print $1}'"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'] = aprint json.dumps(res)EOFchmod 755 $CHECK_SCRIPT_FILE# add UserParameterREPEAT_COMM_NUM=$(grep -c "$CHECK_SCRIPT_FILE" $ZABBIX_AGETNTD_CONF)if [ $REPEAT_COMM_NUM -eq 0 ]; then sed -i "/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME[*], $CHECK_SCRIPT_FILE \$1" $ZABBIX_AGETNTD_CONFfi#restart zabbix agentd/etc/init.d/zabbix_agentd restart
添加自定义的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 <<"EOF"
#!/bin/bash
STAT=""
case "$1" 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 "$CHECK_SCRIPT_FILE" $ZABBIX_AGETNTD_CONF)
if [ $REPEAT_COMM_NUM -eq 0 ]; then
sed -i "/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME[*], $CHECK_SCRIPT_FILE \$1" $ZABBIX_AGETNTD_CONF
fi
########################################### add check_cpu_usage script ################################################
CHECK_SCRIPT_FILE_NAME="check_cpu_usage.py"
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 <<"EOF"
#!/usr/bin/env python
# http://blog.chinaunix.net/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("cat /proc/stat | sed -n '1p'").read().strip()
stat_list = stat_str.split()
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]
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 "$CHECK_SCRIPT_FILE" $ZABBIX_AGETNTD_CONF)
if [ $REPEAT_COMM_NUM -eq 0 ]; then
sed -i "/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME[*], $CHECK_SCRIPT_FILE \$1" $ZABBIX_AGETNTD_CONF
fi
########################################### add check_redis script ################################################
CHECK_SCRIPT_FILE_NAME="check_redis.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 <<"EOF"
#!/bin/bash
PARA="$1"":"
REDIS_PORT=$2
REDIS_CLI="/usr/local/redis/bin/redis-cli"
if [ "$REDIS_PORT" = "" ]; then
REDIS_PORT=6379
fi
REDIS_INFO_COMMAND="$REDIS_CLI -p $REDIS_PORT info"
ITEM=""
case $PARA in
connected_clients:)
ITEM="$PARA"
;;
used_memory:)
ITEM="$PARA"
;;
used_memory_peak:)
ITEM="$PARA"
;;
latest_fork_usec:)
ITEM="$PARA"
;;
master_link_status:)
ITEM="$PARA"
;;
instantaneous_ops_per_sec:)
ITEM="$PARA"
;;
*)
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 "$CHECK_SCRIPT_FILE" $ZABBIX_AGETNTD_CONF)
if [ $REPEAT_COMM_NUM -eq 0 ]; then
sed -i "/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME[*], $CHECK_SCRIPT_FILE \$1 \$2" $ZABBIX_AGETNTD_CONF
fi
########################################### add check_mongodb script ################################################
CHECK_SCRIPT_FILE_NAME="check_mongodb.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 <<"EOF"
#!/bin/bash
PARA="$1"
PORT=$2
CLI="/usr/local/mongodb260/bin/mongostat"
if [ "$PORT" = "" ]; then
PORT=27017
fi
RES=`$CLI --port $PORT -n 1 --noheaders | grep -v connected`
case "$PARA" in
res)
VAL=$(echo $RES | awk '{print $10}' | tr -d g | tr -d m)
VAL=$(echo "scale=2;$VAL*1024*1024" | 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 "$CHECK_SCRIPT_FILE" $ZABBIX_AGETNTD_CONF)
if [ $REPEAT_COMM_NUM -eq 0 ]; then
sed -i "/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME[*], $CHECK_SCRIPT_FILE \$1 \$2" $ZABBIX_AGETNTD_CONF
fi
#restart zabbix agentd
/etc/init.d/zabbix_agentd restart
个别主机使用的脚本
监控redis
sed -i "/^# UserParameter=$/a\UserParameter=check.redis[*], /usr/local/zabbix/scripts/check_redis.sh \$1 \$2" /usr/local/zabbix/etc/zabbix_agentd.conf
#!/bin/bash
PARA="$1"":"
REDIS_PORT=$2
REDIS_CLI="/usr/local/bin/redis-cli"
if [ "$REDIS_PORT" = "" ]; then
REDIS_PORT=6379
fi
REDIS_INFO_COMMAND="$REDIS_CLI -p $REDIS_PORT info"
ITEM=""
case $PARA in
connected_clients:)
ITEM="$PARA"
;;
used_memory:)
ITEM="$PARA"
;;
used_memory_peak:)
ITEM="$PARA"
;;
latest_fork_usec:)
ITEM="$PARA"
;;
master_link_status:)
ITEM="$PARA"
;;
instantaneous_ops_per_sec:)
ITEM="$PARA"
;;
*)
exit 1
esac
VAL=$($REDIS_INFO_COMMAND | awk -F: '/^'$ITEM'/{print $2}')
echo $VAL
监控mongodb
sed -i "/^# UserParameter=$/a\UserParameter=check.mongodb[*], /usr/local/zabbix/scripts/check_mongodb.sh \$1 \$2" /usr/local/zabbix/etc/zabbix_agentd.conf
#!/bin/bash
PARA="$1"
PORT=$2
CLI="/usr/local/mongodb260/bin/mongostat"
if [ "$PORT" = "" ]; then
PORT=27017
fi
RES=`$CLI --port $PORT -n 1 --noheaders | grep -v connected`
case "$PARA" in
res)
VAL=$(echo $RES | awk '{print $10}' | tr -d g | tr -d m)
VAL=$(echo "scale=2;$VAL*1024*1024" | 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
监控elasticsearch
sed -i "/^# UserParameter=$/a\UserParameter=check.es[*], /usr/local/zabbix/scripts/check_es.py \$1" /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://'+server_ip+':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
0 0
- 安装zabbix客户端脚本
- zabbix agentd客户端插件Shell一键自动安装脚本
- zabbix 客户端安装
- zabbix-客户端windows 安装
- zabbix客户端安装dat
- zabbix 客户端安装配置
- windows安装zabbix客户端
- zabbix 客户端安装
- Linux 安装zabbix客户端
- zabbix安装window客户端
- zabbix客户端 zabbix-agent 2.4版本安装
- zabbix客户端 zabbix-agent 2.4版本安装
- zabbix 客户端安装配置运行
- zabbix监控系统客户端安装
- ansible安装配置zabbix客户端
- zabbix监控系统客户端安装
- linux下安装zabbix客户端
- zabbix监控系统客户端安装
- java个人经验
- 基于Binder的IPC通讯机制
- SOAP协议简介
- php-MySQL笔记集合
- Spring MVC : Java模板引擎 Thymeleaf (二)
- 安装zabbix客户端脚本
- 手机DCIM\.thumbnails 文件删除
- Excel部分快捷键用法(2)
- Java学习课程(1)
- phonegap运行原理
- gluLookAt 与 gluPerspective 动画解析
- Java学习课程(2)
- nyoj1022合纵连横(带分离操作的并查集)
- CF 111B Petya and Divisors【想法题+二分(可省略)】