CAT ----分布式實(shí)時(shí)監(jiān)控系統(tǒng) - miaomiaodmiaomiao的專(zhuān)欄 - 博客頻道 - CSDN.NET
http://blog.csdn.net/miaomiaodmiaomiao/article/details/51240065
2011年底,我加入大眾點(diǎn)評(píng)網(wǎng)派诬,出于很偶然的機(jī)會(huì),決定開(kāi)發(fā)CAT忌卤,為各個(gè)業(yè)務(wù)線打造分布式實(shí)時(shí)監(jiān)控系統(tǒng)媳搪,CAT的核心概念源自eBay閉源系統(tǒng)CAL----eBay的幾大法寶之一。
在當(dāng)今互聯(lián)網(wǎng)時(shí)代,業(yè)務(wù)需求旺盛贮缅,開(kāi)發(fā)團(tuán)隊(duì)往往采用scrum等敏捷開(kāi)發(fā)流程晃听,加班加點(diǎn)快速迭代以滿足業(yè)務(wù)需求百侧,是常態(tài)。采用分布式系統(tǒng)設(shè)計(jì)和服務(wù)化能扒,由多臺(tái)機(jī)器協(xié)作來(lái)共同完成用戶(hù)請(qǐng)求佣渴,是典型的解決方案。網(wǎng)站故障頻發(fā)初斑,內(nèi)部關(guān)系錯(cuò)綜復(fù)雜辛润,故障定位緩慢,甚至找不到問(wèn)題根源见秤,也是常有的事砂竖。雖然已經(jīng)有很多日志監(jiān)控工具,或許單個(gè)工具功能還不錯(cuò)鹃答,但整體服務(wù)化水平參差不齊乎澄,工具間不能互通互聯(lián);另一方面测摔,由于日志數(shù)據(jù)量大置济,且分散,使得查找問(wèn)題根源基本靠人品锋八。
這些也是我們要開(kāi)發(fā)CAT的初衷浙于。
在互聯(lián)網(wǎng)環(huán)境中,最突出的問(wèn)題場(chǎng)景挟纱,我的理解是羞酗,跨越邊界的行為。包括但不限于紊服,HTTP/REST檀轨、RPC/SOA胸竞、MQ、Job裤园、Cache撤师、DAL; 搜索/查詢(xún)引擎、業(yè)務(wù)應(yīng)用拧揽、外包系統(tǒng)剃盾、遺留系統(tǒng); 母/子公司, 第三方網(wǎng)關(guān)/銀行, 合作伙伴/供應(yīng)商之間;還有各類(lèi)業(yè)務(wù)指標(biāo)淤袜,如PV痒谴、用戶(hù)登錄、訂單數(shù)铡羡、支付狀態(tài)积蔚、銷(xiāo)售額。
對(duì)于內(nèi)存增量計(jì)算烦周,它可以分為:計(jì)數(shù)尽爆、計(jì)時(shí)和關(guān)系處理三種。計(jì)數(shù)又可以分為兩類(lèi):算術(shù)計(jì)數(shù)和集合計(jì)數(shù)读慎。典型的算術(shù)計(jì)數(shù)如:總個(gè)數(shù)(count)漱贱,總和(sum),均值(avg)夭委,最大/最蟹ā(max/min),吞吐(tps)和標(biāo)準(zhǔn)差(std)等株灸,其他都比較直觀崇摄,標(biāo)準(zhǔn)差稍微復(fù)雜一點(diǎn),大家自己可以推演一下怎么做增量計(jì)算慌烧。那集合運(yùn)算逐抑,比如95線(表示95%請(qǐng)求的完成時(shí)間),999線(表示99.9%請(qǐng)求的完成時(shí)間)屹蚊,DAU(日活用戶(hù)數(shù))等泵肄,則稍微復(fù)雜一些,系統(tǒng)開(kāi)銷(xiāo)也更大一點(diǎn)淑翼。關(guān)系處理則涉及圖的運(yùn)算,這里不細(xì)述品追。
CAT在分布式實(shí)時(shí)方面玄括,主要?dú)w結(jié)于以下幾點(diǎn)因素:
去中心化,數(shù)據(jù)分區(qū)處理肉瓦;
基于日志只讀特性遭京,以一個(gè)小時(shí)為時(shí)間窗口胃惜,實(shí)時(shí)報(bào)表基于內(nèi)存建模和分析,歷史報(bào)表通過(guò)聚合完成哪雕;
基于內(nèi)存隊(duì)列船殉,全面異步化,單線程化斯嚎,無(wú)鎖設(shè)計(jì)利虫;
全局消息ID,數(shù)據(jù)本地化生產(chǎn)堡僻,集中式存儲(chǔ)糠惫;
組件化、服務(wù)化理念钉疫,致力于工具間互通互聯(lián)硼讽。
業(yè)界有很多開(kāi)源監(jiān)控系統(tǒng),但大多是基于日志行的(如ELK)牲阁,CAT是基于日志樹(shù)的固阁。其中最主要的差異是監(jiān)控源數(shù)據(jù)的質(zhì)量。
只要使用CAT API埋點(diǎn)城菊,消息樹(shù)是自然而然形成的备燃,無(wú)需特別處理。CAT中有示例代碼役电,可以參考一下赚爵。
CAT是主張全量日志分析的,全量數(shù)據(jù)落到每一臺(tái)消費(fèi)機(jī)上只是一個(gè)分片法瑟,CAT中所有報(bào)表都有內(nèi)置將分片合并的能力冀膝,所有的報(bào)表在展示時(shí)會(huì)合并,做數(shù)據(jù)匯總霎挟。