CAT使用總結(jié)

簡(jiǎn)介

CAT基于Java開(kāi)發(fā)的實(shí)時(shí)應(yīng)用監(jiān)控平臺(tái),包括實(shí)時(shí)應(yīng)用監(jiān)控搏存,業(yè)務(wù)監(jiān)控。
CAT支持的監(jiān)控消息類(lèi)型包括:
  • Transaction 適合記錄跨越系統(tǒng)邊界的程序訪(fǎ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ì)勤婚,開(kāi)銷(xiāo)比transaction要小。
  • Heartbeat 表示程序內(nèi)定期產(chǎn)生的統(tǒng)計(jì)信息, 如CPU%, MEM%, 連接池狀態(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分鐘。
  • Trace 用于記錄基本的trace信息器净,類(lèi)似于log4j的info信息型雳,這些信息僅用于查看一些相關(guān)信息

Logview


CAT監(jiān)控系統(tǒng)將每次URL、Service的請(qǐng)求內(nèi)部執(zhí)行情況都封裝為一個(gè)完整的消息樹(shù)掌动、消息樹(shù)可能包括Transaction四啰、Event、Heartbeat粗恢、Metric和Trace信息柑晒。

可視化Logview


[圖片上傳失敗...(image-9b83ca-1517378766023)]

分布式Logview樹(shù)【一臺(tái)機(jī)器調(diào)用另外一臺(tái)機(jī)器】


[圖片上傳失敗...(image-538c7d-1517378766023)]


Transaction

一段代碼運(yùn)行時(shí)間、次數(shù)眷射,比如URL匙赞、Cache佛掖、SQL執(zhí)行次數(shù)和響應(yīng)時(shí)間

Transaction實(shí)時(shí)報(bào)表

  • Type統(tǒng)計(jì)界面

[圖片上傳失敗...(image-f87703-1517378766023)]

  • Name統(tǒng)計(jì)界

[圖片上傳失敗...(image-c16591-1517378766023)]

Transaction歷史統(tǒng)計(jì)報(bào)表

  • Transaction\Event月報(bào)表支持每天的趨勢(shì)圖,以天為單位,如下圖
    [圖片上傳失敗...(image-289e1b-1517378766023)]
  • Transaction\Event報(bào)表日?qǐng)?bào)表涌庭、周報(bào)表支持同比芥被、環(huán)比對(duì)比,時(shí)間精度為5分鐘
    [圖片上傳失敗...(image-b3ed04-1517378766023)]

Even

一行代碼運(yùn)行次數(shù),比如出現(xiàn)一個(gè)異常

Event實(shí)時(shí)報(bào)表

  • Type統(tǒng)計(jì)界面
    [圖片上傳失敗...(image-687c55-1517378766023)]

  • Name統(tǒng)計(jì)界面
    [圖片上傳失敗...(image-ad3617-1517378766023)]

  • 一個(gè)小時(shí)內(nèi)詳細(xì)指標(biāo)統(tǒng)計(jì)
    [圖片上傳失敗...(image-d1697d-1517378766023)]

Event歷史報(bào)表

  • Transaction\Event月報(bào)表支持每天的趨勢(shì)圖坐榆,以天為單位,如下圖
    [圖片上傳失敗...(image-51d8ca-1517378766023)]
  • Transaction\Event報(bào)表日?qǐng)?bào)表拴魄、周報(bào)表支持同比、環(huán)比對(duì)比,時(shí)間精度為5分鐘
    [圖片上傳失敗...(image-bf44fa-1517378766023)]

Problem

根據(jù)Transaction\Event數(shù)據(jù)分析出來(lái)系統(tǒng)可能出現(xiàn)的異常席镀,包括訪(fǎng)問(wèn)較慢的程序匹中,

Problem實(shí)時(shí)報(bào)表

Problem的類(lèi)型如下:

代碼 詳解
error Log4j記錄的錯(cuò)誤異常
call 表示在遠(yuǎn)程調(diào)用中transaction中出錯(cuò)
sql 表示在數(shù)據(jù)庫(kù)的調(diào)用中transaction中出錯(cuò)
url 表示在url請(qǐng)求中調(diào)用transaction中出錯(cuò)
failure 業(yè)務(wù)程序Transaction的失敗(除了call\sql\url之外)
heartbeat 心跳消息
long-url 執(zhí)行慢的url請(qǐng)求(可以進(jìn)行進(jìn)行時(shí)間篩選)
long-service 執(zhí)行慢的service請(qǐng)求(可以進(jìn)行進(jìn)行時(shí)間篩選)
long-sql 執(zhí)行慢的sql請(qǐng)求(可以進(jìn)行進(jìn)行時(shí)間篩選)

