2018年6月27日 星期三

系統的維護與監控

好久沒發文就來分享一下最近在弄得東西覺得比較有趣了

最近在幫公司維護系統時最主要發生的問題就是


  1. 老闆很煩,整天問奇怪的數據分析,例如我們這個月有多少使用者用了這個功能,我們最近有多少人有High Memory, High CPU, 大概是多少,平均是多少
  2. 系統出錯只好拿log看看發生什麼事情
  3. 系統出錯了不知道
對工程師來說,後面兩點可能才是我們在意的

但對上層來說,第一點才是他們最愛問的

假如是平常寫的數據蒐集程式碼很難完美應付老闆整天變來變去的奇怪問題

每多一個新的數據,就必須要改code, compile, deploy 也是蠻麻煩的

再來就是系統也是出錯的時候才可能會送出通知,不清楚是什麼時候出錯的

要知道的話就必須要去拿Log來看看,又花費了寶貴時間在分析訊息

這時候有一個最近比較紅的東西就可以幫助了

所謂的 Time Series Database,專們存取時間性資料的資料庫

有了這個候我們就可以把各種單純的系統資訊都丟進去

例如:
CPU Usage, Memory, User Event, Request Hits
或是其他功能性相關的數據

資料庫就會幫你蒐集然後有提供很好的視覺界面和Query可以做出各種用途的Dashboard











像是上圖那樣,且可以為不同職位的人做出不同的圖出來



這種系統監控的Project可能平常在大公司工作的除非剛好碰到

要不然應該也沒什麼機會需要用到

而系統太小的話可能也還不用特別做一套監控框架出來

算是最近做的比較有趣一點的東西了吧


其他有幫助的還有如何有效率的運用系統Log

原始方法是要叫個Developer來看

好一點的可能有特別的爬檔程式來抓關鍵字

現在流行的是一種Machine Learning + Big Data的 Stack

ElasticSearch

我最近也要開始嘗試用用看,其實還蠻有趣的

他可以直接把原始檔案直接送到他的資料庫裏面

然後就可以用它做快速的搜尋和建立Index

然後也可以基於這些搜尋結果和Index也做出一個好看的Dashboard

算是整天看Log 苦不堪言的工程師小小的福音吧!