技本功丨甲方大人來了之運維資料分析平臺搭建實戰
袋鼠雲日誌團隊時常遇到各種各樣的甲方大人,畢竟我們是一個非常優秀的企業服務公司(自信滿滿),當然面對甲方大人的時候要做到處變不驚,臨危不亂,鎮定自若的接受需求……
甲方大人的常用臺詞一定要記住:我們很忙,有好幾套監控系統,能不能再不砍掉監控系統的情況下,幫助我們搞定日運維需求呢?這樣的需求每天通過專案經理→產品經理→研發經理→浣熊(我)。
But,這個需求有點麻煩呀~
我捋過我日漸稀疏的發,只能加油幹啦!
先說下甲方大人的需求和痛點,甲方大人說平日的系統運維工作主要圍繞應用、主機、資料庫和業務四個方面。
(1)應用釋出平臺是IBM的WebSphereApplicationServer(簡稱WAS),應用的效能監控基於WAS自帶監控模組
(2)主機監控基於IBMTivoliMonitoringSystem,業務監控則通過分析應用日誌的方式實現
(3)資料庫監控依賴一個古老的oracle效能監控工具
(4)應用日誌需要登陸到AIX業務機器上檢視
“每當出現一個問題,先登陸was看下業務程序效能趨勢,再登陸Tivoli檢視主機效能趨勢,然後登陸資料庫監控檢視資料庫效能趨勢,再然後登陸AIX主機檢視日誌。一套下來肚子就餓了,到食堂發現好吃的飯菜已經被別人搶光了,希望你們能幫我們改善改善伙食“。嗯,聽上去影響蠻大的,不過他們怎麼知道我燒菜的手藝的,上週末做的清蒸鱸魚味道還不錯...
四個字,趕緊幹活。在瞭解了甲方大人的需求和痛點後,經過一番苦思冥想,設計了下面的看上去有點複雜的架構圖。大道至簡,借鑑老子的一段話附和一下這張圖,“人法地、地法天、天法道、道法自然”,老子用了十三個字,將天、地、人乃至整個宇宙的生命規律精闢涵括、闡述出來。
菜譜準備好了,小蔥拌豆腐,開始下鍋。
資料採集上,針對WAS、Tivoli、Oracle和AIX應用主機的採集需求,需要coding了(沒有什麼需求是一坨程式碼解決不了的,如果有那就兩坨),前方高能,請做好筆記:
(1)開發一個WAS程序效能採集器,參考https://github.com/alexivkin/WebSphere-Performance-Monitor,萬能的python,哦no,這個是Jython,看起來跟python一樣嘛,無非就是python裡面用java,java裡面跑python。由於是三年前的版本,加上沒有IBM WAS的測試環境,花掉一個上午時間腦補除錯,什麼是腦補除錯法,答按行過目程式碼、眼睛輸入,大腦跑跑(非專業人士請勿模仿);
(2)開發一個Tivoli資料收集器,又花掉一個晚上,Tivoli支援Soap方式拉取新能資料,我不會告訴你可以用一個CURL拉取所有主機效能所有資料的,想知道的留言處扣666;
(3)開發一個Oracle資料庫效能採集器,還好elastic 大佬開源了beats(https://github.com/elastic/beats),坑爹的是竟然不支援oracle,莫非oracle大佬的開發人員都休眠了麼;花了兩個晚上搗鼓搗鼓,支援個tps、qps、物理讀、邏輯度、吞吐量還是可以的,小算一下支援200多個指標吧,oracle採集beat依賴oracle client不是一般的麻煩;
https://www.oracle.com/technetwork/topics/intel-macsoft-096467.html
(4)開發一個AIX日誌檔案採集器,袋鼠雲有技術大牛開發了一個,拿過來直接整合;
https://github.com/DTStack/jfilebeat
資料接收和解析元件,袋鼠雲自研了java版本的logstash,參考:
https://github.com/DTStack/jlogstash
日誌接收和解析效能是ruby版本效能5倍以上,關鍵是配置簡單,分鐘內上手
資料儲存方面,最近一週的日誌資料全部投遞到elasticsearch裡,以防哪天甲方大人心血來潮想搜個日誌啥的;結構化的應用程序資料、主機效能資料、資料庫效能資料和業務日誌資料投遞到clickhouse裡,通過clickhouse強大的聚合計算能力(多表資料關聯,sum/avg等聚合計算),計算出同一時間線上的業務和程序、主機以及資料庫效能的關聯趨勢圖。
一句話總結下ck吧,在sql裡計算我只服ck!
連結:
https://clickhouse-docs.readthedocs.io/en/latest/functions/
原始碼請見:
https://github.com/yandex/ClickHouse
堅持看到這裡就是真愛了,貼上一張系統架構圖,圖中左方是資料採集層,easymanager是公司自研的自動部署神器(不用想了,沒有開源),右邊是資料展示端,把應用、主機、資料庫、日誌資料統一展示在一張大屏上,廢話不說了,上菜!