[圖片上傳失敗...(image-a87ac4-1517378766023)]

點(diǎn)擊機(jī)器IP,進(jìn)入某一臺(tái)機(jī)器出現(xiàn)的具體問(wèn)題豪诲,這個(gè)包括了All中出現(xiàn)的所有錯(cuò)誤統(tǒng)計(jì)之外顶捷,還增加了以分鐘和線(xiàn)程為單位的錯(cuò)誤分布圖,具體如下:

[圖片上傳失敗...(image-8fda4d-1517378766023)]

Problem歷史報(bào)表

  • 在選擇了特定的域屎篱、報(bào)表類(lèi)型服赎、時(shí)間和IP之后,點(diǎn)擊[:: show ::] 查看某一Type下的Problem出現(xiàn)次數(shù)的分布圖交播。(當(dāng)前這一天重虑、上一天、上周這一天)
    [圖片上傳失敗...(image-8df6a1-1517378766023)]
  • 進(jìn)一步堪侯,可以查看該Type下嚎尤,某個(gè)Status的Problem出現(xiàn)次數(shù)的分布圖。(當(dāng)前這一天伍宦、上一天芽死、上周這一天)
    [圖片上傳失敗...(image-eec2c3-1517378766023)]

Heartbeat實(shí)時(shí)報(bào)表

JVM內(nèi)部一些狀態(tài)信息,Memory次洼,Thread等

  • Thread信息包括
名稱(chēng) 詳細(xì)
Active Thread 系統(tǒng)當(dāng)前活動(dòng)線(xiàn)程
Daemon Thread 系統(tǒng)后臺(tái)線(xiàn)程
Total Started Thread 系統(tǒng)總共開(kāi)啟線(xiàn)程
Started Thread 系統(tǒng)每分鐘新啟動(dòng)的線(xiàn)程
Cat Started Thread 系統(tǒng)中CAT客戶(hù)端啟動(dòng)線(xiàn)程
Pigeon Started Thread 系統(tǒng)中Pigeon客戶(hù)端啟動(dòng)線(xiàn)程數(shù)
  • System Info信息包括
名稱(chēng) 詳細(xì)
NewGc Count 新生代GC次數(shù)
OldGc Count 舊生代GC次數(shù)
System Load Average 系統(tǒng)Load詳細(xì)信息
  • Memery Info信息包括
名稱(chēng) 詳細(xì)
Memory Free 系統(tǒng)memoryFree情況
Heap Usage Java虛擬機(jī)堆的使用情況
None Heap Usage Java虛擬機(jī)Perm的使用情況
  • Disk Info信息包括

詳細(xì)|
---|---
/根的使用情況|
/data盤(pán)的使用情況|

  • Cat Info信息包括

詳細(xì)|
---|---
Cat每分鐘產(chǎn)生消息數(shù)|
Cat每分鐘丟掉的消息數(shù)|
Cat每分鐘產(chǎn)生消息大小|

Dependency實(shí)時(shí)報(bào)表

系統(tǒng)之間實(shí)時(shí)調(diào)用數(shù)據(jù)信息关贵,包括遠(yuǎn)程服務(wù)、數(shù)據(jù)庫(kù)卖毁、緩存等

名稱(chēng) 詳細(xì)
時(shí)間統(tǒng)計(jì)粒度 分鐘
形狀:圓形 SOA的一個(gè)服務(wù)或者一個(gè)Web
形狀:矩形 數(shù)據(jù)庫(kù)一個(gè)實(shí)例
形狀:菱形 緩存一種集群(MemoryCached)
狀態(tài):紅色 Error
狀態(tài):黃色 Warning
狀態(tài):綠色 OK
浮層 點(diǎn)擊節(jié)點(diǎn)可以直接查詢(xún)這一分鐘內(nèi)這個(gè)節(jié)點(diǎn)的詳細(xì)狀態(tài)

[圖片上傳失敗...(image-c91a1d-1517378766023)]

  • 應(yīng)用監(jiān)控大盤(pán)
    把所有核心項(xiàng)目用監(jiān)控大盤(pán)方式展示揖曾,能全局看到項(xiàng)目目前問(wèn)題。
    [圖片上傳失敗...(image-f67934-1517378766023)]

Metric實(shí)時(shí)報(bào)表

公司核心業(yè)務(wù)指標(biāo)監(jiān)控

“當(dāng)前值”表示當(dāng)前實(shí)際值亥啦,“基線(xiàn)值”表示根據(jù)歷史趨勢(shì)算出來(lái)當(dāng)天的基準(zhǔn)線(xiàn)

[圖片上傳失敗...(image-957773-1517378766023)]

Matrix實(shí)時(shí)報(bào)表

