公司监控体系之——zabbix自定义监控脚本(JVM&nginx)

自定义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数较多,则说明并发访问量非常大,正在处理过程中.


分享到:


相關文章: