微服務(wù)實踐目錄,可以參見連接。
起因:
在很多人的想法里認為事務(wù)是無法考量的号胚。無法說明的女器,就想老子所說的:
道可道酸役,非常道。名可名驾胆,非常名涣澡。
人對不了解的事務(wù)的學習與分析過程中有個分歧:
- 追求了解事務(wù)最根本的真相,不斷的分解丧诺、抽象入桂、聯(lián)想去組織處合適的理論。
- 賦予這個事務(wù)神話的色彩驳阎。以神的意志抗愁,解釋不可理解的事務(wù)
對于現(xiàn)代學科來說,現(xiàn)代的理學和文學都最終會歸化到數(shù)學呵晚,數(shù)學會歸化的哲學蜘腌。例如:美學中的黃金比例,文學中的邏輯學劣纲,經(jīng)濟學中統(tǒng)計學等等逢捺。
但是,對于軟件工程一門工程類學科來說無法考量與度量某一項事務(wù)是否是可行癞季?答案自然是明確的軟件工程必須是可以度量的劫瞳,雖然在這么多年的發(fā)展過程中沒有一套完整適應(yīng)時代與技術(shù)的度量方法。但是度量對于一個工程類學科來說是必須的绷柒,而且之后也會不斷的朝著可度量的方向發(fā)展志于。
度量是了解事務(wù)內(nèi)部特征的最基礎(chǔ)的方法。但在國內(nèi)度量其實是從上到下都回避的一件事废睦,所以伺绽,需要考量加入度量指標的時間點,以及加入的度量指標,加入方式等奈应。不過可度量的標準是公司達到一定水平是一個標志澜掩。
本文主要描述度量指標的實踐,上面這些社會學的理論請自行把握杖挣。
度量指標:
在網(wǎng)上找了很多關(guān)于度量肩榕、指標、維度的資料惩妇。這幾個詞可以從《統(tǒng)計學》到《軟件運營》株汉、再從《分析指標體系》到《軟件過程度量模型》。就這幾個詞我找了很大一圈還是沒有找到很好的解釋歌殃,所以乔妈,我就妄自尊大的自己對度量指標進行一個解釋:
度量是指對于一個物體或是事件的某個性質(zhì)給予一個數(shù)字,使其可以和其他物體或是事件的相同性質(zhì)比較氓皱。度量可以是對一物理量(如長度路召、尺寸或容量等)的估計或測定,也可以是其他較抽象的特質(zhì)匀泊。
指標 : 預期中打算達到的指數(shù)优训、規(guī)格朵你、標準
度量出自維基百科各聘,指標出自以上是從Wiki上找到的介紹。簡單的看度量就是描述事物的一個特定方面的數(shù)字抡医。
度量指標(Metrics) : 指用于描述一個物體或事物的某個性質(zhì)的指數(shù)躲因、規(guī)格、標準忌傻,使其可以和其他的物體或者事物的提交大脉。
從軟件的角度講度量即把所有東西都量化、數(shù)據(jù)化水孩、可采集镰矿。指標即表示對這些量化后的數(shù)據(jù)的目標值。維度即標識一個事物某一個側(cè)面的一組指標俘种。
軟件指標定義:
大概說明了度量指標的內(nèi)容之后秤标,接下來以工程化實施方案的思維方式思考如果要實施度量指標需要完成怎樣的工作。借鑒一些ToGAF的概念宙刘,每一項事都是需要有目標的苍姜,在目標的指導下去做具體的實施工作。度量指標工作具體的實施步驟如下:
- 制定度量指標所關(guān)心的目標悬包,所要解決的問題衙猪;(明確要解決的問題域)
- 建立一套針對問題域的分析方法,并找到要進行分析的數(shù)據(jù)域;(制定方法論垫释,解決域)
- 對數(shù)據(jù)域中的數(shù)據(jù)進行可度量化的拆解與分析丝格;(度量指標拆解)
- 針對解決域中的方法以及分解出的具體指標,制定實施方案;(具體實施)
- 實施完成后可以產(chǎn)出數(shù)據(jù)與報表棵譬。針對結(jié)果進行評估平調(diào)整整個解決過程铁追。(持續(xù)優(yōu)化)
-
指標系統(tǒng)目標:
“指標體系”這個概念是應(yīng)用比較廣泛的,我們從正式出版物中摘取一個定義:指標體系茫船,即統(tǒng)計指標體系纵东,是由一系列具有相互聯(lián)系的指標所組成的整體,可以從各個側(cè)面完整地反映現(xiàn)象總體或樣本的數(shù)量特征堪旧。
統(tǒng)計指標體系從其功能和作用不同曹货,可分為描述統(tǒng)計指標體系,評價統(tǒng)計指標體系和預警統(tǒng)計指標體系三種然眼。描述統(tǒng)計指標體系是由若干對社會經(jīng)濟活動狀況做出完整而系統(tǒng)描述的基礎(chǔ)指標所組成的艾船。評價統(tǒng)計指標體系是由若干對社會經(jīng)濟行為結(jié)果進行比較、評估高每、考核屿岂,以檢查其工作和綜合效益的統(tǒng)計指標所組成。預警統(tǒng)計指標體系主要用于對社會經(jīng)濟宏觀運行的監(jiān)測鲸匿,并根據(jù)指標值的變化爷怀,預報社會經(jīng)濟即將出現(xiàn)的不平衡狀態(tài)、突發(fā)事件及某些結(jié)構(gòu)性障礙等带欢。
引自《統(tǒng)計學教程》(主編:王懷偉 清華大學出版社)
從上圖可以看到在軟件行業(yè)內(nèi)指標體系可以分為很多種运授。最終對客戶有意義的,有價值的肯定是運營指標體系乔煞。運行軟件指標體系是本次的目標吁朦,主要描述軟件運行過程中的一些參數(shù)《杉郑《軟件過程指標》逗宜、《軟件指令指標》、《DevOps指標》都是軟件在開發(fā)以及運營過程中的軟件過程指標空骚。
下圖中是指標體系的一個實例纺讲,用于描述DevOps指標體系中的一些指標:
這個實例中描述了DevOps的幾個指標。主要的指標目標是為了體現(xiàn)DevOps怎樣為客戶提供價值府怯,并在這個基礎(chǔ)上提出適應(yīng)多變的環(huán)境(需求環(huán)境刻诊,開發(fā)環(huán)境,質(zhì)量環(huán)境牺丙,過程環(huán)境等)则涯。
真對于軟件運行指標體系的目標是提高穩(wěn)定性复局,減少故障,降低運營成本粟判。
-
指標分析方法與選型:
在驅(qū)動指標體系搭建形成閉環(huán)的最后一步就是數(shù)據(jù)應(yīng)用亿昏,在采集的數(shù)據(jù)驗證無誤后應(yīng)用于實際業(yè)務(wù)中,驅(qū)動業(yè)務(wù)增長档礁。常用的分析理論有:4P理論角钩、PESTEL理論、SWOT理論呻澜、5W2H理論递礼、邏輯樹理論、用戶使用行為理論羹幸、AARRR理論脊髓。可以參照:數(shù)據(jù)分析方法論(二)——常用數(shù)據(jù)分析方法
真對于軟件運行指標體系的目標栅受,分析方法需要滿足故障檢測将硝,平穩(wěn)程度,自動化程度幾個方向屏镊。分析方法以統(tǒng)計方法為主依疼,統(tǒng)計故障情況,統(tǒng)計自動化占比而芥,統(tǒng)計測試質(zhì)量等律罢。
-
度量指標體系:
上面說明了度量指標的目標和指標分析方法。都是一些通用性的分析蔚出,未對某一個特定領(lǐng)域中的指標體系進行分析弟翘。一個特定領(lǐng)域中的指標體系包括的內(nèi)容有哪些虫腋,這些內(nèi)容起著怎樣的作用骄酗。這些內(nèi)容會在本節(jié)加以分析與描述。
先給出一個指標體系的整體架構(gòu):
上圖出自數(shù)據(jù)體系搭建 | 梳理架構(gòu)和指標體系悦冀,類似于軟件指標定義中提到的內(nèi)容一個指標體系從上到下可以分為:分析(模型趋翻,方法),數(shù)據(jù)可視化盒蟆,基礎(chǔ)數(shù)據(jù)平臺部分踏烙。
分析方法:
在整個指標體系中分析方法提供跟業(yè)務(wù)相關(guān)的,對業(yè)務(wù)負責的內(nèi)容历等。因為分析方法是根據(jù)要解決的問題域進行建立的讨惩,并對業(yè)務(wù)是有意義的。分析方法是多變的寒屯,在針對同樣的行業(yè)荐捻、同樣的場景黍少、不同的公司時使用的分析與建模的方法都可能是不同的。因為分析方法是真對大環(huá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ù)可視化的方式還是需要針對度量進行相關(guān)的分析與展示的游添,或者直接使用相關(guān)的內(nèi)容進行展示的能力。下面說明另種可以進行定制化的展示的可視化工具通熄。
數(shù)據(jù)基礎(chǔ)平臺:
數(shù)據(jù)基礎(chǔ)平臺即包括數(shù)據(jù)采集唆涝,數(shù)據(jù)接收,數(shù)據(jù)存儲唇辨,數(shù)據(jù)分析基礎(chǔ)等內(nèi)容廊酣。主要滿足基礎(chǔ)的數(shù)據(jù)處理要求,可以與現(xiàn)在流程的DMP概念認為是等同的赏枚。大數(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ù)進行搜索磷瘤、查看其弊、交互操作。您可以很方便的利用圖表膀斋、表格及地圖對數(shù)據(jù)進行多元化的分析和呈現(xiàn)梭伐。
至于其他的指標可視化工具:Tableau,F(xiàn)indReport仰担,Splunk糊识。都是商業(yè)版軟件,不適合在小公司使用摔蓝。所以赂苗,不會選擇這些商業(yè)化軟件。
-
度量指標拆解:
上面定義了軟件指標的目標以及方法贮尉,現(xiàn)在需要將度量指標體系確定并細化到可度量級別拌滋。所以,就需要對指標進行拆解工作猜谚。
事件、參數(shù)和屬性說明:先給大家解釋三個概念魏铅,事件昌犹、參數(shù)和屬性。事件可以理解為用戶的某個行為览芳,比如登錄斜姥、注冊、購買沧竟,都統(tǒng)稱為事件铸敏;事件和參數(shù)結(jié)合起來就是指標,比如登錄次數(shù)悟泵、注冊人數(shù)杈笔、購買金額這些我們稱為指標,而次數(shù)魁袜、人數(shù)桩撮、金額就是事件的參數(shù)。事件屬性可以從某個維度對事件進行拆分分析峰弹,比如登錄方式就是登錄的屬性,分析不同登錄方式的登錄次數(shù)芜果。
上圖為運營指標的實例鞠呈,軟件運行指標體系的例子服務(wù)從異步消息系統(tǒng)接收到一個消息。事件即接收到消息右钾,參數(shù)可以是處理時長(消息處理時長以及消息處理事件)蚁吝。指標是處理時長必須在10ms之內(nèi)旱爆。屬性是消息可以是定時任務(wù),異步任務(wù)等等窘茁。
下面會具體的介紹軟件運行指標體系中會涉及到的度量怀伦。
類別 | 信息 | 觸發(fā)機制 | 單位 | 說明 |
---|---|---|---|---|
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)平均負載 | 定時 | 百分比 | 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ù),連接池的使用情況 |
... |
指標分類:
軟件本來就是數(shù)字化的事物框冀,不過就是涉及到度量的維度流椒。根據(jù)度量維度的不同,可能會涉及到很多模糊不清的指標明也。所以針對每一個度量指標必須遵循SMART原則:
- S代表具體(Specific)
- M代表可度量(Measurable)
- A代表可實現(xiàn)(Attainable)
- R代表現(xiàn)實性(Realistic)
- T代表有時限(Timebound)
這樣既有度量目標宣虾,又可以具體的去實施。不存在不可度量的指標温数,方便具體的落地實施工作安岂。
Counter(計數(shù)器)
Counter是一個累計度量指標,它是一個只能遞增的數(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)的跷跪。
以上的度量指標分類是從Metrics-Java版的指標度量工具之一和
Metrics Core整理出來的馋嗜。
總結(jié):
本階段主要分析了度量指標的成因,以及度量指標中相關(guān)的分類方法吵瞻。所以葛菇,這里只介紹了度量指標的前期概念。在下面一篇文章中給出相關(guān)的技術(shù)設(shè)計以及具體實踐橡羞。
參考:
度量
互聯(lián)網(wǎng)運營眯停,該分析哪些數(shù)據(jù)和指標
數(shù)據(jù)分析方法論(一)——構(gòu)建數(shù)據(jù)指標體系
數(shù)據(jù)分析方法論(二)——常用數(shù)據(jù)分析方法
創(chuàng)業(yè)公司如何構(gòu)建數(shù)據(jù)指標體系?
電商數(shù)據(jù)分析基礎(chǔ)指標體系
如何搭建指標體系
從 0 到 1 搭建數(shù)據(jù)運營體系
數(shù)據(jù)體系搭建 | 梳理架構(gòu)和指標體系
監(jiān)控:
metrics
Metrics-Java版的指標度量工具之一
JAVA Metrics度量工具 - Metrics Core 翻譯
第 44 課 度量指標(Metrics)
度量指標類型
軟件度量指標:
智能分析最佳實踐——指標邏輯樹
利用Metrics+influxdb+grafana構(gòu)建監(jiān)控
基于dropwizard/metrics 卿泽,kafka莺债,zabbix構(gòu)建應(yīng)用統(tǒng)計數(shù)據(jù)收集展示系統(tǒng)
軟件過程度量指標:
軟件度量
軟體度量
軟件過程質(zhì)量度量與控制
軟件過程度量模型
軟件度量與軟件過程管理
質(zhì)量度量指標設(shè)定分析-1
常見軟件項目度量指標介紹
敏捷軟件估算和度量