
袋鼠雲日志團隊時常遇到各種各樣的甲方大人,畢竟我們是一個非常優秀的企業服務公司(自信滿滿),當然面對甲方大人的時候要做到處變不驚,臨危不亂,鎮定自若的接受需求……
甲方大人的常用台詞一定要記住:我們很忙,有好幾套監控系統,能不能再不砍掉監控系統的情況下,幫助我們搞定日運維需求呢?這樣的需求每天通過項目經理→産品經理→研發經理→浣熊(我)。
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是公司自研的自動部署神器(不用想了,沒有開源),右邊是資料展示端,把應用、主機、資料庫、日志資料統一展示在一張大屏上,廢話不說了,上菜!