對於DevOps而言,監控是其中重要的一環,上一次的專題內容中,咱們與你們分享了大型企業級監控系統的設計。今天咱們將和你們從另外一個角度進一步探討互聯網工程技術領域的監控設計(monitoring):系統的可觀測性(observerbality)。算法
不管監控,仍是可觀測性,都是工程界的術語,並不是嚴格定義的概念。人們能夠描述它,但很難定義它。因此本文不會糾結於這些名詞之間的區別。數據庫
在實踐中,全部這些概念/術語,目標都是加強工程師對於線上系統運行狀況的瞭解。後端
對工程師而言,監控/可觀測性工程存在的意義,是幫助工程師發現問題,定位問題,解決問題。緩存
對系統自身而言,這些工做都是經過數據的採集/存儲/分析,以及進一步迭代來完成。app
當程序被交付,部署到生產環境,纔是其生命週期中最長的部分的開始。人們須要瞭解生產環境是否一切正常,監控需求天然而然產生。分佈式
互聯網發展過程當中涌現大量監控相關的工具/系統,Ganlia, Zabbix, RRDTools, Graphite,各自在不一樣的層面爲「是否正常」提供答案。微服務
監控自己,不管是業界對監控的認知,監控工具/系統自身的能力,也在如下兩個方向演進着:工具
這個階段監控的願景是很明確的,如何落地則各顯神通。網站
直到 Etsy 於 2011 年經過博客公開了他們的 監控實踐,利用 StatsD(已開源),以很是簡單統一的方式,實現資源/業務層面的數據採集/存儲/分析。後來的監控系統,尤爲是基於 metrics 的監控系統,大多受過 StatsD 的啓發和影響。spa
互聯網工程界,Twitter 應該是最先提出可觀測性 的組織。在這系列文章中,Twitter 集中闡述了他們的可觀測性技術棧,其中包括了 Zipkin,Google Dapper 的開源實現。
如前言所說,本文不糾結於幾個名詞之間的包含關係。
拋開這些名詞的辯論,可觀測性相對於過去監控,最大的變化就是系統須要處理的數據,從 metrics 爲主,擴展到了更廣的領域。綜合起來,大約有幾類數據被看做是可觀測性的支柱(pillar)
所以,一個現代化的監控系統/可觀測性工程系統,也就必須具有妥善存儲以上幾種數據的能力。
Metrics
Metrics,一般是數值類型的時間序列數據。這類需求的存在如此普遍,以致於衍生了專門服務於這個目標的數據庫子類,時間序列數據庫,TSDB。
TSDB 經歷了大約以下幾個方面的重要演進
Metrics 存儲,或者是 TSDB 的研究和演進,咱們會有另外的文章專門介紹。
logging
logging 一般會是工程師定位生產環境問題最直接的手段。日誌的處理大約在以下幾個方面進行演進
tracing
隨着互聯網工程日漸複雜,尤爲是微服務的風潮下,分佈式 tracing 一般是理解系統,定位系統故障的最重要手段。
在存儲層面,tracing 已經有相對明確的方案,不管是 OpenZipkin,仍是 CNCF 的 Jaeger ,都提供幾乎開箱即用的後端軟件,其中固然包括存儲。
Tracing 的存儲設計主要考慮
一、稀疏數據:tracing 數據一般是稀疏的,這一般有幾個緣由
二、多維度查詢:一般的解決思路
Events
一樣是一個難以定義,可是很容易描述的術語。咱們把,一次部署,一次配置變動,一次dns 切換,諸如此類的變動,稱爲事件。
它們一般意味着生產環境的變動。而故障,一般由於不恰當的變動引發。
對 events 的處理主要包括
現代的監控,或者可觀測性工程,一般是對不一樣類型數據的採集/存儲/分析。這些數據各有特色,於是存儲也不存在銀彈。一般是根據各自特色,獨立設計存儲方案,上層提供一個統1、綜合的存儲系統。
京東雲監控具備實時展示監控數據變化及迅速報警等優點,可以知足平常業務監控管理和處理異常等場景。
目前京東雲監控提供免費服務,點擊【閱讀】,瞭解更多關於京東雲監控的內容。
歡迎點擊「京東雲」瞭解更多精彩內容