zabbix的rpm包下載地址 http://repo.zabbix.com/zabbix/ html
注意,本文全部內容都是基於 zabbix 3.x 版本的!!!mysql
一、Tcp鏈接監控相關設置nginx
模板web
Templates TCP Connection Status.xml 已上傳到附件,導入到web zabbix便可sql
客戶端腳本api
cat Tcp_Status.shbash
#!/bin/bash #scripts for tcp status function SYNRECV { /usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'SYN-RECV' | awk '{print $2}' } function ESTAB { /usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'ESTAB' | awk '{print $2}' } function FINWAIT1 { /usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'FIN-WAIT-1' | awk '{print $2}' } function FINWAIT2 { /usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'FIN-WAIT-2' | awk '{print $2}' } function TIMEWAIT { /usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'TIME-WAIT' | awk '{print $2}' } function LASTACK { /usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'LAST-ACK' | awk '{print $2}' } function LISTEN { /usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'LISTEN' | awk '{print $2}' }
添加腳本x權限 chmod +x Tcp_Status.sh
在zabbix_agentd .conf 添加以下代碼,注意腳本路徑app
UserParameter=Tcp.Status[*],/etc/zabbix/Tcp_Status.sh $1
zabbix-agent重啓便可curl
二、Nginx的鏈接監控設置tcp
提供模板
Template Nginx Connection.xml 已上傳到附件,導入到web zabbix便可
客戶端腳本
cat nginx_status.sh
#!/bin/bash # Info: zabbix 監控 nginx 性能以及進程狀態 # 檢查nginx 進程是否存在 function ping { /sbin/pidof nginx | wc -l } # 檢查nginx 性能 # 活動鏈接數 function active { /usr/bin/curl "http://127.0.0.1/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}' } # 處理的鏈接數 function accepts { /usr/bin/curl "http://127.0.0.1/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}' } # 成功建立的握手次數 function handled { /usr/bin/curl "http://127.0.0.1/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}' } # 處理的請求數 function requests { /usr/bin/curl "http://127.0.0.1/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}' } # 讀取客戶端的鏈接數 function reading { /usr/bin/curl "http://127.0.0.1/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}' } # 響應數據到客戶端的數量 function writing { /usr/bin/curl "http://127.0.0.1/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}' } # 已經處理完正在等候下一次請求指令的駐留鏈接 function waiting { /usr/bin/curl "http://127.0.0.1/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}' } # 執行function $1
添加x權限
在zabbix_agentd .conf 添加以下代碼,注意腳本路徑
UserParameter=Nginx.Status[*],/etc/zabbix/nginx_status.sh $1
最後zabbix-agent重啓便可
三、RabbitMQ的鏈接監控設置
提供模板
Template RabbitMQ Connection.xml 已上傳到附件,導入到web zabbix便可
客戶端腳本
cat Rabbitmq_status.sh
#!/bin/bash #Info: check rabbitMQ messqges_ready value,if >10 action USER='admin' PASSWD='admin' URL1='http://127.0.0.1:15672/api/vhosts' COMMAD='/opt/application/rabbitmq_server-3.6.5/sbin/rabbitmqctl' OPTION='list_queues' PATH='/tmp/rabbitmq_messages.html' /usr/bin/curl -s -u $USER:$PASSWD $URL1 > $PATH VALUE=`/bin/grep -oP '(?<=messages_ready":)[0-9]*' $PATH` #echo $VALUE function messages_ready() { #$COMMAD $OPTION messages_ready | sed '1d' | wc -l echo "$VALUE" } $1
添加x權限
在zabbix_agentd .conf 添加以下代碼,注意腳本路徑
UserParameter=Rabbitmq.Status[*],/etc/zabbix/Rabbitmq_status.sh $1
最後zabbix-agent重啓便可
四、Mysql的監控設置
提供模板 Template Mysql.xml 已上傳到附件,導入到web zabbix便可
客戶端腳本
cat Check_mysql.sh
#!/bin/sh MYSQL_SOCK="/tmp/mysql.sock" MYSQL_PWD=`cat /opt/application/zabbix/plugin/.mysqlp` ARGS=1 if [ $# -ne "$ARGS" ];then echo "Please input one arguement:" fi case $1 in Uptime) result=`mysqladmin -uZabbixAgent -p${MYSQL_PWD} -S $MYSQL_SOCK status|cut -f2 -d":"|cut -f1 -d"T"` echo $result ;; Com_update) result=`mysqladmin -uZabbixAgent -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_update"|cut -d"|" -f3` echo $result ;; Slow_queries) result=`mysqladmin -uZabbixAgent -p${MYSQL_PWD} -S $MYSQL_SOCK status |cut -f5 -d":"|cut -f1 -d"O"` echo $result ;; Com_select) result=`mysqladmin -uZabbixAgent -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_select"|cut -d"|" -f3` echo $result ;; Com_rollback) result=`mysqladmin -uZabbixAgent -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_rollback"|cut -d"|" -f3` echo $result ;; Questions) result=`mysqladmin -uZabbixAgent -p${MYSQL_PWD} -S $MYSQL_SOCK status|cut -f4 -d":"|cut -f1 -d"S"` echo $result ;; Com_insert) result=`mysqladmin -uZabbixAgent -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_insert"|cut -d"|" -f3` echo $result ;; Com_delete) result=`mysqladmin -uZabbixAgent -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_delete"|cut -d"|" -f3` echo $result ;; Com_commit) result=`mysqladmin -uZabbixAgent -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_commit"|cut -d"|" -f3` echo $result ;; Bytes_sent) result=`mysqladmin -uZabbixAgent -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Bytes_sent" |cut -d"|" -f3` echo $result ;; Bytes_received) result=`mysqladmin -uZabbixAgent -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Bytes_received" |cut -d"|" -f3` echo $result ;; Com_begin) result=`mysqladmin -uZabbixAgent -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_begin"|cut -d"|" -f3` echo $result ;; CPU_usage) result=`/usr/bin/top -bn1 -U mysql|grep mysqld|awk '{print $9}'` echo $result ;; Memory_usage) result=`/usr/bin/top -bn1 -U mysql|grep mysqld|awk '{print $10}'` echo $result ;; *) echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|CPU_usage|Memory_usage)" ;; esac
在zabbix_agent.conf添加以下代碼
# 獲取mysql性能指標,這個是上面定義好的腳本 UserParameter=mysql.status[*],/opt/application/zabbix/plugin/Check_mysql.sh $1 # # 獲取mysql運行狀態 UserParameter=mysql.ping,mysqladmin -uUSER -pPASSWPRD ping | grep -c alive
重啓 zabbix-agent 便可