我有一個自託管 vps 伺服器,我希望始終在我的家用電腦的系統托盤中查看其狀態(如果可以訪問或無法訪問)。為此,我編寫了一個簡單的 bash 腳本,如下所示:
#! /bin/bash
while true
do
if ping -c 1 -W 1 vps > /dev/null
then
# Draw green icon in the tray
else
# Draw red icon in the tray
fi
sleep 1
done
就是這樣。這種連續的請求會對頻寬產生任何有意義的影響嗎?有更好的方法來監控連線嗎?
答案1
評論交流讓我更多地思考這個問題,並最終產生了一系列需要實際答案的想法。
答案是否定的,如果您的目標是了解 VPS 是啟動還是關閉,那麼 ping 並不是監控 VPS 連線的好方法。
此問題中的ping(或ICMP 請求)會從您的電腦發送一個小資料包,發送到您的路由器、互聯網、資料中心、他們的路由器,可能還會發送到伺服器,最後發送到該伺服器上的虛擬實例。
通常,資料中心的網路中會有智慧型交換器來偵測 ICMP 請求,這些交換器會回應並確認您的 ICMP 請求。 Ping 不會告訴您 VPS 是否正在運作。
此外,如果您從電腦和網路中的某個位置執行 ping 操作,則會出現問題:例如。糟糕的互聯網連接,有問題的調製解調器/路由器,將無法發送 ICMP 請求,給出錯誤的請求響應,考慮到您 ping 您的 VPS 可能會觸發 VPS 已關閉,但實際上它是您自己的互聯網無法正常工作。
與資料中心網路和 VPS 伺服器相比,家庭網路經常無法正常運作。
VPS 當然可能會當機,但使用 ICMP 套件並不能告訴您是否是這種情況。
在許多情況下,當您租用 VPS 時,提供者也會提供您可以尋找的服務狀態頁面。該頁面通常由監控工具自動生成,並且更加準確。
此外,還可以在 VPS 上安裝監控工具,定期檢查遠端伺服器,如果檢查失敗,遠端伺服器會說:“嘿,我錯過了來自伺服器 X 的檢查”,如果發生這種情況,例如…連續5次,會傳送電子郵件給您。
最後一種方法是您最好的選擇。如果你擅長編程,你可以用 php 編程一些簡單的東西,儘管你在其他地方需要網頁寄存服務。 VPS 將在瀏覽器中開啟一個 URL,該頁面每 10 秒刷新一次,並且該頁面也會將上次刷新寫入日誌中。同一網頁伺服器上的 cron 作業會檢查上次刷新情況,如果發生時間太久,則會向您發送電子郵件。
當然,如果 VPS 重新啟動,您將必須再次開啟瀏覽器,但有一些方法可以自動執行此操作。
還有專門用於監控伺服器的程序,但我想不出有什麼便宜的。