原創(chuàng)不容易,請(qǐng)多多支持。對(duì)Java技術(shù)感興趣的童鞋請(qǐng)關(guān)注我。后續(xù)會(huì)將陸續(xù)進(jìn)行各種Java技術(shù)文章的發(fā)布。
概述
最近公司項(xiàng)目中,java后端應(yīng)用引入了開源的cat監(jiān)控系統(tǒng)。使用下來(lái)感覺(jué)不錯(cuò),整理匯總了cat的常用功能和項(xiàng)目集成。提供給有監(jiān)控需求的小伙伴,希望能有所幫助。
Cat架構(gòu)介紹
Cat是基于 Java 開發(fā)的實(shí)時(shí)應(yīng)用監(jiān)控平臺(tái),為美團(tuán)點(diǎn)評(píng)提供了全面的實(shí)時(shí)監(jiān)控告警服務(wù)。
作為服務(wù)端項(xiàng)目基礎(chǔ)組件,提供了 Java, C/C++, Node.js, Python, Go 等多語(yǔ)言客戶端,已經(jīng)在美團(tuán)點(diǎn)評(píng)的基礎(chǔ)架構(gòu)中間件框架(MVC框架,RPC框架,數(shù)據(jù)庫(kù)框架,緩存框架等,消息隊(duì)列,配置系統(tǒng)等)深度集成,為美團(tuán)點(diǎn)評(píng)各業(yè)務(wù)線提供系統(tǒng)豐富的性能指標(biāo)、健康狀況、實(shí)時(shí)告警等。
很大的優(yōu)勢(shì)是它是一個(gè)實(shí)時(shí)系統(tǒng),CAT 大部分系統(tǒng)是分鐘級(jí)統(tǒng)計(jì),但是從數(shù)據(jù)生成到服務(wù)端處理結(jié)束是秒級(jí)別,秒級(jí)定義是48分鐘40秒,基本上看到48分鐘38秒數(shù)據(jù),整體報(bào)表的統(tǒng)計(jì)粒度是分鐘級(jí);第二個(gè)優(yōu)勢(shì),監(jiān)控?cái)?shù)據(jù)是全量統(tǒng)計(jì),客戶端預(yù)計(jì)算;鏈路數(shù)據(jù)是采樣計(jì)算。
以上是cat官網(wǎng)介紹,詳情請(qǐng)?jiān)L問(wèn)
cat是侵入式的監(jiān)控系統(tǒng),需要項(xiàng)目應(yīng)用集成client jar文件。在業(yè)務(wù)代碼中調(diào)用api代碼埋點(diǎn)監(jiān)控?cái)?shù)據(jù)。這種方式,優(yōu)勢(shì)是靈活、可定制業(yè)務(wù)監(jiān)控,劣勢(shì)是代碼侵入性。對(duì)較統(tǒng)一的系統(tǒng)技術(shù)棧公司,總的來(lái)說(shuō)還是利大于弊的。
客戶端設(shè)計(jì)
埋點(diǎn)的clinet會(huì)通過(guò)業(yè)務(wù)埋點(diǎn),在當(dāng)前Http Thread線程中構(gòu)造埋點(diǎn)類型消息,然后放入線程上下文,當(dāng)整個(gè)埋點(diǎn)的消息樹構(gòu)造完成,把消息扔到內(nèi)存隊(duì)列,通過(guò)多線程異步把消息,通過(guò)socket 發(fā)送到cat server端(消息傳輸使用了netty框架)。client端為不影響集成的業(yè)務(wù)系統(tǒng)性能,經(jīng)過(guò)大量測(cè)試,做了很多優(yōu)化。對(duì)集成業(yè)務(wù)系統(tǒng)的機(jī)器資源占用較小,官方認(rèn)為完全可以忽略這部分client的性能損耗。
服務(wù)端設(shè)計(jì)
服務(wù)端通過(guò)netty監(jiān)聽到消息后,通過(guò)多線程把消息分發(fā)到不同的消息分析器中處理,每個(gè)消息分析器也都有自己的消息內(nèi)存隊(duì)列,便于高效快速的異步消費(fèi)處理。處理完成的數(shù)據(jù)有兩類。一類統(tǒng)計(jì)報(bào)表數(shù)據(jù),直接放到mysql數(shù)據(jù)庫(kù)中。一類監(jiān)控日志數(shù)據(jù),放到本地磁盤或者h(yuǎn)dfs中。
監(jiān)控模型
- Transaction 適合記錄跨越系統(tǒng)邊界的程序訪問(wèn)行為,比如遠(yuǎn)程調(diào)用,數(shù)據(jù)庫(kù)調(diào)用,也適合執(zhí)行時(shí)間較長(zhǎng)的業(yè)務(wù)邏輯監(jiān)控,Transaction用來(lái)記錄一段代碼的執(zhí)行時(shí)間和次數(shù)
- Event 用來(lái)記錄一件事發(fā)生的次數(shù),比如記錄系統(tǒng)異常,它和transaction相比缺少了時(shí)間的統(tǒng)計(jì),開銷比transaction要小
- Heartbeat 表示程序內(nèi)定期產(chǎn)生的統(tǒng)計(jì)信息, 如CPU利用率, 內(nèi)存利用率, 連接池狀態(tài), 系統(tǒng)負(fù)載等
- Metric 用于記錄業(yè)務(wù)指標(biāo)、指標(biāo)可能包含對(duì)一個(gè)指標(biāo)記錄次數(shù)、記錄平均值、記錄總和,業(yè)務(wù)指標(biāo)最低統(tǒng)計(jì)粒度為1分鐘
介紹完架構(gòu)設(shè)計(jì),來(lái)看看cat監(jiān)控管理系統(tǒng)的使用,大家先有一個(gè)直觀的認(rèn)識(shí)。
cat server端基于tomcat部署,部署完成通過(guò)以下地址訪問(wèn)。
其中ip和端口按具體場(chǎng)景修改。
選擇監(jiān)控應(yīng)用
選擇不同應(yīng)用,切換對(duì)應(yīng)應(yīng)用監(jiān)控。
報(bào)表時(shí)間選擇
Transaction報(bào)表
以上為不同type的報(bào)表數(shù)據(jù)統(tǒng)計(jì)。選擇某個(gè)type,如URL,查看type下的item報(bào)表。
以上報(bào)表列出了監(jiān)控url請(qǐng)求的相關(guān)統(tǒng)計(jì)報(bào)表,如訪問(wèn)總數(shù),失敗總數(shù),平均響應(yīng)時(shí)間,95基線的平均響應(yīng)時(shí)間(去除網(wǎng)絡(luò)抖動(dòng)等原因?qū)е碌漠惓?shù)據(jù)。好比跳舞比賽中,裁判會(huì)去掉評(píng)委給的一個(gè)最高分和最低分,取平均給到一個(gè)選手最終評(píng)分,剔除大的異常情況才能得出一個(gè)相對(duì)公平的結(jié)果)。
點(diǎn)擊某個(gè)url對(duì)應(yīng)的log view鏈接,可以查看該url訪問(wèn)的log信息采樣。
Event報(bào)表
event報(bào)表為業(yè)務(wù)次數(shù)埋點(diǎn)的統(tǒng)計(jì)報(bào)表。
Problem報(bào)表
problem報(bào)表主要涉及錯(cuò)誤統(tǒng)計(jì)(應(yīng)用報(bào)錯(cuò)、sql報(bào)錯(cuò)等)、系統(tǒng)heartbeat(監(jiān)控應(yīng)用機(jī)器資源統(tǒng)計(jì))、性能統(tǒng)計(jì)(耗時(shí)url、耗時(shí)sql等)幾類信息。做系統(tǒng)優(yōu)化和問(wèn)題故障排查,通過(guò)problem報(bào)表定位非常方便。
感謝你的閱讀,下一篇將介紹項(xiàng)目中如何集成cat client。有興趣請(qǐng)關(guān)注我。謝謝!
1.《.cat文件如何打開看這里!Cat監(jiān)控使用介紹》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。
2.《.cat文件如何打開看這里!Cat監(jiān)控使用介紹》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/gl/2103032.html