一、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