1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        快速搞懂監(jiān)控、鏈路追蹤、日志三者的區(qū)別

        共 2269字,需瀏覽 5分鐘

         ·

        2020-11-23 23:42

        點擊上方藍色“程序猿DD”,選擇“設(shè)為星標”

        回復“資源”獲取獨家整理的學習資料!

        作者 | Xenojoshua

        來源 |?https://xenojoshua.com/2019/04/monitoring-tracing-logging/

        1. Monitoring & Tracing & Logging

        對于一個系統(tǒng)來說,標題中提到的這三者需求都是必然存在的,而有的時候我們會搞不清楚這三者相互之間是什么關(guān)系。我之前在做系統(tǒng)設(shè)計的時候也考慮過,是不是有必要引入那么多組件,畢竟如果這三者完全分開每一個一項的話,就有三個組件了(事實上就是:Prometheus+Grafana、Jaeger、ELK)。

        因此想做個筆記嘗試舉例來梳理下。

        外部鏈接:

        • Metrics, tracing, and logging,地址:http://peter.bourgon.org/blog/2017/02/21/metrics-tracing-and-logging.html

        2. Monitoring

        Monitoring(監(jiān)控)舉例來說就是:定期體檢。使用監(jiān)控系統(tǒng)把需要關(guān)注的指標采集起來,形成報告,并對需要關(guān)注的異常數(shù)據(jù)進行分析形成告警。

        特點是:

        • 低頻
        • 定期
        • 定量

        這也是Prometheus的架構(gòu)做得非常簡單的原因,Monitoring的需求并沒有包含非常高的并發(fā)量和通訊量。反過來說:高并發(fā)、大數(shù)據(jù)量的需求并不適用于Monitoring這個點。

        3. Tracing

        Tracing(鏈路追蹤)舉例來說就是:對某一項工作的定期匯報。某個工作開始做了A,制作A事件的報告,收集起來,然后這個工作還有B、C、D等條目,一個個處理,然后都匯總進報告,最終的結(jié)果就是一個Tracing。

        特點是:

        • 高頻
        • 巨量
        • 有固定格式

        因為Tracing是針對某一個事件(一般來說就是一個API),而這個API可能會和很多組件進行溝通,后續(xù)的所有的組件溝通無論是內(nèi)部還是外部的IO,都算作這個API調(diào)用的Tracing的一部分??梢韵胍娫谝粋€業(yè)務繁忙的系統(tǒng)中,API調(diào)用的數(shù)量已經(jīng)是天文數(shù)字,而其衍生出來的Tracing記錄更是不得了的量。其特點就是高頻、巨量,一個API會衍生出大量的子調(diào)用。

        也因此適合用來做Monitoring的系統(tǒng)就不一定適合做Tracing了,用Prometheus這樣的系統(tǒng)來做Tracing肯定完蛋(Prometheus只有拉模式,全部都是HTTP請求,高并發(fā)直接掛掉)。一般來說Tracing系統(tǒng)都會在本地磁盤IO上做日志(最高效、也是最低的Cost),然后再通過本地Agent慢慢把文本日志數(shù)據(jù)發(fā)送到聚合服務器上,甚至可能在聚合服務器和本地的Agent之間還需要做消息隊列,讓聚合服務器慢慢消化巨量的消息。

        Tracing在現(xiàn)在的業(yè)界是有標準的:OpenTracing,因此它不是很隨意的日志/事件聚合,而是有格式要求的日志/事件聚合,這就是Tracing和Logging最大的不同。

        4. Logging

        Logging(日志)舉例來說就是:廢品回收站。各種各樣的物品都會匯總進入到配品回收站里,然后經(jīng)過分門別類歸納整理,成為各種可回收資源分別回收到商家那里。一般來說我們在大型系統(tǒng)中提到Logging說的都不是簡單的日志,而是日志聚合系統(tǒng)。

        從本質(zhì)上來說,Monitoring和Tracing都是Logging,Logging是這三者中覆蓋面最大的超集,而前兩者則是其一部分的子集。Logging最麻煩的是,開發(fā)者也不會完全知道最后記錄進入到日志系統(tǒng)里的一共會有哪些東西,只有在使用(檢索)的時候才可能需要匯總查詢總量中的一部分。

        要在一般的Loggin系統(tǒng)中進行Monitoring也是可以的,直接把聚合進來的日志數(shù)據(jù)提取出來,定期形成數(shù)據(jù)報告,就是監(jiān)控了。Tracing也是一樣,只要聚合進了Logging系統(tǒng),有了原始數(shù)據(jù),后面要做都是可以做的。因此Logging系統(tǒng)最為通用,其特點和Tracing基本一致,也是需要處理高頻并發(fā)和巨大的數(shù)據(jù)量。

        5. 總結(jié)

        這樣一看就很清楚了,每個組件都有其存在的必要性:

        • Monitoring系統(tǒng)(Prometheus)從根本的需求和基本設(shè)計上就不可能支持Tracing和Logging:低頻 vs 高頻、低量 vs 高量,其從設(shè)計到實現(xiàn)就只為了監(jiān)控服務
        • Tracing系統(tǒng)(Jaeger)對提供的數(shù)據(jù)有格式要求,且處理方式和一般的Logging也不同,有更限定的應用范圍
        • Logging系統(tǒng)(ELK)可以處理前兩者的需求,但前兩者的領(lǐng)域有更專業(yè)的工具就不推薦直接使用普通的日志聚合系統(tǒng)了;Logging系統(tǒng)一般用來處理大型系統(tǒng)的日志聚合以及檢索查詢

        DD自研的滬牌代拍業(yè)務,點擊直達



        【往期推薦】

        讀完《Effective Java》后,總結(jié)了 50 條開發(fā)技巧

        2020-11-20

        35歲之后,你還會繼續(xù)寫代碼嗎?

        2020-11-19

        11月全國招程序員34萬人,猜猜平均工資是多少?

        2020-11-18

        一個復雜系統(tǒng)的拆分改造,壓力真大!

        2020-11-19

        雙十一,你買了哪些大呼過癮的編程書?

        2020-11-17



        掃一掃,關(guān)注我

        一起學習,一起進步

        每周贈書,福利不斷

        深度內(nèi)容

        推薦加入



        瀏覽 41
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            91大神看片 | 性爱AV免费观看 | 久热久热| 蜜桃十八网站禁一级电影 | 久久久人| 揉她的小豆豆到失禁喷水 | 亚洲图片在线视频 | 在线观看黄色电影 | 亚洲五月天激情 | 五十路AV在线 |