對于持久化專業運營網站來說,對網站的監控必不可少,以我們自己的理解,網站監控需要做的兩件基本事情:
- 監控網站健康狀态,當網站出現故障的時候,及時發現并報警;
- 監控網站性能表現,獲取網站訪問速度,利于用數據來分析優化。
說到網站監控,以我們的了解,可以采取的辦法有以下幾種:
- 使用現成的網上監控服務,例如site24x7.com提供收費和免費的專業服務;
- 自己安裝現成的監控軟件,例如radar website monitor;
- 開發一套适合自己需要的監控軟件,這隻在需求特殊以及有能力開發的情況下才進行。
前面1、2兩種辦法我們都曾經采取過,但随着子網站數量的不斷增長,用已有的現場服務或者軟件就顯得不足了,需要監控的子網站數量達到數百個之多,各個子網站還希望能監控不同的頁面(例如首頁、列表頁、内頁以及桌面版、手機版、多語言版等),主要問題:
- 如果采用現成的網上監控服務,沒有地方可以提供這麼多免費監控的,而收費都是按照站點數量計算的,顯然花費太高;
- 采用現成軟件是一個辦法,但例如radar website monitor這樣的軟件也存在不足,例如啟動程序的時候幾百個站點同時開啟訪問導緻很多失敗、設置監控周期過長則不能及時發現問題、設置監控周期過短則又對網站服務器造成負載過高。
所以近期我們一直在籌劃搞一套自己的監控程序,雖然複雜、麻煩一些,但利于長期使用,突出特點是符合我們自己的需求、能智能化設定系列網站的監控,幾點設想:
- 基本功能:能監控網站的狀态、及時發現故障并報警、能記錄訪問的速度、便于分析統計找規律。
- 智能特點:多層次劃分網站結構,制定模仿人的檢查策略,既能及時發現問題又不造成負載過高。
所謂多層次劃分網站結構,我們的初步劃分想法是:
- 服務器群:由多台物理服務器組成服務器群,例如由5台國内服務器組成國内服務器群、由10台國外服務器組成國外服務器群;
- 服務器:一台物理服務器,上面可以放置N個網站和/或N個網站系列;
- 網站系列:一般是用子域名或者子目錄的方式設置類似的一批網站,例如sicxx.bizdirlib.com或者industry.bizdirlib.com/sicxx這樣的網站系列;
- 網站:單獨的一個網站,一般采用單獨的子域名或者子目錄,可以有桌面版、手機版和多語言版,都算作一個網站;
- 網頁:一個網站内的不同功能或者版本的頁面,例如首頁、列表頁、内容頁,或桌面版、手機版及多語言版的頁面。
其中“網站”居于監控的核心位置,向下可以包含各種網頁,向上可以歸類到網站系列、服務器去,而服務器群的作用主要是根據網絡線路劃分,以便更精确記錄訪問速度。
對于一個網頁的監控,已經另外畫了流程圖,比較規範、簡單,主要是監控、記錄這幾個方面:
- 網頁返回代碼,是否為正常的200,還是其它的報錯;
- 網頁中是否包含應該包含的文字或者代碼;
- 網頁中是否包含不應該包含的文字或者代碼;
- 網頁的訪問時間。
而對于所謂智能特點有以下設想:
- 一個網站可以自由設置需要監控的N個典型網頁,輪流監控,例如設置這樣幾個需要監控的頁面:英文版桌面版首頁、中文版桌面版列表頁、英文版手機版分類頁、中文版手機版内容頁、robots.txt頁面、sitemap.xml頁面等,有不同的網址和包含、不包含代碼設置,按照5分鐘一次的循環來輪流監控上面幾種頁面,每種頁面之間的訪問可以間隔30秒,如果某種頁面出現問題則間隔2分鐘再訪問同一個頁面,如果連續出現第3次故障則報警;
- 網站系列中的每個網站不需要都像上面這樣一個網站來監控,可以輪流進行,例如某個系列網站有51個子網站,則51個網站輪流按照5分鐘一次的循環來進行監控,這樣檢查一輪這個系列網站所用的時間為51*5分鐘=255分鐘(4小時15分鐘),或者對系列網站每個站點都進行10分鐘一次的首頁檢查,然後加上前面說的輪流重點監控;
- 智能判斷:如果發現某種頁面出現問題,而該網站的其它頁面都正常,則可能是網站的某種功能或者版本出現故障;如果某個網站出現故障,而該系列的其它網站都正常,則可能是某個網站的單獨設置出現問題;如果某台服務器上的多個網站系列都出現同樣問題,則可能是服務器的設置或者狀态出現問題。類似這樣的判斷還有很多,也就是模拟人去檢查的過程;
- 進一步的智能檢查、處理:模拟人工檢查服務器的狀态、對常見問題進行幹預處理(例如與Linux下的一些Shell腳本結合,重啟Apache服務、MySQL服務等);
- 數據統計、性能分析,除了故障報錯以外,能對訪問速度進行記錄,超過設定的阈值(例如訪問時長超過20秒或者24小時内訪問超過10秒的比例達到15%以上,等等)也進行提醒。
這套監控還有些複雜,如果要做得很智能、很完善的話,需要比較長的時間,可以先做出基本的功能,替代現在用的Radar Website Monitor,逐步來進行完善。
準備使用PHP+MySQL來做,一些設置、狀态可以用Web界面,在國内、國外服務器上部署兩套。
這是初步的需求先記下,等有進展再繼續記錄。
评论3
dnspod的監控功能也不錯,可以發短信通知,或者微信通知
dnspod的監控功能也不錯,可以發短信通知,或者微信通知dnspod的監控我也在用,但還不夠
謝謝這位朋友的留言,dnspod的監控功能我一直在用,還好,但我們現在網站站點多了,dnspod有監控站點數量8個的限制,不過也可以購買,我以後再去看看,謝謝。
2014年12月重新開發
2014年12月重新開發,測試評論