公司監控體系之——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數較多,則說明併發訪問量非常大,正在處理過程中.


分享到:


相關文章: