微服務(wù)實踐目錄,可以參見連接。
起因:
在很多人的想法里認(rèn)為事務(wù)是無法考量的。無法說明的,就想老子所說的:
道可道,非常道。名可名,非常名。
人對不了解的事務(wù)的學(xué)習(xí)與分析過程中有個分歧:
- 追求了解事務(wù)最根本的真相,不斷的分解、抽象、聯(lián)想去組織處合適的理論。
- 賦予這個事務(wù)神話的色彩。以神的意志,解釋不可理解的事務(wù)
對于現(xiàn)代學(xué)科來說,現(xiàn)代的理學(xué)和文學(xué)都最終會歸化到數(shù)學(xué),數(shù)學(xué)會歸化的哲學(xué)。例如:美學(xué)中的黃金比例,文學(xué)中的邏輯學(xué),經(jīng)濟(jì)學(xué)中統(tǒng)計學(xué)等等。
但是,對于軟件工程一門工程類學(xué)科來說無法考量與度量某一項事務(wù)是否是可行?答案自然是明確的軟件工程必須是可以度量的,雖然在這么多年的發(fā)展過程中沒有一套完整適應(yīng)時代與技術(shù)的度量方法。但是度量對于一個工程類學(xué)科來說是必須的,而且之后也會不斷的朝著可度量的方向發(fā)展。
度量是了解事務(wù)內(nèi)部特征的最基礎(chǔ)的方法。但在國內(nèi)度量其實是從上到下都回避的一件事,所以,需要考量加入度量指標(biāo)的時間點,以及加入的度量指標(biāo),加入方式等。不過可度量的標(biāo)準(zhǔn)是公司達(dá)到一定水平是一個標(biāo)志。
本文主要描述度量指標(biāo)的實踐,上面這些社會學(xué)的理論請自行把握。
度量指標(biāo):
在網(wǎng)上找了很多關(guān)于度量、指標(biāo)、維度的資料。這幾個詞可以從《統(tǒng)計學(xué)》到《軟件運營》、再從《分析指標(biāo)體系》到《軟件過程度量模型》。就這幾個詞我找了很大一圈還是沒有找到很好的解釋,所以,我就妄自尊大的自己對度量指標(biāo)進(jìn)行一個解釋:
度量是指對于一個物體或是事件的某個性質(zhì)給予一個數(shù)字,使其可以和其他物體或是事件的相同性質(zhì)比較。度量可以是對一物理量(如長度、尺寸或容量等)的估計或測定,也可以是其他較抽象的特質(zhì)。
指標(biāo) : 預(yù)期中打算達(dá)到的指數(shù)、規(guī)格、標(biāo)準(zhǔn)
度量出自維基百科,指標(biāo)出自以上是從Wiki上找到的介紹。簡單的看度量就是描述事物的一個特定方面的數(shù)字。
度量指標(biāo)(Metrics) : 指用于描述一個物體或事物的某個性質(zhì)的指數(shù)、規(guī)格、標(biāo)準(zhǔn),使其可以和其他的物體或者事物的提交。
從軟件的角度講度量即把所有東西都量化、數(shù)據(jù)化、可采集。指標(biāo)即表示對這些量化后的數(shù)據(jù)的目標(biāo)值。維度即標(biāo)識一個事物某一個側(cè)面的一組指標(biāo)。
軟件指標(biāo)定義:
大概說明了度量指標(biāo)的內(nèi)容之后,接下來以工程化實施方案的思維方式思考如果要實施度量指標(biāo)需要完成怎樣的工作。借鑒一些ToGAF的概念,每一項事都是需要有目標(biāo)的,在目標(biāo)的指導(dǎo)下去做具體的實施工作。度量指標(biāo)工作具體的實施步驟如下:
- 制定度量指標(biāo)所關(guān)心的目標(biāo),所要解決的問題;(明確要解決的問題域)
- 建立一套針對問題域的分析方法,并找到要進(jìn)行分析的數(shù)據(jù)域;(制定方法論,解決域)
- 對數(shù)據(jù)域中的數(shù)據(jù)進(jìn)行可度量化的拆解與分析;(度量指標(biāo)拆解)
- 針對解決域中的方法以及分解出的具體指標(biāo),制定實施方案;(具體實施)
- 實施完成后可以產(chǎn)出數(shù)據(jù)與報表。針對結(jié)果進(jìn)行評估平調(diào)整整個解決過程。(持續(xù)優(yōu)化)
-
指標(biāo)系統(tǒng)目標(biāo):
“指標(biāo)體系”這個概念是應(yīng)用比較廣泛的,我們從正式出版物中摘取一個定義:指標(biāo)體系,即統(tǒng)計指標(biāo)體系,是由一系列具有相互聯(lián)系的指標(biāo)所組成的整體,可以從各個側(cè)面完整地反映現(xiàn)象總體或樣本的數(shù)量特征。
統(tǒng)計指標(biāo)體系從其功能和作用不同,可分為描述統(tǒng)計指標(biāo)體系,評價統(tǒng)計指標(biāo)體系和預(yù)警統(tǒng)計指標(biāo)體系三種。描述統(tǒng)計指標(biāo)體系是由若干對社會經(jīng)濟(jì)活動狀況做出完整而系統(tǒng)描述的基礎(chǔ)指標(biāo)所組成的。評價統(tǒng)計指標(biāo)體系是由若干對社會經(jīng)濟(jì)行為結(jié)果進(jìn)行比較、評估、考核,以檢查其工作和綜合效益的統(tǒng)計指標(biāo)所組成。預(yù)警統(tǒng)計指標(biāo)體系主要用于對社會經(jīng)濟(jì)宏觀運行的監(jiān)測,并根據(jù)指標(biāo)值的變化,預(yù)報社會經(jīng)濟(jì)即將出現(xiàn)的不平衡狀態(tài)、突發(fā)事件及某些結(jié)構(gòu)性障礙等。
引自《統(tǒng)計學(xué)教程》(主編:王懷偉 清華大學(xué)出版社)
從上圖可以看到在軟件行業(yè)內(nèi)指標(biāo)體系可以分為很多種。最終對客戶有意義的,有價值的肯定是運營指標(biāo)體系。運行軟件指標(biāo)體系是本次的目標(biāo),主要描述軟件運行過程中的一些參數(shù)?!盾浖^程指標(biāo)》、《軟件指令指標(biāo)》、《DevOps指標(biāo)》都是軟件在開發(fā)以及運營過程中的軟件過程指標(biāo)。
下圖中是指標(biāo)體系的一個實例,用于描述DevOps指標(biāo)體系中的一些指標(biāo):
這個實例中描述了DevOps的幾個指標(biāo)。主要的指標(biāo)目標(biāo)是為了體現(xiàn)DevOps怎樣為客戶提供價值,并在這個基礎(chǔ)上提出適應(yīng)多變的環(huán)境(需求環(huán)境,開發(fā)環(huán)境,質(zhì)量環(huán)境,過程環(huán)境等)。
真對于軟件運行指標(biāo)體系的目標(biāo)是提高穩(wěn)定性,減少故障,降低運營成本。
-
指標(biāo)分析方法與選型:
在驅(qū)動指標(biāo)體系搭建形成閉環(huán)的最后一步就是數(shù)據(jù)應(yīng)用,在采集的數(shù)據(jù)驗證無誤后應(yīng)用于實際業(yè)務(wù)中,驅(qū)動業(yè)務(wù)增長。常用的分析理論有:4P理論、PESTEL理論、SWOT理論、5W2H理論、邏輯樹理論、用戶使用行為理論、AARRR理論??梢詤⒄眨?a href="http://www.lxweimin.com/p/c62b194269da" target="_blank">數(shù)據(jù)分析方法論(二)——常用數(shù)據(jù)分析方法
真對于軟件運行指標(biāo)體系的目標(biāo),分析方法需要滿足故障檢測,平穩(wěn)程度,自動化程度幾個方向。分析方法以統(tǒng)計方法為主,統(tǒng)計故障情況,統(tǒng)計自動化占比,統(tǒng)計測試質(zhì)量等。
-
度量指標(biāo)體系:
上面說明了度量指標(biāo)的目標(biāo)和指標(biāo)分析方法。都是一些通用性的分析,未對某一個特定領(lǐng)域中的指標(biāo)體系進(jìn)行分析。一個特定領(lǐng)域中的指標(biāo)體系包括的內(nèi)容有哪些,這些內(nèi)容起著怎樣的作用。這些內(nèi)容會在本節(jié)加以分析與描述。
先給出一個指標(biāo)體系的整體架構(gòu):
上圖出自數(shù)據(jù)體系搭建 | 梳理架構(gòu)和指標(biāo)體系,類似于軟件指標(biāo)定義中提到的內(nèi)容一個指標(biāo)體系從上到下可以分為:分析(模型,方法),數(shù)據(jù)可視化,基礎(chǔ)數(shù)據(jù)平臺部分。
分析方法:
在整個指標(biāo)體系中分析方法提供跟業(yè)務(wù)相關(guān)的,對業(yè)務(wù)負(fù)責(zé)的內(nèi)容。因為分析方法是根據(jù)要解決的問題域進(jìn)行建立的,并對業(yè)務(wù)是有意義的。分析方法是多變的,在針對同樣的行業(yè)、同樣的場景、不同的公司時使用的分析與建模的方法都可能是不同的。因為分析方法是真對大環(huán)境去把控的,所以,需要做的是真對這些元知識(分析方法),進(jìn)行分析與總結(jié)之后在應(yīng)用于不同的場景。
從某個側(cè)面來說,數(shù)據(jù)分析技術(shù)(大數(shù)據(jù),BI等)最終有意義的方面都是分析方法。具體使用哪項分析方法,怎樣做展示其實對整個數(shù)據(jù)分析來說意義不大。
數(shù)據(jù)可視化:
數(shù)據(jù)需要展示出來才可以體現(xiàn)出數(shù)據(jù)的意義,所以,就像敏捷中“交付價值”一樣。數(shù)據(jù)有了必須要提供價值才可以展現(xiàn)出數(shù)據(jù)的意義。這里的數(shù)據(jù)可視化的方式還是需要針對度量進(jìn)行相關(guān)的分析與展示的,或者直接使用相關(guān)的內(nèi)容進(jìn)行展示的能力。下面說明另種可以進(jìn)行定制化的展示的可視化工具。
數(shù)據(jù)基礎(chǔ)平臺:
數(shù)據(jù)基礎(chǔ)平臺即包括數(shù)據(jù)采集,數(shù)據(jù)接收,數(shù)據(jù)存儲,數(shù)據(jù)分析基礎(chǔ)等內(nèi)容。主要滿足基礎(chǔ)的數(shù)據(jù)處理要求,可以與現(xiàn)在流程的DMP概念認(rèn)為是等同的。大數(shù)據(jù)的基礎(chǔ)也就是:
數(shù)據(jù)收集部分這里寫的不是很完全,數(shù)據(jù)接收、存儲、分析都還算比較完善,不過也沒有做更多的深入。在之后的實施部分里會說明本文的技術(shù)選型。
- Grafana是一個開源的度量分析和可視化套件。它最常用于可視化基礎(chǔ)設(shè)施和應(yīng)用程序分析的時間序列數(shù)據(jù),但也用于許多其他領(lǐng)域,包括工業(yè)傳感器,家庭自動化,天氣和過程控制。
- Kibana是一款開源的數(shù)據(jù)分析和可視化平臺,它是 Elastic Stack 成員之一,設(shè)計用于和 Elasticsearch 協(xié)作。您可以使用 Kibana 對 Elasticsearch 索引中的數(shù)據(jù)進(jìn)行搜索、查看、交互操作。您可以很方便的利用圖表、表格及地圖對數(shù)據(jù)進(jìn)行多元化的分析和呈現(xiàn)。
至于其他的指標(biāo)可視化工具:Tableau,F(xiàn)indReport,Splunk。都是商業(yè)版軟件,不適合在小公司使用。所以,不會選擇這些商業(yè)化軟件。
-
度量指標(biāo)拆解:
上面定義了軟件指標(biāo)的目標(biāo)以及方法,現(xiàn)在需要將度量指標(biāo)體系確定并細(xì)化到可度量級別。所以,就需要對指標(biāo)進(jìn)行拆解工作。
事件、參數(shù)和屬性說明:先給大家解釋三個概念,事件、參數(shù)和屬性。事件可以理解為用戶的某個行為,比如登錄、注冊、購買,都統(tǒng)稱為事件;事件和參數(shù)結(jié)合起來就是指標(biāo),比如登錄次數(shù)、注冊人數(shù)、購買金額這些我們稱為指標(biāo),而次數(shù)、人數(shù)、金額就是事件的參數(shù)。事件屬性可以從某個維度對事件進(jìn)行拆分分析,比如登錄方式就是登錄的屬性,分析不同登錄方式的登錄次數(shù)。
上圖為運營指標(biāo)的實例,軟件運行指標(biāo)體系的例子服務(wù)從異步消息系統(tǒng)接收到一個消息。事件即接收到消息,參數(shù)可以是處理時長(消息處理時長以及消息處理事件)。指標(biāo)是處理時長必須在10ms之內(nèi)。屬性是消息可以是定時任務(wù),異步任務(wù)等等。
下面會具體的介紹軟件運行指標(biāo)體系中會涉及到的度量。
類別 | 信息 | 觸發(fā)機(jī)制 | 單位 | 說明 |
---|---|---|---|---|
jvm | 系統(tǒng)內(nèi)存總量 | 定時 | Kb | mem |
jvm | 空閑內(nèi)存數(shù)量 | 定時 | Kb | mem.free |
jvm | 處理器數(shù)量 | 初始化 | 個 | processors |
jvm | 系統(tǒng)正常運行時間 | 定時 | 毫秒 | uptime |
jvm | 應(yīng)用上下文正常運行時間 | 定時 | 毫秒 | instance.uptime |
jvm | 系統(tǒng)平均負(fù)載 | 定時 | 百分比 | systemload.average |
jvm | 堆信息 | 定時 | Kb | heap,heap.committed,heap.init,heap.used |
jvm | 線程信息 | 定時 | 個 | threads,thread.peak,thead.daemon |
jvm | 類加載信息 | 定時 | Info | classes,classes.loaded,classes.unloaded |
jvm | 垃圾收集信息 | 定時 | 個 | gc.xxx.count, gc.xxx.time |
tomcat | 容器session | 定時 | 個 | httpsessions.active,httpsessions.max |
數(shù)據(jù)庫 | 連接 | 定時 | 個 | 最大連接數(shù), 最小連接數(shù), 活動連接數(shù),連接池的使用情況 |
... |
指標(biāo)分類:
軟件本來就是數(shù)字化的事物,不過就是涉及到度量的維度。根據(jù)度量維度的不同,可能會涉及到很多模糊不清的指標(biāo)。所以針對每一個度量指標(biāo)必須遵循SMART原則:
- S代表具體(Specific)
- M代表可度量(Measurable)
- A代表可實現(xiàn)(Attainable)
- R代表現(xiàn)實性(Realistic)
- T代表有時限(Timebound)
這樣既有度量目標(biāo),又可以具體的去實施。不存在不可度量的指標(biāo),方便具體的落地實施工作。
Counter(計數(shù)器)
Counter是一個累計度量指標(biāo),它是一個只能遞增的數(shù)值。計數(shù)器主要用于統(tǒng)計服務(wù)的請求數(shù)、任務(wù)完成數(shù)和錯誤出現(xiàn)的次數(shù)等等。計數(shù)器是一個遞增的值。Gauge(測量器)
Gauges是一個最簡單的計量,一般用來統(tǒng)計瞬時狀態(tài)的數(shù)據(jù)信息。它表示一個既可以遞增, 又可以遞減的值。比如系統(tǒng)中處于pending狀態(tài)的job。Histogram(柱狀圖)
Histograms主要使用來統(tǒng)計數(shù)據(jù)的分布情況,最大值、最小值、平均值、中位數(shù),百分比(75%、90%、95%、98%、99%和99.9%)。Meters(碼表)
Meters用來度量某個時間段的平均處理次數(shù)(request per second),每1、5、15分鐘的TPS。比如一個service的請求數(shù),通過metrics.meter()實例化一個Meter之后,然后通過meter.mark()方法就能將本次請求記錄下來。統(tǒng)計結(jié)果有總的請求數(shù),平均每秒的請求數(shù),以及最近的1、5、15分鐘的平均TPS。Timers(計時器)
Timers主要是用來統(tǒng)計某一塊代碼段的執(zhí)行時間以及其分布情況,具體是基于Histograms和Meters來實現(xiàn)的。
以上的度量指標(biāo)分類是從Metrics-Java版的指標(biāo)度量工具之一和
Metrics Core整理出來的。
總結(jié):
本階段主要分析了度量指標(biāo)的成因,以及度量指標(biāo)中相關(guān)的分類方法。所以,這里只介紹了度量指標(biāo)的前期概念。在下面一篇文章中給出相關(guān)的技術(shù)設(shè)計以及具體實踐。
參考:
度量
互聯(lián)網(wǎ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ù)運營體系
數(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):
智能分析最佳實踐——指標(biāo)邏輯樹
利用Metrics+influxdb+grafana構(gòu)建監(jiān)控
基于dropwizard/metrics ,kafka,zabbix構(gòu)建應(yīng)用統(tǒng)計數(shù)據(jù)收集展示系統(tǒng)
軟件過程度量指標(biāo):
軟件度量
軟體度量
軟件過程質(zhì)量度量與控制
軟件過程度量模型
軟件度量與軟件過程管理
質(zhì)量度量指標(biāo)設(shè)定分析-1
常見軟件項目度量指標(biāo)介紹
敏捷軟件估算和度量