#!/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 <<"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.iyunv.com/uid-108431-id-3359082.html
from __future__ import division
import os
import re
import time
import sys
cpu = "cpu"
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 = "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 = 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 "$CHECK_SCRIPT_FILE" $ZABBIX_AGETNTD_CONF)
if [ $REPEAT_COMM_NUM -eq 0 ]; then
sed -i "/^# UserParameter=$/a\UserParameter=$SERVER_KEY_NAME