做過運維的小伙伴都知道,當用戶瀏覽器上出現(xiàn)白屏、應(yīng)用端API得到500錯誤、取到數(shù)據(jù)為空是非常崩潰的一件事情。500錯誤是服務(wù)器端非常常見的一個錯誤,有可能是開發(fā)時導(dǎo)致的語法錯誤,也有可能是文件引用導(dǎo)致的錯誤。當用戶反饋了500錯誤之后,而我們運維童鞋們面對一個集群的后端服務(wù)器,如果沒有方便的工具管理和同步,下手查找問題,是管理HTTP Error是一個即耗時又費力的痛苦過程。
在最開始的時候,用戶訪問出錯,系統(tǒng)各種報錯,網(wǎng)絡(luò)訪問延遲……總之各種各樣的問題。
每次遇到這種情況,我們運維同學(xué)們就分別登錄幾臺Web服務(wù)器,去查找可能記錄錯誤日志的地方,找出錯誤的真兇,以讓開發(fā)童鞋們來改進。
如下圖這個錯誤,就是由于在引用微信JS-SDK 開發(fā)時,由于每個頁面都要做JS-SDK權(quán)限授權(quán),但是在其中一個頁面忘記了導(dǎo)入微信的JS-SDK 包,導(dǎo)致了大量的 500 錯誤。這種找錯誤的過程,最開始幾臺機器還勉強,幾分鐘能找到,到了后來變成了幾十臺,已經(jīng)變成了一項誰也不想干的工作了!
圖一:從日志中尋找出現(xiàn) 500 錯誤的真兇
后來公司的負載均衡服務(wù)器做了會話保持,我們就只好聯(lián)系用戶,讓部分懂點技術(shù)的用戶,幫我們用這類開發(fā)者工具,抓一下包,看看,從的字段就能知道,這個用戶的訪問,可能來自自于哪臺機器,這樣定位起來,方便了很多,但是時間也往往要10分鐘以上,因為還要跟用戶電話,大部分用戶并不懂得如何操作。如下圖二,從正常請求,可以得到此時訪問的,就可以知道出錯的頁面和日志,也會在這臺機器上。
圖二:通過確定服務(wù)器
那有沒有什么更快的辦法呢?有倒時有,比如自己開發(fā)一套系統(tǒng),從各臺服務(wù)器收集日志,在有一個集中的地方,能查看。但是我們運維童鞋開發(fā)能力還不太能跟得上,公司的開發(fā)童鞋老板也恨不得拉來7x16小時開發(fā)產(chǎn)品。
那到底還有木有什么更好的辦法啊?
在圈子里有人推薦!其實最開始我是拒絕的,因為一般來講,裝這種在生產(chǎn)環(huán)境上,比較麻煩,并且可能會影響性能,還都需要埋代碼。真到有一天,微博上又有人在討論,我有點心動了。
于是乎,對于懂點開發(fā)、喜歡鼓搗新玩意的非典型運維工程師,三下五除二從注冊了賬號,下載了安裝包,安裝到了我們的測試服務(wù)器上。好家伙,我還啥也沒有干,把程序剛剛跑起來,在的管理控制臺上就看到了數(shù)據(jù),真是福音啊,不要埋代碼,真的不要埋代碼!!!
DUANG—簡直就是有特技!經(jīng)過幾天的實驗,并向領(lǐng)導(dǎo)申請在生產(chǎn)環(huán)境上安裝,領(lǐng)導(dǎo)看到了是優(yōu)才網(wǎng)伍老師推薦,正好是認識的熟人,所以特意微信溝通了一下,知道是靠譜的。就讓我讓裝到生產(chǎn)環(huán)境上去了。
在實際的使用過程中,確實也幫了我們的大忙。使用了幾個月了,覺得真的是減輕了我們運維童鞋工作,同時也非常快速地定位問題,開發(fā)童鞋們也很感激。下面就舉一個真實環(huán)境中的栗子。
下面就是我從線上摘出來的典型的例子。線上出了問題,一分鐘后,在的管理后臺就看到了錯誤消息。如圖三
還以上邊的沒有找到為例,線上出問題時,使用瀏覽器抓包,得到的是如下結(jié)果,因為線上是關(guān)閉了日志輸出的,只看到白白的一片,抓包則是500錯誤。
現(xiàn)在不用一臺臺上去檢測了,一分鐘后,后臺就收到了錯誤信息報告。點擊去看如下:
錯誤信息報告表明,這是一個非常嚴重的PHP錯誤500內(nèi)部服務(wù)器錯誤,就是在做微信開發(fā)時,要引用微信官方的SDK,開發(fā)童鞋給漏掉了,導(dǎo)致出現(xiàn)了找不到類“”這樣的錯誤500內(nèi)部服務(wù)器錯誤,Nginx接到這樣的錯誤,會向客戶端返回500。
我直接把錯誤信息報告發(fā)給開發(fā)童鞋,開發(fā)童鞋心領(lǐng)神會,再也不會跟我糾纏說誰誰的問題了!
開發(fā)童鞋還告訴了我修復(fù)的辦法:引入文件就好了,特意找到了這段代碼參考下圖。
有了就是這么爽,我也不用再用終端爬到每臺機器上去確認,更不用擔心隨著公司的業(yè)務(wù)發(fā)展,加到多少臺Web和API服務(wù)器。
我需要擁有的,就是一個的管理后臺!
每次公司內(nèi)部的技術(shù)分享,我都會從拉出一些案例,也會提供給開發(fā)主管一些素材,總結(jié)程序員可能常犯的錯誤,為此,受到了老板的獎勵!至于啥獎勵,大家懂的。平時參加一些業(yè)內(nèi)的技術(shù)交流,也會向他們推薦,已經(jīng)成為了的忠粉,他們團隊里做支持的孟智童鞋還和我成為了好朋友!
的服務(wù)是很有特色的,可能這種服務(wù)還在早期,國內(nèi)好像還沒有類似的應(yīng)用,所以在后臺和功能上,也有一些不足之處,趁這個機會也吐個槽,希望能受到開發(fā)團隊的關(guān)注 ,并改進。
第一、由于我經(jīng)常用,所以賬號長期處于登錄狀態(tài),但是每次敲入都進到了首頁,搞技術(shù)的都懂啊,你們的產(chǎn)品經(jīng)理莫非是臨時工?
第二、最需要改進的,就是看錯誤日志的面板,搜索、錯誤分級都還沒有做好。幸好我用熟悉了,否則新用戶會很暈的,欲知詳情,請看下圖。
第三、如果做了錯誤分級,我最想要的就是報警了,就像,每一次域名出故障,連不上,都短信、微信、郵件就來了,聽說你們拿了7000萬啊,在出嚴重錯誤的時候,能不能給我來個短信啊,我就不用每天掛著這個后臺了,有木有!等到這些有了,即時將來有可能收費,我也會積極向領(lǐng)導(dǎo)爭取滴!