作為技術人員,有沒有遇到下班路上收到老板電話,系統故障,然后地鐵上掏出電腦,修bug的場景。自己負責的業務線上出現問題,負責人心里是很慌的,在這種心理狀態下做事很容易二次犯錯,造成更大的問題。
但是線上業務在高速迭代的過程中,出現問題,又總是難免的。這個時候,對業務系統建立完備的監控體系是十分有必要的。
監控的目標是及時發現系統問題,并盡可能快地做出相應的動作,讓系統處于一種健康狀態。
監控,顧名思義就是監視和控制
監視:通過采集業務日志,系統運行指標等,觀察系統運行狀況,實現快速定位問題的目的。
控制:采用一定的技術手段,解決問題,使系統恢復正常狀態。
定位問題是一件考驗一個技術人員技術能力和對系統熟悉程度的事情,需要業務系統輸出的日志等信息作為線索,順藤摸瓜,細心排查,才能最終定位到問題。
解決問題是一個對技術人員工作經驗要求比較高的事情,把問題解決是最基本的要求,同時還要考慮解決問題的效率,對業務的影響程度等。
解決問題的方式有很多,可能大部分技術人員都十分崇拜那種,直接在線上改bug,然后發布,告警消失,系統趨于穩定。但是這種解決問題方式對技術人員的技術能力、心理素質都有較高的要求,并不是所有技術人員都能做到的,這種解決問題的方案,很難普適。
這里小編介紹一種簡單粗暴的解決問題的方案,對于大部分技術人來說操作起來都比較簡單。
在討論這種方案之前,我們先來討論一下問題產生原因,問題的產生絕大部分的原因來自于“變化”,這里的變化怎么理解呢?
這里的變化分為兩種:
1.業務系統功能迭代,發版。有沒有同感,絕大部分情況下,產生線上問題,都是發版導致的。
2.業務流量變化:業務運營活動產生突發流量。
既然是變化導致的問題,那么消滅變化,讓系統回歸到變化前的狀態,是不是就解決了問題了,如果沒有解決,說明變化沒有消滅徹底。
怎么消滅變化呢?
對于第一種:通常的做法是版本回退,業務功能回退,sql腳本回退等。
對于第二種:系統具有限流的功能,或者快速擴縮容的能力。
總結來說就是:流控和版本回退,簡單,粗暴。但對于任何線上問題,都可以采用這種方案,這種方案可能沒有直接在線上解決問題那么“酷”,但是,對技術人員的專業能力依賴不高,是一個標準化的流程,甚至可以做到自動化,二次出錯概率很小。
而且作為一個技術人員,一定要轉變一下思維方式:不解決bug,也可以解問題,并不一定要硬剛bug,要考慮解決方案對業務的影響。技術的價值是通過業務體現的,尤其是對于做業務的同學來說,技術nb,并不一定能給你帶來成長,你支撐的業務nb,才能體現你的價值。