CAT使用總結(jié)

簡介

CAT基于Java開發(fā)的實(shí)時(shí)應(yīng)用監(jiān)控平臺(tái),包括實(shí)時(shí)應(yīng)用監(jiān)控,業(yè)務(wù)監(jiān)控。
CAT支持的監(jiān)控消息類型包括:
  • Transaction 適合記錄跨越系統(tǒng)邊界的程序訪問行為,比如遠(yuǎn)程調(diào)用,數(shù)據(jù)庫調(diào)用,也適合執(zhí)行時(shí)間較長的業(yè)務(wù)邏輯監(jiān)控,Transaction用來記錄一段代碼的執(zhí)行時(shí)間和次數(shù)。
  • Event 用來記錄一件事發(fā)生的次數(shù),比如記錄系統(tǒng)異常,它和transaction相比缺少了時(shí)間的統(tǒng)計(jì),開銷比transaction要小。
  • Heartbeat 表示程序內(nèi)定期產(chǎn)生的統(tǒng)計(jì)信息, 如CPU%, MEM%, 連接池狀態(tài), 系統(tǒng)負(fù)載等。
  • Metric 用于記錄業(yè)務(wù)指標(biāo)、指標(biāo)可能包含對一個(gè)指標(biāo)記錄次數(shù)、記錄平均值、記錄總和,業(yè)務(wù)指標(biāo)最低統(tǒng)計(jì)粒度為1分鐘。
  • Trace 用于記錄基本的trace信息,類似于log4j的info信息,這些信息僅用于查看一些相關(guān)信息

Logview


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

可視化Logview


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

分布式Logview樹【一臺(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)表支持每天的趨勢圖,以天為單位,如下圖
    [圖片上傳失敗...(image-289e1b-1517378766023)]
  • Transaction\Event報(bào)表日報(bào)表、周報(bào)表支持同比、環(huán)比對比,時(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)表支持每天的趨勢圖,以天為單位,如下圖
    [圖片上傳失敗...(image-51d8ca-1517378766023)]
  • Transaction\Event報(bào)表日報(bào)表、周報(bào)表支持同比、環(huán)比對比,時(shí)間精度為5分鐘
    [圖片上傳失敗...(image-bf44fa-1517378766023)]

Problem

根據(jù)Transaction\Event數(shù)據(jù)分析出來系統(tǒng)可能出現(xiàn)的異常,包括訪問較慢的程序,

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

Problem的類型如下:

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

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

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

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

Problem歷史報(bào)表

  • 在選擇了特定的域、報(bào)表類型、時(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信息包括
名稱 詳細(xì)
Active Thread 系統(tǒng)當(dāng)前活動(dòng)線程
Daemon Thread 系統(tǒng)后臺(tái)線程
Total Started Thread 系統(tǒng)總共開啟線程
Started Thread 系統(tǒng)每分鐘新啟動(dòng)的線程
Cat Started Thread 系統(tǒng)中CAT客戶端啟動(dòng)線程
Pigeon Started Thread 系統(tǒng)中Pigeon客戶端啟動(dòng)線程數(shù)
  • System Info信息包括
名稱 詳細(xì)
NewGc Count 新生代GC次數(shù)
OldGc Count 舊生代GC次數(shù)
System Load Average 系統(tǒng)Load詳細(xì)信息
  • Memery Info信息包括
名稱 詳細(xì)
Memory Free 系統(tǒng)memoryFree情況
Heap Usage Java虛擬機(jī)堆的使用情況
None Heap Usage Java虛擬機(jī)Perm的使用情況
  • Disk Info信息包括

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

  • 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ù)庫、緩存等

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

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

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

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

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

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

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

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

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

  • Ratio表示訪問次數(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ù)包括:訪問量,錯(cuò)誤量,響應(yīng)時(shí)間,QPS

客戶端調(diào)用

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

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

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

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

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

長時(shí)間訪問定義:操作響應(yīng)時(shí)間超過1秒(數(shù)據(jù)庫),操作響應(yīng)時(shí)間超過50毫秒(cache)

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

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

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

埋點(diǎn)方案

spring-boot

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

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

mybatis

對于mybatis的監(jiān)控是通過編寫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> 

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

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

NOTE : cat不推薦使用aop方法埋點(diǎn),會(huì)有少量性能損耗,推薦使用api,這樣type和name以及成功狀態(tà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)對比

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

  • 可擴(kuò)展:支持分布式、跨IDC部署,橫向擴(kuò)展。
  • 高可用:所有應(yīng)用都可以倒下了,需要監(jiān)控還站著,告訴它們發(fā)生了什么。
  • 實(shí)時(shí)處理:信息的價(jià)值會(huì)隨時(shí)間銳減,尤其是事故處理過程中。
  • 全量數(shù)據(jù):小概率事件是常態(tài),百萬分之一的概率,碰到了就是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)的侵入性,需要用戶調(diào)用Cat API自定義監(jiān)控打點(diǎn)以及監(jiān)控緯度數(shù)據(jù),側(cè)重于業(yè)務(wù)監(jiān)控 。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容