概述
我想分享兩部分內(nèi)容:
- 互聯(lián)網(wǎng)上用到的指標收集展現(xiàn)工具丙曙,參考借鑒
- 互聯(lián)網(wǎng)監(jiān)控平臺設(shè)計時的結(jié)構(gòu)層处铛,范圍層殴瘦,表現(xiàn)層的有益參考
指標收集展示工具
思維導(dǎo)圖
這套工具分為三部分:
- 探針采集工具一喘,每個探針都安裝在各個客戶端沾谜,定時采集數(shù)據(jù).網(wǎng)上常用的有用Statsd和collected采集數(shù)據(jù)敛惊。
- 時間序列數(shù)據(jù)庫,有OpenTSDB,InfluxDB渊鞋,采集后的數(shù)據(jù)傳輸?shù)綍r間序列數(shù)據(jù)庫
- 展現(xiàn)端,有Grafanna和Highcharts。
三個環(huán)節(jié)是連環(huán)相扣的瞧挤,先有探針采集工具采集數(shù)據(jù)锡宋,而后時間序列數(shù)據(jù)庫存儲數(shù)據(jù),最后展現(xiàn)端展現(xiàn)各個指標圖特恬。
核心概念
-
Metric(監(jiān)控項,指標): 指標是表示一個向監(jiān)控平臺發(fā)送的按時間排序的數(shù)據(jù)點集合执俩,您可以按時間序列來檢索關(guān)于這些數(shù)據(jù)點的統(tǒng)計數(shù)據(jù)。指標作為監(jiān)控的變量癌刽,指標數(shù)據(jù)代表該變量隨時間變化的值役首。例如,云服務(wù)器的 CPU 利用率是一個指標显拜,云數(shù)據(jù)庫的空間占用率則是另一個指標衡奥。
指標數(shù)據(jù)可以來自任何產(chǎn)品、應(yīng)用程序或業(yè)務(wù)远荠。例如矮固,指標可以是云服務(wù)器的CPU利用率或是用戶業(yè)務(wù)的進程延時。指標通過名稱譬淳、命名空間以及一個或多個維度進行唯一定義档址。每個數(shù)據(jù)點都有一個時間戳和一個度量單位(可選)盹兢。對云監(jiān)控存儲的指標數(shù)據(jù)發(fā)起請求時,返回的數(shù)據(jù)流通過命名空間辰晕、指標名稱和維度進行識別蛤迎。 - 命名空間: 命名空間是指標的容器。不同命名空間中的指標彼此獨立含友,因此來自不同應(yīng)用程序的指標不會被錯誤地聚合到一起替裆。
- 維度: 維度是對監(jiān)控對象進行唯一標識的 Key/Value 對,指標在確定維度值后才有意義窘问。維度有助于設(shè)計統(tǒng)計數(shù)據(jù)聚合結(jié)構(gòu)辆童。例:機器IP、進程名proc_name惠赫,兩個維度值確定后把鉴,即可確定一個監(jiān)控對象:監(jiān)控對象A(IP=1.1.1.1&proc_name=test)。您需要在將云產(chǎn)品指標數(shù)據(jù)放入監(jiān)控平臺時指定相應(yīng)維度(系統(tǒng)預(yù)設(shè)的指標均已預(yù)設(shè)了相應(yīng)的維度)儿咱,在檢索時使用沒有定義的維度會出現(xiàn)錯誤庭砍。
- 時間戳: 在監(jiān)控平臺中每個指標數(shù)據(jù)點必須有一個時間標記,表示此原始數(shù)據(jù)采集的時間混埠。在請求中使用的時間戳必須為 dateTime 對象怠缸,并包含完整的日期及小時、分鐘和秒钳宪,例如:2000-01-31 23:59:59
-
單位 單位是指標原始數(shù)據(jù)的度量單位揭北,應(yīng)用程序根據(jù)數(shù)據(jù)單位得到有用的語法信息。例如吏颖,CVM的外網(wǎng)出方向帶寬指標的單位是Mbps搔体,因為網(wǎng)絡(luò)帶寬常以兆比特每秒(Mbps)來衡量當前網(wǎng)絡(luò)速度。下方列表提供了一些常見單位:
秒(時間單位)
Byte(字節(jié)半醉,常表示數(shù)據(jù)大小疚俱。 1 Byte=8 bit )
bit(比特,數(shù)據(jù)的最小單位缩多。)
%(百分比)
次(計數(shù)單位)
Bps(每秒字節(jié)數(shù))
bps(每秒比特數(shù)) - 時間段: 時間段是監(jiān)控統(tǒng)計數(shù)據(jù)的間隔時間長度计螺,每個時間戳數(shù)據(jù)代表在指定時間段內(nèi)對收集的所有數(shù)據(jù)進行聚合的結(jié)果。盡管時間段以秒表示瞧壮,但是時間段的最小粒度為一分鐘。因此匙握,您指定的時間段值應(yīng)為 60 的倍數(shù)咆槽。例如,要指定六分鐘的時間段圈纺,應(yīng)該使用值 360秦忿。
指標主要分三種
- 應(yīng)用監(jiān)控指標如:可用性麦射、異常、吞吐量灯谣、響應(yīng)時間潜秋、當前等待筆數(shù)、資源占用率胎许、請求量峻呛、日志大小、性能辜窑、隊列深度钩述、線程數(shù)、服務(wù)調(diào)用次數(shù)穆碎、訪問量牙勘、服務(wù)可用性等。
- 業(yè)務(wù)監(jiān)控指標如大額流水所禀、流水區(qū)域方面、流水明細、請求筆數(shù)色徘、響應(yīng)時間恭金、響應(yīng)筆數(shù)等。
- 系統(tǒng)監(jiān)控指標如:CPU負載贺氓、內(nèi)存負載蔚叨、磁盤負載、網(wǎng)絡(luò)IO辙培、磁盤IO蔑水、tcp連接數(shù)、進程數(shù)等扬蕊。
從采集方式來說通巢蟊穑可以分為接口采集、客戶端agent采集尾抑、通過網(wǎng)絡(luò)協(xié)議主動抓刃浮(http、snmp等)
常用的系統(tǒng)監(jiān)控指標
逐項介紹
statsd
StatsD 就是一個簡單的網(wǎng)絡(luò)守護進程再愈,基于 Node.js 平臺榜苫,通過 UDP 或者 TCP 方式偵聽各種統(tǒng)計信息,包括計數(shù)器和定時器翎冲,并發(fā)送聚合信息到后端服務(wù)垂睬,如 Graphite。
它基于兩大功能:計數(shù)和計時。普遍及支持多種語言——有基于 Ruby驹饺,Python, Java, erlang, Node, Scala, Go, haskell 等幾乎所有語言的客戶端钳枕。
說重點,statsd主要用于應(yīng)用程序的指標監(jiān)控赏壹,它致力于收集從你代碼中發(fā)送出去的本地性能指標鱼炒。基于個性化需求蝌借,可以通過 Statsd 收集任何想要的數(shù)據(jù)
StatsD的更詳細內(nèi)容
collectd
collectd也是一個簡單的守護進程昔瞧,用來收集系統(tǒng)性能數(shù)據(jù)和提供各種存儲方式來存儲不同值的機制,通過插件,更靈活的收集指標**
collectd官網(wǎng)
collectd收集的系統(tǒng)指標
influxDB
InfluxDB 是一個開源分布式時序骨望、事件和指標數(shù)據(jù)庫硬爆。使用 Go 語言編寫,無需外部依賴擎鸠。其設(shè)計目標是實現(xiàn)分布式和水平伸縮擴展缀磕。
它有三大特性:
- Time Series (時間序列):你可以使用與時間有關(guān)的相關(guān)函數(shù)(如最大,最小劣光,求和等)
- Metrics(度量):你可以實時對大量數(shù)據(jù)進行計算
- Eevents(事件):它支持任意的事件數(shù)據(jù)
infludDB的下載:
wget https://dl.influxdata.com/influxdb/releases/influxdb_1.2.0_amd64.deb
sudo dpkg -i influxdb_1.2.0_amd64.deb
influxDB的更多內(nèi)容
做的比較詳細的幫助手冊
Grafana
Grafana是純 Javascript 開發(fā)的前端工具袜蚕,用于訪問 InfluxDB,自定義報表绢涡、顯示圖表等牲剃。
- grafana是用于可視化大型測量數(shù)據(jù)的開源程序,他提供了強大和優(yōu)雅的方式去創(chuàng)建雄可、共享凿傅、瀏覽數(shù)據(jù)。dashboard中顯示了你不同metric數(shù)據(jù)源中的數(shù)據(jù)数苫。
- grafana最常用于因特網(wǎng)基礎(chǔ)設(shè)施和應(yīng)用分析聪舒,但在其他領(lǐng)域也有機會用到,比如:工業(yè)傳感器虐急、家庭自動化箱残、過程控制等等。
- grafana有熱插拔控制面板和可擴展的數(shù)據(jù)源止吁,目前已經(jīng)支持Graphite被辑、InfluxDB、OpenTSDB敬惦、Elasticsearch盼理。
Grafana圖例
還需要研究的
- 怎么在Grafana上二次開發(fā),漢化等
- 是否適應(yīng)我們的業(yè)務(wù)需求
Highcharts
Highcharts 是一個用純JavaScript編寫的一個圖表庫俄删。
Highcharts 能夠很簡單便捷的在web網(wǎng)站或是web應(yīng)用程序添加有交互性的圖表
目前阿里的監(jiān)控平臺GoldenEyes前端圖標展現(xiàn)是用Highcharts榜揖。
目前Highcharts用于商業(yè)用途要收費
HIghcharts支持監(jiān)控平臺的各種圖例勾哩。
HighCharts 特性
- 兼容性 - 支持所有主流瀏覽器和移動平臺(android、iOS等)举哟。
- 多設(shè)備 - 支持多種設(shè)備,如手持設(shè)備 iPhone/iPad迅矛、平板等妨猩。
- 免費使用 - 開源免費。
- 輕量 - highcharts.js 內(nèi)核庫大小只有 35KB 左右秽褒。
- 配置簡單 - 使用 json 格式配置
- 動態(tài) - 可以在圖表生成后修改壶硅。
- 多維 - 支持多維圖表
- 配置提示工具 - 鼠標移動到圖表的某一點上有提示信息。
- 時間軸 - 可以精確到毫秒销斟。
- 導(dǎo)出 - 表格可導(dǎo)出為 PDF/ PNG/ JPG / SVG 格式
- 輸出 - 網(wǎng)頁輸出圖表庐椒。
- 可變焦 - 選中圖表部分放大,近距離觀察圖表蚂踊;
- 外部數(shù)據(jù) - 從服務(wù)器載入動態(tài)數(shù)據(jù)约谈。
- 文字旋轉(zhuǎn) - 支持在任意方向的標簽旋轉(zhuǎn)。
HighCharts官網(wǎng)
監(jiān)控常用圖標展現(xiàn)
圖表展現(xiàn):支持折線圖犁钟、面積圖棱诱、熱力圖、餅圖涝动、表格迈勋。
a. 折線圖:按時間序列展示監(jiān)控數(shù)據(jù)〈姿冢可以添加多個監(jiān)控項靡菇。
b. 面積圖:按時間序列顯示監(jiān)控數(shù)據(jù),可以添加多個監(jiān)控項米愿。
c. 熱力圖:顯示監(jiān)控項的實時數(shù)據(jù)厦凤。用于展示多個實例指定監(jiān)控項的實時監(jiān)控數(shù)據(jù)分布與對比。例如展示多個實例CPU使用率的水位分布情況吗货。只能添加一個監(jiān)控項泳唠。
d. 餅圖:顯示監(jiān)控項的實時數(shù)據(jù)。常用于數(shù)據(jù)的對比宙搬”啃龋可以添加多個監(jiān)控項。
e. 表格:實時顯示監(jiān)控項數(shù)據(jù)值由大到小的排序勇垛。例如ECS分組中所有機器CPU使用率從大到小的排序脖母。只能添加一個監(jiān)控項。
詳情參考阿里云幫助文檔
互聯(lián)網(wǎng)平臺參考設(shè)計
平臺導(dǎo)航參考
監(jiān)控導(dǎo)航目前有兩種方式:
1.一個大平臺闲孤,做成多個小應(yīng)用(app)谆级,用戶登錄后烤礁,先選擇應(yīng)用后進入:
- 分成二級三級導(dǎo)航,用戶進入后肥照,有個首頁概覽脚仔,后登錄各二級頁面做詳細操作
OneApm的結(jié)構(gòu)層思維導(dǎo)圖
平臺
平臺列表則會列出已經(jīng)監(jiān)控的平臺。
點擊后可以看平臺詳細舆绎,平臺操作系統(tǒng)及平臺服務(wù)的詳細指標
儀表盤
儀表盤是支持增刪改鲤脏,支持客戶定制,支持客戶收藏和分享
儀表盤是 Cloudinsight 查看性能指標吕朵,以及平臺負載情況猎醇,和平臺服務(wù)的運行情況的主要形式。
儀表盤的設(shè)計思路是:
儀表盤針對采集到的性能指標努溃,進行處理后硫嘶,提供可視化方式進行展現(xiàn)。儀表盤按照操作類型可分為:
自定義儀表盤
平臺服務(wù)儀表盤
自定義數(shù)據(jù)儀表盤
Metric查詢:
支持圖表分享也是一個亮點
直接分享可以查看的URL梧税,您可以拷貝并通過郵件發(fā)送給需要查看數(shù)據(jù)的其他人
iframe的版本沦疾,您可以將其粘貼至自己的代碼中,嵌入到自己的系統(tǒng)中
通過手機掃描二維碼贡蓖,通過手機分享給其他人
其他平臺有益參考
騰訊云
騰訊云做的產(chǎn)品和我們類似曹鸠,特別是監(jiān)控平臺,容器服務(wù)斥铺,彈性伸縮彻桃,大數(shù)據(jù)與AI方面都可以做很多參考。
騰訊云幫助文檔
阿里云
阿里云也一樣
阿里云幫助文檔
阿里云監(jiān)控平臺的DashBoard設(shè)計:
展示多個實例的監(jiān)控數(shù)據(jù)走勢
例如您的一個應(yīng)用部署在多臺ECS實例上晾蜘,可以將部署了相同應(yīng)用的多臺ECS實例監(jiān)控信息添加在同一張監(jiān)控圖表中邻眷,查看相關(guān)多臺機器的監(jiān)控數(shù)據(jù)變化趨勢。 例如在一張圖表中同時展示ECS多個實例各自的CPU使用率的時間序走勢剔交。
展示多個監(jiān)控項的數(shù)據(jù)對比
例如在一張圖表中展示ECS同一個實例的CPU使用率肆饶、內(nèi)存使用率、磁盤使用率等多個指標岖常。
展示機器的資源消耗排序
例如您有20臺機器驯镊,通過表格展示可以查看20臺機器的CPU使用率從大到小的排序〗甙埃快速了解資源消耗情況板惑,更合理的使用資源,減少不必要的花費偎快。
展示多個實例的監(jiān)控數(shù)據(jù)實時分布
例如通過熱力圖冯乘,展示一組ECS實例的CPU使用率分布情況,知曉每臺機器的CPU使用率和其他機器相比晒夹,處于什么水平裆馒。點擊色塊姊氓,可以查看該機器一段時間內(nèi)的監(jiān)控數(shù)據(jù)走勢。
展示多個實例某一監(jiān)控項的聚合數(shù)據(jù)
例如在一張圖表中查看ECS多個實例的CPU使用率的平均聚合值喷好,從而了解整體的CPU使用率水位翔横,判斷是否各個實例資源使用不均。
全景盯屏展示
Dashboard支持全屏展示和自動刷新绒窑,可以將您的各類產(chǎn)品指標添加到監(jiān)控大盤后在運維大屏上全屏展示棕孙。
監(jiān)控大盤參數(shù)說明
選擇時間范圍:點擊監(jiān)控大盤頁面上方的時間選擇按鈕,可以快速選擇大盤中圖表展示的監(jiān)控數(shù)據(jù)時間范圍些膨。時間選擇的作用范圍是會是監(jiān)控大盤的全部圖表。
自動刷新:開啟“自動刷新”按鈕后钦铺,當您選擇查詢“1小時”订雾、“3小時”、“6小時”的查詢時間跨度時矛洞,可開啟自動刷新功能洼哎,每分鐘刷新一次。
監(jiān)控項的單位展示在圖表名稱的括號內(nèi)沼本。
鼠標跟隨顯示所有圖表相同時間的監(jiān)控值抽兆。
百度云
百度云也可以參考,特別是智慧引擎辫红,AI,大數(shù)據(jù)分析這塊
百度云幫助文檔
小米開源的監(jiān)控平臺
小米開源的監(jiān)控平臺,做的很不錯澎胡。
open-falcon的目標是做最開放巢株、最好用的互聯(lián)網(wǎng)企業(yè)級監(jiān)控產(chǎn)品困檩。
小米糟趾,京東,美團,趕集都是基于這個平臺深度定制。
目前我還沒時間深入研究。
小米open-falcon