微服務(wù)實(shí)踐04--DevOps07--度量指標(biāo)00--度量指標(biāo)(Metrics)

微服務(wù)實(shí)踐目錄,可以參見連接。

起因:

在很多人的想法里認(rèn)為事務(wù)是無(wú)法考量的。無(wú)法說明的,就想老子所說的:

道可道,非常道。名可名,非常名。

人對(duì)不了解的事務(wù)的學(xué)習(xí)與分析過程中有個(gè)分歧:

  1. 追求了解事務(wù)最根本的真相,不斷的分解、抽象、聯(lián)想去組織處合適的理論。
  2. 賦予這個(gè)事務(wù)神話的色彩。以神的意志,解釋不可理解的事務(wù)

對(duì)于現(xiàn)代學(xué)科來(lái)說,現(xiàn)代的理學(xué)和文學(xué)都最終會(huì)歸化到數(shù)學(xué),數(shù)學(xué)會(huì)歸化的哲學(xué)。例如:美學(xué)中的黃金比例,文學(xué)中的邏輯學(xué),經(jīng)濟(jì)學(xué)中統(tǒng)計(jì)學(xué)等等。

但是,對(duì)于軟件工程一門工程類學(xué)科來(lái)說無(wú)法考量與度量某一項(xiàng)事務(wù)是否是可行?答案自然是明確的軟件工程必須是可以度量的,雖然在這么多年的發(fā)展過程中沒有一套完整適應(yīng)時(shí)代與技術(shù)的度量方法。但是度量對(duì)于一個(gè)工程類學(xué)科來(lái)說是必須的,而且之后也會(huì)不斷的朝著可度量的方向發(fā)展。

度量是了解事務(wù)內(nèi)部特征的最基礎(chǔ)的方法。但在國(guó)內(nèi)度量其實(shí)是從上到下都回避的一件事,所以,需要考量加入度量指標(biāo)的時(shí)間點(diǎn),以及加入的度量指標(biāo),加入方式等。不過可度量的標(biāo)準(zhǔn)是公司達(dá)到一定水平是一個(gè)標(biāo)志。

本文主要描述度量指標(biāo)的實(shí)踐,上面這些社會(huì)學(xué)的理論請(qǐng)自行把握。

度量指標(biāo):

在網(wǎng)上找了很多關(guān)于度量、指標(biāo)、維度的資料。這幾個(gè)詞可以從《統(tǒng)計(jì)學(xué)》到《軟件運(yùn)營(yíng)》、再?gòu)摹斗治鲋笜?biāo)體系》到《軟件過程度量模型》。就這幾個(gè)詞我找了很大一圈還是沒有找到很好的解釋,所以,我就妄自尊大的自己對(duì)度量指標(biāo)進(jìn)行一個(gè)解釋:

度量是指對(duì)于一個(gè)物體或是事件的某個(gè)性質(zhì)給予一個(gè)數(shù)字,使其可以和其他物體或是事件的相同性質(zhì)比較。度量可以是對(duì)一物理量(如長(zhǎng)度、尺寸或容量等)的估計(jì)或測(cè)定,也可以是其他較抽象的特質(zhì)。

指標(biāo) : 預(yù)期中打算達(dá)到的指數(shù)、規(guī)格、標(biāo)準(zhǔn)

度量出自維基百科,指標(biāo)出自以上是從Wiki上找到的介紹。簡(jiǎn)單的看度量就是描述事物的一個(gè)特定方面的數(shù)字。

度量指標(biāo)(Metrics) : 指用于描述一個(gè)物體或事物的某個(gè)性質(zhì)的指數(shù)、規(guī)格、標(biāo)準(zhǔn),使其可以和其他的物體或者事物的提交。

從軟件的角度講度量即把所有東西都量化、數(shù)據(jù)化、可采集。指標(biāo)即表示對(duì)這些量化后的數(shù)據(jù)的目標(biāo)值。維度即標(biāo)識(shí)一個(gè)事物某一個(gè)側(cè)面的一組指標(biāo)。

軟件指標(biāo)定義:

