檢測Nginx服務是否正常執行(詳解)

2021-08-16 02:34:13 字數 3858 閱讀 5446

需求:檢測nginx服務是否正常的執行,如果不在執行那麼就啟動nginx伺服器,那麼如果啟動nginx失敗,那麼通過郵件報警的方式通知我們;

一、分析

1:監測nginx服務是否正在執行如下:

[root@yankerp ~]# netstat -anput | grep nginx

tcp 0 0 0.0.0.0:80 0.0.0.0:* listen 27228/nginx: master

使用以上這條命令能夠很清楚的看到nginx正在執行2:啟動nginx伺服器,我們可以通過它的絕對路徑去啟動nginx 我的nginx安裝路徑為:/usr/local/nginx其中/sbin/下就是nginx的啟動項;/usr/local/nginx/sbin/nginx3:如果啟動失敗,那麼就通過郵件報警的方式通知怎麼樣可以判斷nginx啟動失敗,我們可以使用特殊的狀態變數$? 如果/usr/local/nginx/sbin/nginx 這條命令執行之後如果啟動失敗那麼它$?就會輸出非0的數值表示失敗,那麼至於郵件報警的方式這裡我採用了sendemail

二、編寫指令碼

開頭注釋:

#!/bin/bash一句話代表著此指令碼中的內容是通過bash解析器來執行的

#!/bin/bash

#date: 17:17 2018-03-04

#author: yankai

#email: [email protected]

#function: nginx monitoring

#version: 3.1

2)定義變數

. /etc/init.d/functions   #載入函式庫,後面會用到

red_color='\e[1;31m' #定義顏色(紅色變數)輸出更美觀

res='\e[0m' #同上

ngx=`netstat -anput | grep nginx | wc -l` #定義檢測nginx是否執行變數 通過wc命令獲取行號

da=`date +%y-%m-%d` #標準的時間輸出後面會用到

3)定義函式接下來就開始寫第乙個函式了,首先我們寫乙個獲取本機的url看看是否能夠成功http://localhost

function nginx_url()
那麼我們在這裡想乙個問題,那麼如果wget獲取不到本地的url 意味著nginx可能會宕機,那麼我們繼續寫檢測nginx是否執行的函式

function main()

main #最後結束main函式

function nginx_server() nginx is running!\n$" #就輸出nginx is running 資訊;

else #否則啟動nginx

/usr/local/nginx/sbin/nginx

fi /usr/local/bin/sendemail -f [email protected] -t [email protected] -s smtp.163.com -u "nginx alarm" -o message-content-type=html -o message-charset-utf8 -xu yankerpcs -xp 123456yk -m "nginx has serious downtime" &>/dev/nullfi}

最後我們定義了兩個函式同時檢測nginx的狀態情況,最後我們需要定義總函式來呼叫以上函式進行最後的測試

function main()

main #最後結束main函式。

三、結尾:經過了上面的幾種操作,我們已經知道了nginx的各種判斷來確定nginx的執行狀況,同時我們也設定了郵件報警的機制來傳送報警訊息給運維人員。那麼最後的指令碼如下:

#!/bin/bash

#date: 17:17 2018-03-04

#author: yankai

#email: [email protected]

#function: nginx monitoring

#version: 3.1

. /etc/init.d/functions

red_color='\e[1;31m'

res='\e[0m'

ngx=`netstat -anput | grep nginx | wc -l`

da=`date +%y-%m-%d`

function nginx_url()

function nginx_server() nginx is running!\n$"

else

/usr/local/nginx/sbin/nginx

fi if [ "$?" -ne 0 ];then

/usr/local/bin/sendemail -f [email protected] -t [email protected] -s smtp.163.com -u "nginx alarm" -o message-content-type=html -o message-charset-utf8 -xu yankerpcs -xp 123456yk -m "nginx has serious downtime" &>/dev/null

fi}function main()

main

執行測試如下:

當我們nginx正在執行的時候我們發現它輸出了nginx is running 

說明我們定義函式生效了。

2:那我們把nginx關閉在執行指令碼測試如下:

3:模仿

/usr/local/nginx/sbin/nginx

啟動出錯 測試郵件是否傳送.....

郵件查收:

最後我們要把此指令碼新增到計畫任務執行,在這裡不在做演示! 上面的nginx啟動報錯大家可以自己想辦法讓它啟動失敗,這裡不在做演示。

希望對您有所幫助,再見~

檢測lamp各項服務是否正常開啟和執行的命令

看到 active active running 就說明執行正常。否則開啟apache服務 systemctl enable httpd systemctl start httpd 開啟服務,並設定開機啟動 ps ef grep php 看到root 4411 3967 0 22 30 pts 1 ...

監測服務是否正常執行指令碼

10 cd home work pay data load bash check running status.sh check running status.sh 用於檢查pay data load是否正常執行的指令碼 current path cd dirname 0 pwd 檢查當前執行時間的...

mysql和nginx服務是否正常監控指令碼

一 監控web伺服器和 mysql 方法 1.監控埠 nginx也相同 1.1本地監控 netstat tunlp grep 3306 wc l ss tunlp grep 3306 wc l 1.2遠端監控 nmap 10.117.33.98 p 3306 grep open wc l echo ...