一次請(qǐng)求(URL炭剪、Service)中的調(diào)用鏈路統(tǒng)計(jì),包括遠(yuǎn)程調(diào)用翔脱、sql調(diào)用奴拦、緩存調(diào)用

  • Ratio表示訪(fǎng)問(wèn)次數(shù),Min是最少届吁,Max是最大错妖,Avg是平均
  • Cost表示時(shí)間消耗绿鸣,Min是最少,Max是最大暂氯,Avg是平均
    [圖片上傳失敗...(image-cd39f1-1517378766023)]

調(diào)用鏈路排行

包括遠(yuǎn)程調(diào)用潮模、sql調(diào)用、緩存調(diào)用最多排行
[圖片上傳失敗...(image-1c669-1517378766023)]

Cross實(shí)時(shí)報(bào)表

SOA系統(tǒng)用關(guān)于RPC調(diào)用的報(bào)表(支持粒度服務(wù)痴施、IP擎厢、方法)

統(tǒng)計(jì)參數(shù)包括:訪(fǎng)問(wèn)量,錯(cuò)誤量辣吃,響應(yīng)時(shí)間锉矢,QPS

客戶(hù)端調(diào)用

[圖片上傳失敗...(image-3cd72e-1517378766023)]

服務(wù)端調(diào)用

[圖片上傳失敗...(image-2e5d04-1517378766023)]

Storage實(shí)時(shí)報(bào)表

監(jiān)控一段時(shí)間內(nèi)數(shù)據(jù)庫(kù)、Cache訪(fǎng)問(wèn)情況:各種操作訪(fǎng)問(wèn)次數(shù)齿尽、響應(yīng)時(shí)間、錯(cuò)誤次數(shù)灯节、長(zhǎng)時(shí)間訪(fǎng)問(wèn)量等等循头。

長(zhǎng)時(shí)間訪(fǎng)問(wèn)定義:操作響應(yīng)時(shí)間超過(guò)1秒(數(shù)據(jù)庫(kù)),操作響應(yīng)時(shí)間超過(guò)50毫秒(cache)

  • 統(tǒng)計(jì)報(bào)表

    • 可以選擇相應(yīng)操作炎疆,查看該操作的各項(xiàng)訪(fǎng)問(wèn)指標(biāo)卡骂。數(shù)據(jù)庫(kù)默認(rèn)操作:select,update,delete,insert;cache默認(rèn)操作:add,get,mGet,remove
    • Domain是訪(fǎng)問(wèn)該數(shù)據(jù)庫(kù)或cache的應(yīng)用名形入,All是所有應(yīng)用操作數(shù)據(jù)匯總
    • Count: 操作數(shù)全跨;Long:長(zhǎng)時(shí)間操作數(shù);Avg:響應(yīng)時(shí)間亿遂;Error:操作錯(cuò)誤數(shù)
    • 點(diǎn)擊查詢(xún)可以在當(dāng)前報(bào)表上過(guò)濾不同操作訪(fǎng)問(wèn)情況浓若,方便分析數(shù)據(jù)
      [圖片上傳失敗...(image-b90a6b-1517378766023)]
  • 統(tǒng)計(jì)曲線(xiàn)圖

    • 圖表展示當(dāng)前應(yīng)用操作數(shù)據(jù)庫(kù)或cache情況
    • 圖表展示的操作種類(lèi),與查詢(xún)報(bào)表中的操作對(duì)應(yīng)一致
      [圖片上傳失敗...(image-bfe9a-1517378766023)]

埋點(diǎn)方案

spring-boot

與spring-boot的整合就是在spring-boot的項(xiàng)目中添加一個(gè)配置類(lèi)蛇数。配置類(lèi)中配置的是由cat提供的過(guò)濾器

以上的方案只能監(jiān)控URL的執(zhí)行情況挪钓,具體內(nèi)部執(zhí)行情況無(wú)法監(jiān)控。

mybatis