大概說明了度量指標(biāo)的內(nèi)容之后,接下來(lái)以工程化實(shí)施方案的思維方式思考如果要實(shí)施度量指標(biāo)需要完成怎樣的工作。借鑒一些ToGAF的概念,每一項(xiàng)事都是需要有目標(biāo)的,在目標(biāo)的指導(dǎo)下去做具體的實(shí)施工作。度量指標(biāo)工作具體的實(shí)施步驟如下:

  1. 制定度量指標(biāo)所關(guān)心的目標(biāo),所要解決的問題;(明確要解決的問題域)
  2. 建立一套針對(duì)問題域的分析方法,并找到要進(jìn)行分析的數(shù)據(jù)域;(制定方法論,解決域)
  3. 對(duì)數(shù)據(jù)域中的數(shù)據(jù)進(jìn)行可度量化的拆解與分析;(度量指標(biāo)拆解)
  4. 針對(duì)解決域中的方法以及分解出的具體指標(biāo),制定實(shí)施方案;(具體實(shí)施)
  5. 實(shí)施完成后可以產(chǎn)出數(shù)據(jù)與報(bào)表。針對(duì)結(jié)果進(jìn)行評(píng)估平調(diào)整整個(gè)解決過程。(持續(xù)優(yōu)化)
  • 指標(biāo)系統(tǒng)目標(biāo):

“指標(biāo)體系”這個(gè)概念是應(yīng)用比較廣泛的,我們從正式出版物中摘取一個(gè)定義:指標(biāo)體系,即統(tǒng)計(jì)指標(biāo)體系,是由一系列具有相互聯(lián)系的指標(biāo)所組成的整體,可以從各個(gè)側(cè)面完整地反映現(xiàn)象總體或樣本的數(shù)量特征。

統(tǒng)計(jì)指標(biāo)體系從其功能和作用不同,可分為描述統(tǒng)計(jì)指標(biāo)體系,評(píng)價(jià)統(tǒng)計(jì)指標(biāo)體系和預(yù)警統(tǒng)計(jì)指標(biāo)體系三種。描述統(tǒng)計(jì)指標(biāo)體系是由若干對(duì)社會(huì)經(jīng)濟(jì)活動(dòng)狀況做出完整而系統(tǒng)描述的基礎(chǔ)指標(biāo)所組成的。評(píng)價(jià)統(tǒng)計(jì)指標(biāo)體系是由若干對(duì)社會(huì)經(jīng)濟(jì)行為結(jié)果進(jìn)行比較、評(píng)估、考核,以檢查其工作和綜合效益的統(tǒng)計(jì)指標(biāo)所組成。預(yù)警統(tǒng)計(jì)指標(biāo)體系主要用于對(duì)社會(huì)經(jīng)濟(jì)宏觀運(yùn)行的監(jiān)測(cè),并根據(jù)指標(biāo)值的變化,預(yù)報(bào)社會(huì)經(jīng)濟(jì)即將出現(xiàn)的不平衡狀態(tài)、突發(fā)事件及某些結(jié)構(gòu)性障礙等。

引自《統(tǒng)計(jì)學(xué)教程》(主編:王懷偉 清華大學(xué)出版社)

度量體系

從上圖可以看到在軟件行業(yè)內(nèi)指標(biāo)體系可以分為很多種。最終對(duì)客戶有意義的,有價(jià)值的肯定是運(yùn)營(yíng)指標(biāo)體系。運(yùn)行軟件指標(biāo)體系是本次的目標(biāo),主要描述軟件運(yùn)行過程中的一些參數(shù)?!盾浖^程指標(biāo)》、《軟件指令指標(biāo)》、《DevOps指標(biāo)》都是軟件在開發(fā)以及運(yùn)營(yíng)過程中的軟件過程指標(biāo)。

下圖中是指標(biāo)體系的一個(gè)實(shí)例,用于描述DevOps指標(biāo)體系中的一些指標(biāo):


DevOps之度量體系

這個(gè)實(shí)例中描述了DevOps的幾個(gè)指標(biāo)。主要的指標(biāo)目標(biāo)是為了體現(xiàn)DevOps怎樣為客戶提供價(jià)值,并在這個(gè)基礎(chǔ)上提出適應(yīng)多變的環(huán)境(需求環(huán)境,開發(fā)環(huán)境,質(zhì)量環(huán)境,過程環(huán)境等)。

真對(duì)于軟件運(yùn)行指標(biāo)體系的目標(biāo)是提高穩(wěn)定性,減少故障,降低運(yùn)營(yíng)成本。

  • 指標(biāo)分析方法與選型:

