自定义zabbix监控脚本
======================================================
mkdir -p /scripts/zabbix/
cd /scripts/zabbix/
#这个路径可以存放zabbix自定义的监控脚本
vim /etc/zabbix/zabbix_agentd.conf
Include=/etc/zabbix/zabbix_agentd.d/
#尾行添加一个include
mkdir /etc/zabbix/zabbix_agentd.d
cd /etc/zabbix/zabbix_agentd.d
vim nginx.conf
UserParameter=custom.nginx.status[*], /scripts/zabbix/zabbix_nginx_check.sh $1
#UserParameter是固定的,可以写多个同样的
#custom.nginx.status是自定义的一个名称,是一个key名字,服务端监控时需要填写这个key
#[*],自定义参数的个数,*是不论多少个参数都可以
#/scripts/zabbix/zabbix_nginx_check.sh是自定义脚本的完整路径
#$1是从前面的[*]中传过来的
/etc/init.d/zabbix-agent restart
#重启脚本生效
zabbix_get -s 192.168.2.182 -k custom.nginx.status[active_connections]
##这个是在server端执行测试结果的
-----------------------------------------------------
监控jvm虚拟机
先安装java环境
yum install -y zabbix-java-gateway.x86_64
ll /usr/sbin/zabbix_java/bin/zabbix-java-gateway-2.4.8.jar
cat > /etc/zabbix/zabbix_server.conf << EOF
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
DBName=zabbix
DBUser=zabbix
DBPassword=zabbixpass
DBSocket=/var/lib/mysql/mysql.sock
StartHTTPPollers=5
JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5
SNMPTrapperFile=/var/log/snmptt/snmptt.log
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
EOF
#酌情可以把JavaGateway=127.0.0.1修改成主机的IP地址
#需要设置/etc/hosts 增加一行ip hostname一行解析,不然jvm监控会有问题
hostname=`grep HOSTNAME /etc/sysconfig/network | awk -F "=" '{print $2}' `
ip=`ip a | grep eth0 | grep inet | awk -F "[ /]+" '{print $3}'`
echo "$ip $hostname" >> /etc/hosts
# 增加一行解析,很有必要
/etc/init.d/zabbix-java-gateway start
/etc/init.d/zabbix-server restart
==========================================
zabbix Nginx 监控脚本
mkdir -p /scripts/zabbix/
cat > /scripts/zabbix/nginxmonitor.sh << 'EOF'
#!/bin/bash
#FileName:nginxmonitor.sh
#FileDesc:Zabbix monitoring nginx status
if [[ $# == 1 ]];then
case $1 in
status)
result=`curl -o /dev/null -s -w "%{http_code}" "http://localhost/nginxstatus"`
echo $result
;;
active_connections)
result=`curl -s "http://localhost/nginxstatus" | awk '/Active/{print $3}'`
echo $result
;;
reading)
result=`curl -s "http://localhost/nginxstatus" | awk '/Reading/{print $2}'`
echo $result
;;
writing)
result=`curl -s "http://localhost/nginxstatus" | awk '/Writing/{print $4}'`
echo $result
;;
waiting)
result=`curl -s "http://localhost/nginxstatus" | awk '/Waiting/{print $6}'`
echo $result
;;
accepts)
result=`curl -s "http://localhost/nginxstatus" | awk NR==3 | awk '{print $1}'`
echo $result
;;
handled)
result=`curl -s "http://localhost/nginxstatus" | awk NR==3 | awk '{print $2}'`
echo $result
;;
requests)
result=`curl -s "http://localhost/nginxstatus" | awk NR==3 | awk '{print $3}'`
echo $result
;;
esac
fi
EOF
chmod +x /scripts/zabbix/nginxmonitor.sh
cat > /scripts/zabbix/userparameter/userparameter_nginx.conf << 'EOF'
UserParameter=nginx.active_connections,/scripts/zabbix/nginxmonitor.sh active_connections
UserParameter=nginx.reading,/scripts/zabbix/nginxmonitor.sh reading
UserParameter=nginx.writing,/scripts/zabbix/nginxmonitor.sh writing
UserParameter=nginx.waiting,/scripts/zabbix/nginxmonitor.sh waiting
UserParameter=nginx.accepts,/scripts/zabbix/nginxmonitor.sh accepts
UserParameter=nginx.handled,/scripts/zabbix/nginxmonitor.sh handled
UserParameter=nginx.requests,/scripts/zabbix/nginxmonitor.sh requests
UserParameter=nginx.status,/scripts/zabbix/nginxmonitor.sh status
EOF
/etc/init.d/zabbix-agent restart
#zabbix nginx xml模板,直接复制粘贴到桌面即可
tip:
--------------------------------------------------------
Active connections:
活动连接数.nginx upstream和后端的连接时长链接,因此数量不会多;活动连接数大多是访问nginx的连接
Server accepts handled requests:
Nginx总共处理了38810620个连接,成功创建38810620次握手(证明中间没有失败的),总共处理了298655730个请求.
298655730/38810620=7.69 平均每个连接处理了7.69个请求
Reading:
Nginx 读取到客户端的Header信息数.
Writing:
Nginx 返回给客户端的Header信息数.
Waiting:
开启keep-alive的情况下,这个值等于 active – (reading + writing),意思就是Nginx已经处理完成,正在等候下一次请求指令的驻留连接.
所以,在访问效率高,请求很快被处理完毕的情况下,Waiting数比较多是正常的.如果reading +writing数较多,则说明并发访问量非常大,正在处理过程中.
閱讀更多 問我35 的文章