對(duì)于mybatis的監(jiān)控是通過(guò)編寫(xiě)mybatis插件,然后添加如下配置:

  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
        <property name="plugins">
            <array>
                <bean class="com.mybatis.CatMybatisPlugins"></bean>
            </array>
        </property>
        <property name="mapperLocations">
            <list>
                <value>classpath:com/mybatis/*.xml</value>
            </list>
        </property>
    </bean> 

以上方案能夠檢測(cè)到sql的執(zhí)行情況耳舅。

Spring AOP ANNOTATION 監(jiān)控方法執(zhí)行時(shí)間

NOTE : cat不推薦使用aop方法埋點(diǎn)碌上,會(huì)有少量性能損耗,推薦使用api浦徊,這樣type和name以及成功狀態(tài)可以更加靈活馏予。

通過(guò)定義注解切面來(lái)監(jiān)控方法執(zhí)行時(shí)間。使用用例如下:

public interface UserService {

    public void delete(Object entity);
    
    public void getAllObjects();
    
    public void save(Object entity);
    
    public void update(Object entity);
}

public class UserServiceImpl implements UserService {

    @Override
    @CatAnnotation
    public void delete(Object entity) {
        sleep(30);
        System.out.println("UserServiceImpl---刪除方法:delete()---");
    }

    @Override
    @CatAnnotation
    public void getAllObjects() {
        sleep(40);
        System.out.println("UserServiceImpl---查找所有方法:getAllObjects()---");
    }

    @Override
    @CatAnnotation
    public void save(Object entity) {
        sleep(10);
        System.out.println("UserServiceImpl---保存方法:save()---");
    }

    private void sleep(int time) {
        try {
            Thread.sleep(time);
        } catch (Exception e) {
        }
    }

    @Override
    @CatAnnotation
    public void update(Object entity) {
        sleep(20);
        System.out.println("UserServiceImpl---更新方法:update()---");
    }

}

優(yōu)缺點(diǎn)對(duì)比

優(yōu)點(diǎn)

  • 可擴(kuò)展:支持分布式盔性、跨IDC部署霞丧,橫向擴(kuò)展。
  • 高可用:所有應(yīng)用都可以倒下了纯出,需要監(jiān)控還站著蚯妇,告訴它們發(fā)生了什么敷燎。
  • 實(shí)時(shí)處理:信息的價(jià)值會(huì)隨時(shí)間銳減,尤其是事故處理過(guò)程中箩言。
  • 全量數(shù)據(jù):小概率事件是常態(tài)硬贯,百萬(wàn)分之一的概率,碰到了就是100%陨收。
  • 高吞吐:要想還原真相饭豹,需要全方位的監(jiān)控和度量,必須要有超強(qiáng)的處理吞吐能力务漩。
  • 故障容忍:CAT本身故障不應(yīng)該影響業(yè)務(wù)正常運(yùn)轉(zhuǎn)拄衰,CAT掛了,應(yīng)用不該受影響饵骨,只是監(jiān)控能力暫時(shí)減弱翘悉。
  • 不保證可靠:允許消息丟失,這是一個(gè)很重要的trade-off居触,雖然目前CAT可以做到4個(gè)9的可靠性妖混。

缺點(diǎn)

  • 并不能直接識(shí)別應(yīng)用系統(tǒng)框架服務(wù),這款產(chǎn)品具有很強(qiáng)的侵入性轮洋,需要用戶(hù)調(diào)用Cat API自定義監(jiān)控打點(diǎn)以及監(jiān)控緯度數(shù)據(jù)制市,側(cè)重于業(yè)務(wù)監(jiān)控 。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末弊予,一起剝皮案震驚了整個(gè)濱河市祥楣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌汉柒,老刑警劉巖误褪,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異碾褂,居然都是意外死亡振坚,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)斋扰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)渡八,“玉大人,你說(shuō)我怎么就攤上這事传货∈瑚ⅲ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵问裕,是天一觀(guān)的道長(zhǎng)逮壁。 經(jīng)常有香客問(wèn)我,道長(zhǎng)粮宛,這世上最難降的妖魔是什么窥淆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任卖宠,我火速辦了婚禮,結(jié)果婚禮上忧饭,老公的妹妹穿的比我還像新娘扛伍。我一直安慰自己,他們只是感情好词裤,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布刺洒。 她就那樣靜靜地躺著,像睡著了一般吼砂。 火紅的嫁衣襯著肌膚如雪逆航。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天渔肩,我揣著相機(jī)與錄音因俐,去河邊找鬼。 笑死周偎,一個(gè)胖子當(dāng)著我的面吹牛女揭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播栏饮,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼磷仰!你這毒婦竟也來(lái)了袍嬉?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤灶平,失蹤者是張志新(化名)和其女友劉穎伺通,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體逢享,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡罐监,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瞒爬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弓柱。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖侧但,靈堂內(nèi)的尸體忽然破棺而出矢空,到底是詐尸還是另有隱情,我是刑警寧澤禀横,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布屁药,位于F島的核電站,受9級(jí)特大地震影響柏锄,放射性物質(zhì)發(fā)生泄漏酿箭。R本人自食惡果不足惜复亏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缭嫡。 院中可真熱鬧缔御,春花似錦、人聲如沸械巡。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)讥耗。三九已至有勾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間古程,已是汗流浹背蔼卡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留挣磨,地道東北人雇逞。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像茁裙,于是被迫代替她去往敵國(guó)和親塘砸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容