在驅(qū)動(dòng)指標(biāo)體系搭建形成閉環(huán)的最后一步就是數(shù)據(jù)應(yīng)用,在采集的數(shù)據(jù)驗(yàn)證無(wú)誤后應(yīng)用于實(shí)際業(yè)務(wù)中,驅(qū)動(dòng)業(yè)務(wù)增長(zhǎng)。常用的分析理論有:4P理論、PESTEL理論、SWOT理論、5W2H理論、邏輯樹理論、用戶使用行為理論、AARRR理論??梢詤⒄眨?a href="http://www.itdecent.cn/p/c62b194269da" target="_blank">數(shù)據(jù)分析方法論(二)——常用數(shù)據(jù)分析方法

真對(duì)于軟件運(yùn)行指標(biāo)體系的目標(biāo),分析方法需要滿足故障檢測(cè),平穩(wěn)程度,自動(dòng)化程度幾個(gè)方向。分析方法以統(tǒng)計(jì)方法為主,統(tǒng)計(jì)故障情況,統(tǒng)計(jì)自動(dòng)化占比,統(tǒng)計(jì)測(cè)試質(zhì)量等。

  • 度量指標(biāo)體系:

上面說明了度量指標(biāo)的目標(biāo)和指標(biāo)分析方法。都是一些通用性的分析,未對(duì)某一個(gè)特定領(lǐng)域中的指標(biāo)體系進(jìn)行分析。一個(gè)特定領(lǐng)域中的指標(biāo)體系包括的內(nèi)容有哪些,這些內(nèi)容起著怎樣的作用。這些內(nèi)容會(huì)在本節(jié)加以分析與描述。

先給出一個(gè)指標(biāo)體系的整體架構(gòu):

指標(biāo)體系結(jié)構(gòu)

上圖出自數(shù)據(jù)體系搭建 | 梳理架構(gòu)和指標(biāo)體系,類似于軟件指標(biāo)定義中提到的內(nèi)容一個(gè)指標(biāo)體系從上到下可以分為:分析(模型,方法),數(shù)據(jù)可視化,基礎(chǔ)數(shù)據(jù)平臺(tái)部分。

分析方法:
在整個(gè)指標(biāo)體系中分析方法提供跟業(yè)務(wù)相關(guān)的,對(duì)業(yè)務(wù)負(fù)責(zé)的內(nèi)容。因?yàn)榉治龇椒ㄊ歉鶕?jù)要解決的問題域進(jìn)行建立的,并對(duì)業(yè)務(wù)是有意義的。分析方法是多變的,在針對(duì)同樣的行業(yè)、同樣的場(chǎng)景、不同的公司時(shí)使用的分析與建模的方法都可能是不同的。因?yàn)榉治龇椒ㄊ钦鎸?duì)大環(huán)境去把控的,所以,需要做的是真對(duì)這些元知識(shí)(分析方法),進(jìn)行分析與總結(jié)之后在應(yīng)用于不同的場(chǎng)景。

從某個(gè)側(cè)面來(lái)說,數(shù)據(jù)分析技術(shù)(大數(shù)據(jù),BI等)最終有意義的方面都是分析方法。具體使用哪項(xiàng)分析方法,怎樣做展示其實(shí)對(duì)整個(gè)數(shù)據(jù)分析來(lái)說意義不大。

數(shù)據(jù)可視化:
數(shù)據(jù)需要展示出來(lái)才可以體現(xiàn)出數(shù)據(jù)的意義,所以,就像敏捷中“交付價(jià)值”一樣。數(shù)據(jù)有了必須要提供價(jià)值才可以展現(xiàn)出數(shù)據(jù)的意義。這里的數(shù)據(jù)可視化的方式還是需要針對(duì)度量進(jìn)行相關(guān)的分析與展示的,或者直接使用相關(guān)的內(nèi)容進(jìn)行展示的能力。下面說明另種可以進(jìn)行定制化的展示的可視化工具。

數(shù)據(jù)基礎(chǔ)平臺(tái):
數(shù)據(jù)基礎(chǔ)平臺(tái)即包括數(shù)據(jù)采集,數(shù)據(jù)接收,數(shù)據(jù)存儲(chǔ),數(shù)據(jù)分析基礎(chǔ)等內(nèi)容。主要滿足基礎(chǔ)的數(shù)據(jù)處理要求,可以與現(xiàn)在流程的DMP概念認(rèn)為是等同的。大數(shù)據(jù)的基礎(chǔ)也就是:

數(shù)據(jù)基礎(chǔ)平臺(tái)基礎(chǔ)棧

