zabbix自定义监控(tcp连接、memcache、redis、端口进程监控)

一、tcp连接

1、监控tcp连接脚本(脚本记得要加好执行权限,脚本中的txt文件也要加权限,或者将路径改为zabbix用户有权限的文件夹)

#!/bin/bash
tcp_conn_status(){
        TCP_STAT=$1
        ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}' > /tmp/tcp_conn.txt
        TCP_STAT_VALUE=$(grep "$TCP_STAT" /tmp/tcp_conn.txt | cut -d ' ' -f2)
        if [ -z $TCP_STAT_VALUE ];then
                TCP_STAT_VALUE=0
        fi
        echo $TCP_STAT_VALUE
}

main(){
    case $1 in
        tcp_status)
        tcp_conn_status $2; 
        ;;
        *)
        echo "$0 + tcp_status + STATUS"
    esac
}

main $1 $2

加权限

chmod +x tcp_status.sh

vim /etc/sudoers(为zabbix账户加权限)

zabbixALL =(ALL) NOPASSWD: ALL

2、修改zabbix-agent配置文件

vim /etc/zabbix/zabbix_agentd.conf

UserParameter=tcp_status[*],/etc/zabbix/zabbix_agentd.d/tcp_status.sh $1 $2 #脚本中需要的参数是两个,该处可以多加参数,不可少加,不然会报错

重启程序

systemctl restart zabbix-agent.service

3、server端生成新的模板


导入已有模板

添加指定主机

二、监控memcache

1、监控memecache脚本

#!/bin/bash
memcached_status(){
    M_PORT=$1
    M_COMMAND=$2
    echo -e "stats\nquit" | nc127.0.0.1 "$M_PORT" | grep"STAT $M_COMMAND " | awk'{print $3}'
}
main(){
    case $1 in
        memcached_status)
        memcached_status$2 $3
        ;;
    esac
}
main $1 $2 $3

2、调用脚本

vim /etc/zabbix/zabbix_agentd.conf

UserParameter=memcache_status[*],/usr/local/zabbix/etc/zabbix_agentd.conf.d/memcache.sh "$1" "$2" "$3“

3、重启程序

systemctl restart zabbix-agent.service

4、测试脚本

bash memcache.sh memcached_status11211 curr_connections

5、server端导入已有模板或者新建,并关联主机

三、监控redis

1、监控redis脚本

#!/bin/bash
redis_status(){
    R_PORT=$1
    R_COMMAND=$2
    (echo -en "INFO \r\n";sleep1;) | nc127.0.0.1 "$R_PORT" > /usr/local/zabbix/redis_"$R_PORT".tmp
    REDIS_STAT_VALUE=$(grep""$R_COMMAND":" /usr/local/zabbix/redis_"$R_PORT".tmp| cut -d ':' -f2)
    echo $REDIS_STAT_VALUE
}
help(){
    echo "${0} + redis_status+ PORT + COMMAND"
}
main(){
    case $1 in
        redis_status)
        redis_status$2 $3
        ;;
    *)
        help
        ;;
esac
}
main $1 $2 $3

2、调用脚本

vim /etc/zabbix/zabbix_agentd.conf

UserParameter=redis_status[*],/usr/local/zabbix/etc/zabbix_agentd.conf.d/redis.sh "$1" "$2" "$3“

3、重启程序

systemctl restart zabbix-agent.service

4、测试脚本

bash redis.sh redis_status6379 connected_clients

5、server端导入已有模板或者新建模板,并关联主机

四、端口进程监控

#!/bin/bash
check_process(){
NUM=`ps -ef |grep -v grep |grep -v bash |grep -v sh  | grep ${NAME}|wc -l`
if [ $NUM -eq 0 ];then
    echo 100
else
    echo 50
fi
}

check_port(){
ss -tnl  | grep  ${PORT} &> /dev/null
if [ $? -eq 0 ];then
    echo 50
else 
    echo 100
fi
}

main(){
    case $1 in
        process)
        NAME=$2
        check_process;
        ;;
    port)
        PORT=$2
        check_port;
        ;;
    esac
}

main $1 $2

你可能感兴趣的:(zabbix自定义监控(tcp连接、memcache、redis、端口进程监控))