監控Nginx服務的Shell指令碼

2021-09-07 20:01:01 字數 1447 閱讀 4221

nginx 雖然處理併發量比 apache 確實要強點,但它這種 php-cgi 模式不是太穩定,這點網上也有朋友總結了,我在實現專案中也感受到了。  

我們一台支付機,偶爾會出現以下情況的:php-cgi 程序突然消失了,造成php指令碼無法訪問;更不可思議的是明明是php-cgi 開啟有兩個埠在監聽的,莫名其秒的突然有乙個php-cgi 的埠被關閉了,造成所有請求全積在乙個埠上,  

結果造成php指令碼訪問異常。  

基本這種情況,我寫了個監控shell指令碼的解決方案,不管以上出現那種情況,都自動恢復nginx的服務.該指令碼在生產環境上執行正常:  

#!/bin/bash  

#  # filename: webservermonitor.sh  

# 功能:監控 nginx 的 php-cgi 是否正常  

# 執行: webservermonitor.sh &  

#  # php-cgi 監聽的ip和埠  

v_php_cgi_port="127.0.0.1:9000 127.0.0.1:9001"

# nginx重啟的指令碼  

v_nginx="/usr/local/nginx/sbin/restart.sh"

# 日誌檔案  

v_log="/tmp/webservermonitor.log"

# 函式定義:重啟nginx  

function restart_nginx()  

# 迴圈執行,不採用 crontab ,國為 crontab 最小單位是分鐘,時間太長了  

while :  

do# 1:先檢測 nginx 主程序是否存在  

v_nginx_num=`ps axu |grep 'nginx' |grep -v 'grep' |wc -l`  

if [ $v_nginx_num -lt 1 ];then  

restart_nginx  

continue

fi  

# 2:再檢查php-cgi是否有程序存在  

v_php_cgi_num=`ps axu |grep 'php-cgi' |grep -v 'grep' |wc -l`  

if [ $v_php_cgi_num -lt 1 ];then  

restart_nginx  

continue

fi  

# 3:再判斷埠是否正常  

for port in $v_php_cgi_port

dov_num=`eval

"netstat -nlpt | grep '$' | wc -l"`  

if [ $v_num -lt 1 ];then  

restart_nginx  

continue

fi  

done  

# 休眠  

sleep 5  

done  

監控Nginx服務的Shell指令碼

nginx 雖然處理併發量比 apache 確實要強點,但它這種 php cgi 模式不是太穩定,這點網上也有朋友總結了,我在實現專案中也感受到了。我們一台支付機,偶爾會出現以下情況的 php cgi 程序突然消失了,造成php指令碼無法訪問 更不可思議的是明明是php cgi 開啟有兩個埠在監聽的...

服務監控 Nginx狀態監控

root linux node1 vim etc zabbix zabbix agentd.conf 編輯配置檔案引用key include etc zabbix zabbix agentd.d conf root linux node1 mkdir etc zabbix scripts 存放she...

Nginx服務狀態監控的方法

在nginx的外掛程式模組中有乙個模組stub status可以監控nginx的一些狀態資訊,預設安裝可能沒有這個模組,手動編譯的時候加一下即可。1.模組安裝 先使用命令檢視是否已經安裝這個模組 複製 如下 root ihxb123z nginx nginx v v大寫會顯示版本號和模組等資訊 v小...