自定義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 的文章