對(duì)于DevOps而言,監(jiān)控是其中重要的一環(huán),上一次的專(zhuān)題內(nèi)容中,我們與大家分享了 大型企業(yè)級(jí)監(jiān)控系統(tǒng)的設(shè)計(jì)。今天我們將和大家從另一個(gè)角度進(jìn)一步探討互聯(lián)網(wǎng)工程技術(shù)領(lǐng)域的監(jiān)控設(shè)計(jì)(monitoring):系統(tǒng)的可觀(guān)測(cè)性(observerbality)。
無(wú)論監(jiān)控,還是可觀(guān)測(cè)性,都是工程界的術(shù)語(yǔ),并非嚴(yán)格定義的概念。人們可以描述它,但很難定義它。所以本文不會(huì)糾結(jié)于這些名詞之間的區(qū)別。
在實(shí)踐中,所有這些概念/術(shù)語(yǔ),目標(biāo)都是增強(qiáng)工程師對(duì)于線(xiàn)上系統(tǒng)運(yùn)行情況的了解。
對(duì)工程師而言,監(jiān)控/可觀(guān)測(cè)性工程存在的意義,是幫助工程師發(fā)現(xiàn)問(wèn)題,定位問(wèn)題,解決問(wèn)題。
對(duì)系統(tǒng)自身而言,這些工作都是通過(guò)數(shù)據(jù)的采集/存儲(chǔ)/分析,以及進(jìn)一步迭代來(lái)完成。
當(dāng)程序被交付,部署到生產(chǎn)環(huán)境,才是其生命周期中最長(zhǎng)的部分的開(kāi)始。人們需要了解生產(chǎn)環(huán)境是否一切正常,監(jiān)控需求自然而然產(chǎn)生。
互聯(lián)網(wǎng)發(fā)展過(guò)程中涌現(xiàn)大量監(jiān)控相關(guān)的工具/系統(tǒng),Ganlia, Zabbix, RRDTools, Graphite,各自在不同的層面為“是否正常”提供答案。
監(jiān)控本身,無(wú)論是業(yè)界對(duì)監(jiān)控的認(rèn)知,監(jiān)控工具/系統(tǒng)自身的能力,也在以下兩個(gè)方向演進(jìn)著:
這個(gè)階段監(jiān)控的愿景是很明確的,如何落地則各顯神通。
直到 Etsy 于 2011 年通過(guò)博客公開(kāi)了他們的 監(jiān)控實(shí)踐,利用 StatsD(已開(kāi)源),以非常簡(jiǎn)單統(tǒng)一的方式,實(shí)現(xiàn)資源/業(yè)務(wù)層面的數(shù)據(jù)采集/存儲(chǔ)/分析。后來(lái)的監(jiān)控系統(tǒng),尤其是基于 metrics 的監(jiān)控系統(tǒng),大多受過(guò) StatsD 的啟發(fā)和影響。
互聯(lián)網(wǎng)工程界,Twitter 應(yīng)該是最早提出可觀(guān)測(cè)性 的組織。在這系列文章中,Twitter 集中闡述了他們的可觀(guān)測(cè)性技術(shù)棧,其中包括了 Zipkin,Google Dapper 的開(kāi)源實(shí)現(xiàn)。
如前言所說(shuō),本文不糾結(jié)于幾個(gè)名詞之間的包含關(guān)系。
拋開(kāi)這些名詞的辯論,可觀(guān)測(cè)性相對(duì)于過(guò)去監(jiān)控,大的變化就是系統(tǒng)需要處理的數(shù)據(jù),從 metrics 為主,擴(kuò)展到了更廣的領(lǐng)域。綜合起來(lái),大約有幾類(lèi)數(shù)據(jù)被看作是可觀(guān)測(cè)性的支柱(pillar)
因此,一個(gè)現(xiàn)代化的監(jiān)控系統(tǒng)/可觀(guān)測(cè)性工程系統(tǒng),也就必須具備妥善存儲(chǔ)以上幾種數(shù)據(jù)的能力。
Metrics,通常是數(shù)值類(lèi)型的時(shí)間序列數(shù)據(jù)。這類(lèi)需求的存在如此廣泛,以至于衍生了專(zhuān)門(mén)服務(wù)于這個(gè)目標(biāo)的數(shù)據(jù)庫(kù)子類(lèi),時(shí)間序列數(shù)據(jù)庫(kù),TSDB。
TSDB 經(jīng)歷了大約如下幾個(gè)方面的重要演進(jìn)
Metrics 存儲(chǔ),或者是 TSDB 的研究和演進(jìn),我們會(huì)有另外的文章專(zhuān)門(mén)介紹。
logging 通常會(huì)是工程師定位生產(chǎn)環(huán)境問(wèn)題最直接的手段。日志的處理大約在如下幾個(gè)方面進(jìn)行演進(jìn)
隨著互聯(lián)網(wǎng)工程日漸復(fù)雜,尤其是微服務(wù)的風(fēng)潮下,分布式 tracing 通常是理解系統(tǒng),定位系統(tǒng)故障的最重要手段。
在存儲(chǔ)層面,tracing 已經(jīng)有相對(duì)明確的方案,無(wú)論是 OpenZipkin,還是 CNCF 的 Jaeger ,都提供幾乎開(kāi)箱即用的后端軟件,其中當(dāng)然包括存儲(chǔ)。
Tracing 的存儲(chǔ)設(shè)計(jì)主要考慮
1、稀疏數(shù)據(jù):tracing 數(shù)據(jù)通常是稀疏的,這通常有幾個(gè)原因
2、多維度查詢(xún):通常的解決思路
同樣是一個(gè)難以定義,但是很容易描述的術(shù)語(yǔ)。我們把,一次部署,一次配置變更,一次dns 切換,諸如此類(lèi)的變更,稱(chēng)為事件。
它們通常意味著生產(chǎn)環(huán)境的變更。而故障,通常因?yàn)椴磺‘?dāng)?shù)淖兏稹?/p>
對(duì) events 的處理主要包括
現(xiàn)代的監(jiān)控,或者可觀(guān)測(cè)性工程,通常是對(duì)不同類(lèi)型數(shù)據(jù)的采集/存儲(chǔ)/分析。這些數(shù)據(jù)各有特點(diǎn),因而存儲(chǔ)也不存在銀彈。通常是根據(jù)各自特點(diǎn),獨(dú)立設(shè)計(jì)存儲(chǔ)方案,上層提供一個(gè)統(tǒng)一、綜合的存儲(chǔ)系統(tǒng)。
京東云監(jiān)控具有實(shí)時(shí)展現(xiàn)監(jiān)控?cái)?shù)據(jù)變化及迅速報(bào)警等優(yōu)勢(shì),能夠滿(mǎn)足日常業(yè)務(wù)監(jiān)控管理和處理異常等場(chǎng)景。
目前京東云 監(jiān)控提供免費(fèi)服務(wù),點(diǎn)擊【 閱讀 】,了解更多關(guān)于京東云監(jiān)控的內(nèi)容。