數(shù)據(jù)收集部分這里寫的不是很完全,數(shù)據(jù)接收、存儲(chǔ)、分析都還算比較完善,不過也沒有做更多的深入。在之后的實(shí)施部分里會(huì)說明本文的技術(shù)選型。

  1. Grafana是一個(gè)開源的度量分析和可視化套件。它最常用于可視化基礎(chǔ)設(shè)施和應(yīng)用程序分析的時(shí)間序列數(shù)據(jù),但也用于許多其他領(lǐng)域,包括工業(yè)傳感器,家庭自動(dòng)化,天氣和過程控制。
  2. Kibana是一款開源的數(shù)據(jù)分析和可視化平臺(tái),它是 Elastic Stack 成員之一,設(shè)計(jì)用于和 Elasticsearch 協(xié)作。您可以使用 Kibana 對(duì) Elasticsearch 索引中的數(shù)據(jù)進(jìn)行搜索、查看、交互操作。您可以很方便的利用圖表、表格及地圖對(duì)數(shù)據(jù)進(jìn)行多元化的分析和呈現(xiàn)。

至于其他的指標(biāo)可視化工具:Tableau,F(xiàn)indReport,Splunk。都是商業(yè)版軟件,不適合在小公司使用。所以,不會(huì)選擇這些商業(yè)化軟件。

  • 度量指標(biāo)拆解:

上面定義了軟件指標(biāo)的目標(biāo)以及方法,現(xiàn)在需要將度量指標(biāo)體系確定并細(xì)化到可度量級(jí)別。所以,就需要對(duì)指標(biāo)進(jìn)行拆解工作。

事件、參數(shù)和屬性

事件、參數(shù)和屬性說明:先給大家解釋三個(gè)概念,事件、參數(shù)和屬性。事件可以理解為用戶的某個(gè)行為,比如登錄、注冊(cè)、購(gòu)買,都統(tǒng)稱為事件;事件和參數(shù)結(jié)合起來(lái)就是指標(biāo),比如登錄次數(shù)、注冊(cè)人數(shù)、購(gòu)買金額這些我們稱為指標(biāo),而次數(shù)、人數(shù)、金額就是事件的參數(shù)。事件屬性可以從某個(gè)維度對(duì)事件進(jìn)行拆分分析,比如登錄方式就是登錄的屬性,分析不同登錄方式的登錄次數(shù)。

上圖為運(yùn)營(yíng)指標(biāo)的實(shí)例,軟件運(yùn)行指標(biāo)體系的例子服務(wù)從異步消息系統(tǒng)接收到一個(gè)消息。事件即接收到消息,參數(shù)可以是處理時(shí)長(zhǎng)(消息處理時(shí)長(zhǎng)以及消息處理事件)。指標(biāo)是處理時(shí)長(zhǎng)必須在10ms之內(nèi)。屬性是消息可以是定時(shí)任務(wù),異步任務(wù)等等。

下面會(huì)具體的介紹軟件運(yùn)行指標(biāo)體系中會(huì)涉及到的度量。

類別 信息 觸發(fā)機(jī)制 單位 說明
jvm 系統(tǒng)內(nèi)存總量 定時(shí) Kb mem
jvm 空閑內(nèi)存數(shù)量 定時(shí) Kb mem.free
jvm 處理器數(shù)量 初始化 個(gè) processors
jvm 系統(tǒng)正常運(yùn)行時(shí)間 定時(shí) 毫秒 uptime
jvm 應(yīng)用上下文正常運(yùn)行時(shí)間 定時(shí) 毫秒 instance.uptime
jvm 系統(tǒng)平均負(fù)載 定時(shí) 百分比 systemload.average
jvm 堆信息 定時(shí) Kb heap,heap.committed,heap.init,heap.used
jvm 線程信息 定時(shí) 個(gè) threads,thread.peak,thead.daemon
jvm 類加載信息 定時(shí) Info classes,classes.loaded,classes.unloaded
jvm 垃圾收集信息 定時(shí) 個(gè) gc.xxx.count, gc.xxx.time
tomcat 容器session 定時(shí) 個(gè) httpsessions.active,httpsessions.max
數(shù)據(jù)庫(kù) 連接 定時(shí) 個(gè) 最大連接數(shù), 最小連接數(shù), 活動(dòng)連接數(shù),連接池的使用情況
...

指標(biāo)分類:

軟件本來(lái)就是數(shù)字化的事物,不過就是涉及到度量的維度。根據(jù)度量維度的不同,可能會(huì)涉及到很多模糊不清的指標(biāo)。所以針對(duì)每一個(gè)度量指標(biāo)必須遵循SMART原則:

  1. S代表具體(Specific)
  2. M代表可度量(Measurable)
  3. A代表可實(shí)現(xiàn)(Attainable)
  4. R代表現(xiàn)實(shí)性(Realistic)
  5. T代表有時(shí)限(Timebound)

