您好,登錄后才能下訂單哦!
對于DevOps而言,監控是其中重要的一環,上一次的專題內容中,我們與大家分享了 大型企業級監控系統的設計。今天我們將和大家從另一個角度進一步探討互聯網工程技術領域的監控設計(monitoring):系統的可觀測性(observerbality)。
無論監控,還是可觀測性,都是工程界的術語,并非嚴格定義的概念。人們可以描述它,但很難定義它。所以本文不會糾結于這些名詞之間的區別。
在實踐中,所有這些概念/術語,目標都是增強工程師對于線上系統運行情況的了解。
對工程師而言,監控/可觀測性工程存在的意義,是幫助工程師發現問題,定位問題,解決問題。
對系統自身而言,這些工作都是通過數據的采集/存儲/分析,以及進一步迭代來完成。
當程序被交付,部署到生產環境,才是其生命周期中最長的部分的開始。人們需要了解生產環境是否一切正常,監控需求自然而然產生。
互聯網發展過程中涌現大量監控相關的工具/系統,Ganlia, Zabbix, RRDTools, Graphite,各自在不同的層面為“是否正常”提供答案。
監控本身,無論是業界對監控的認知,監控工具/系統自身的能力,也在以下兩個方向演進著:
這個階段監控的愿景是很明確的,如何落地則各顯神通。
直到 Etsy 于 2011 年通過博客公開了他們的 監控實踐,利用 StatsD(已開源),以非常簡單統一的方式,實現資源/業務層面的數據采集/存儲/分析。后來的監控系統,尤其是基于 metrics 的監控系統,大多受過 StatsD 的啟發和影響。
互聯網工程界,Twitter 應該是最早提出可觀測性 的組織。在這系列文章中,Twitter 集中闡述了他們的可觀測性技術棧,其中包括了 Zipkin,Google Dapper 的開源實現。
如前言所說,本文不糾結于幾個名詞之間的包含關系。
拋開這些名詞的辯論,可觀測性相對于過去監控,最大的變化就是系統需要處理的數據,從 metrics 為主,擴展到了更廣的領域。綜合起來,大約有幾類數據被看作是可觀測性的支柱(pillar)
因此,一個現代化的監控系統/可觀測性工程系統,也就必須具備妥善存儲以上幾種數據的能力。
Metrics,通常是數值類型的時間序列數據。這類需求的存在如此廣泛,以至于衍生了專門服務于這個目標的數據庫子類,時間序列數據庫,TSDB。
TSDB 經歷了大約如下幾個方面的重要演進
Metrics 存儲,或者是 TSDB 的研究和演進,我們會有另外的文章專門介紹。
logging 通常會是工程師定位生產環境問題最直接的手段。日志的處理大約在如下幾個方面進行演進
隨著互聯網工程日漸復雜,尤其是微服務的風潮下,分布式 tracing 通常是理解系統,定位系統故障的最重要手段。
在存儲層面,tracing 已經有相對明確的方案,無論是 OpenZipkin,還是 CNCF 的 Jaeger ,都提供幾乎開箱即用的后端軟件,其中當然包括存儲。
Tracing 的存儲設計主要考慮
1、稀疏數據:tracing 數據通常是稀疏的,這通常有幾個原因
2、多維度查詢:通常的解決思路
同樣是一個難以定義,但是很容易描述的術語。我們把,一次部署,一次配置變更,一次dns 切換,諸如此類的變更,稱為事件。
它們通常意味著生產環境的變更。而故障,通常因為不恰當的變更引起。
對 events 的處理主要包括
現代的監控,或者可觀測性工程,通常是對不同類型數據的采集/存儲/分析。這些數據各有特點,因而存儲也不存在銀彈。通常是根據各自特點,獨立設計存儲方案,上層提供一個統一、綜合的存儲系統。
京東云監控具有實時展現監控數據變化及迅速報警等優勢,能夠滿足日常業務監控管理和處理異常等場景。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。