今天寫這篇水文,是源於昨天晚上睡覺前的一個郵件告警,從事網際網路IT技術的請問有幾人能睡好覺?在我所管轄的一臺非重要伺服器上,跑了一個PHP應用,好像在我部署好之後,就忘記它的存在了。針對這樣的伺服器,監控自然也是不能落下的。因此,在遺忘它之前,安排個小助手來幫我監視它。
為了完成監控任務,運維大佬們肯定會強力推薦Zabbix,確實它也是實至名歸,值得擁有。但我真的只是要監控下PHP是否還存活,這個任務看來一個腳本就足以解決了,何必去動手部署一個完整的監控系統呢?有時候,懶惰也是一種優秀。
正是在這種懶惰的情懷下,我寫了一個簡短的腳本來完成這個任務,主要使用Linux curl命令來完成檢測PHP程序是否正常。關於檢測方法,有些大佬會通過探測php-fpm進程是否存在來標記,有些會通過檢測埠來完成,另外一種就是我這種了。通過檢測PHP程序是否能完成正常的功能性輸出來達到。
功能性輸出你可以認為是通過程序輸出一個特定字符串或者http狀態碼。而我當時的做法也沒有想太多,就是通過檢測http的狀態碼來完成。如果狀態碼不等於200,就認為是異常。通過發送郵件的方式,來通知維護人員。而郵件客戶端APP,在手機側有通知功能,及時性還是可以接受的。腳本功能雖簡單,但整個監控功能還是不能有半點缺失的。
至於伺服器端發郵件,一般運維人員是通過安裝mailx來解決。這裡要特別注意,現在SMTP伺服器都要使用SSL協議來連接。至於細節問題,如果你在配置時,遇到收不到郵件的情況,歡迎打擾。我這個監控小腳本,使用了Python來發送郵件,原理都是一樣的,方式不一樣而已。
至於發郵件的源碼,我只保留了它的pyc副本,源文件已經找不到,雖然反編譯一個py文件是非常簡單而有效的。如果真有的朋友需要,請評論回復。
後記:最後在crontab中安裝(*/1 * * * * /root/check_php.sh > /dev/null 2>&1 &)。