這樣既有度量目標(biāo),又可以具體的去實(shí)施。不存在不可度量的指標(biāo),方便具體的落地實(shí)施工作。

  1. Counter(計(jì)數(shù)器)
    Counter是一個(gè)累計(jì)度量指標(biāo),它是一個(gè)只能遞增的數(shù)值。計(jì)數(shù)器主要用于統(tǒng)計(jì)服務(wù)的請(qǐng)求數(shù)、任務(wù)完成數(shù)和錯(cuò)誤出現(xiàn)的次數(shù)等等。計(jì)數(shù)器是一個(gè)遞增的值。

  2. Gauge(測(cè)量器)
    Gauges是一個(gè)最簡(jiǎn)單的計(jì)量,一般用來(lái)統(tǒng)計(jì)瞬時(shí)狀態(tài)的數(shù)據(jù)信息。它表示一個(gè)既可以遞增, 又可以遞減的值。比如系統(tǒng)中處于pending狀態(tài)的job。

  3. Histogram(柱狀圖)
    Histograms主要使用來(lái)統(tǒng)計(jì)數(shù)據(jù)的分布情況,最大值、最小值、平均值、中位數(shù),百分比(75%、90%、95%、98%、99%和99.9%)。

  4. Meters(碼表)
    Meters用來(lái)度量某個(gè)時(shí)間段的平均處理次數(shù)(request per second),每1、5、15分鐘的TPS。比如一個(gè)service的請(qǐng)求數(shù),通過metrics.meter()實(shí)例化一個(gè)Meter之后,然后通過meter.mark()方法就能將本次請(qǐng)求記錄下來(lái)。統(tǒng)計(jì)結(jié)果有總的請(qǐng)求數(shù),平均每秒的請(qǐng)求數(shù),以及最近的1、5、15分鐘的平均TPS。

  5. Timers(計(jì)時(shí)器)
    Timers主要是用來(lái)統(tǒng)計(jì)某一塊代碼段的執(zhí)行時(shí)間以及其分布情況,具體是基于Histograms和Meters來(lái)實(shí)現(xiàn)的。

以上的度量指標(biāo)分類是從Metrics-Java版的指標(biāo)度量工具之一
Metrics Core整理出來(lái)的。

總結(jié):

本階段主要分析了度量指標(biāo)的成因,以及度量指標(biāo)中相關(guān)的分類方法。所以,這里只介紹了度量指標(biāo)的前期概念。在下面一篇文章中給出相關(guān)的技術(shù)設(shè)計(jì)以及具體實(shí)踐。

參考:

度量
互聯(lián)網(wǎng)運(yùn)營(yíng),該分析哪些數(shù)據(jù)和指標(biāo)
數(shù)據(jù)分析方法論(一)——構(gòu)建數(shù)據(jù)指標(biāo)體系
數(shù)據(jù)分析方法論(二)——常用數(shù)據(jù)分析方法
創(chuàng)業(yè)公司如何構(gòu)建數(shù)據(jù)指標(biāo)體系?
電商數(shù)據(jù)分析基礎(chǔ)指標(biāo)體系
如何搭建指標(biāo)體系
從 0 到 1 搭建數(shù)據(jù)運(yùn)營(yíng)體系
數(shù)據(jù)體系搭建 | 梳理架構(gòu)和指標(biāo)體系

監(jiān)控:

metrics
Metrics-Java版的指標(biāo)度量工具之一
JAVA Metrics度量工具 - Metrics Core 翻譯
第 44 課 度量指標(biāo)(Metrics)
度量指標(biāo)類型

軟件度量指標(biāo):

智能分析最佳實(shí)踐——指標(biāo)邏輯樹
利用Metrics+influxdb+grafana構(gòu)建監(jiān)控
基于dropwizard/metrics ,kafka,zabbix構(gòu)建應(yīng)用統(tǒng)計(jì)數(shù)據(jù)收集展示系統(tǒng)

軟件過程度量指標(biāo):

軟件度量
軟體度量
軟件過程質(zhì)量度量與控制
軟件過程度量模型
軟件度量與軟件過程管理
質(zhì)量度量指標(biāo)設(shè)定分析-1
常見軟件項(xiàng)目度量指標(biāo)介紹
敏捷軟件估算和度量

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容