Nginx負載節點狀態監測腳本

 1)腳本需求:開通一個經過web界面展現監控Nginx負載節點的狀態。當節點宕機時,以紅色展現,當節點正常時以綠色展現。html


 2)腳本解答:
nginx

[root@localhost scripts]# cat monitor.sh web

#!/bin/bash後端

#this scripts is created by ywxi at 2018-05-11瀏覽器

RIPS=(                    #定義監測節點池bash

  192.168.1.22服務器

  192.168.1.33app

  192.168.1.30框架

 )curl


file_location=/usr/share/nginx/html/test.html                  #默認yum安裝nginx的站點目錄路徑

[ -e "$file_location" ]||mkdir -p `dirname $file_location`    #判斷目錄是否存在


function web_result {                                                         #定義curl請求狀態值

  rs=`curl -I -s $1|awk 'NR==1{print $2}'`

  return $rs

}


function new_row {                                                           #定義web框架

  cat >> $file_location <<eof

  <tr>

  <td bgcolor="$4">$1</td>

  <td bgcolor="$4">$2</td>

  <td bgcolor="$4">$3</td>

  </tr>

eof

}


function auto_html {                                                        #定義節點狀態返回值顯示的web界面

  web_result $2

  rs=$?

  if [ $rs -eq 200 ]

    then

      new_row $1 $2 up green

  else

      new_row $1 $2 down red

  fi

}


function main(){                                                                 #定義web框架

  while true

  do

  cat >> $file_location <<eof

  <h4>ywxi Nginx Service Status Of RS :</h4>

  <meta http-equiv="refresh" content="1">

  <table border="1">

  <tr>

  <th>NO:</th>

  <th>IP:</th>

  <th>Status:</th>

  </tr>

eof


  for ((i=0; i<${#RIPS[*]}; i++));do                                   #對節點作循環判斷,並提供對應的html代碼

    auto_html $i ${RIPS[$i]}

  done


  cat >> $file_location<<eof

  </table>

eof


  sleep 2

  > $file_location                                                           #清空文件內容

  done

}

main $*


3)腳本執行:

[root@localhost scripts]# sh monitor.sh 

瀏覽器訪問http://192.168.1.22/test.html(前提是部署好了http服務,test.html放在對應的html目錄下,給予權限便可。)

出現以下頁面表示腳本運行正常:

image.png


  宕掉一臺192.168.1.33節點,看下狀況

[root@localhost scripts]# ifconfig  | sed -n 2p | awk '{print $2}'                    

addr:192.168.1.33

[root@localhost scripts]# /etc/init.d/nginx stop

Stopping nginx:    [  OK  ]

image.png


   用Tengine(Nginx的分支)模塊nginx_upstream_check_module提供主動式後端服務器節點健康檢查。可參考http://www.javashuo.com/article/p-kcvfudyx-da.html

相關文章
相關標籤/搜索