监控指标收集展现工具的研究和思考

概述

我想分享两部分内容:

  1. 互联网上用到的指标收集展现工具,参考借鉴
  2. 互联网监控平台设计时的结构层,范围层,表现层的有益参考

指标收集展示工具

思维导图

Paste_Image.png

这套工具分为三部分:

  1. 探针采集工具,每个探针都安装在各个客户端,定时采集数据.网上常用的有用Statsd和collected采集数据。
  2. 时间序列数据库,有OpenTSDB,InfluxDB,采集后的数据传输到时间序列数据库
  3. 展现端,有Grafanna和Highcharts。

三个环节是连环相扣的,先有探针采集工具采集数据,而后时间序列数据库存储数据,最后展现端展现各个指标图。


Paste_Image.png

核心概念

  1. Metric(监控项,指标): 指标是表示一个向监控平台发送的按时间排序的数据点集合,您可以按时间序列来检索关于这些数据点的统计数据。指标作为监控的变量,指标数据代表该变量随时间变化的值。例如,云服务器的 CPU 利用率是一个指标,云数据库的空间占用率则是另一个指标。
    指标数据可以来自任何产品、应用程序或业务。例如,指标可以是云服务器的CPU利用率或是用户业务的进程延时。指标通过名称、命名空间以及一个或多个维度进行唯一定义。每个数据点都有一个时间戳和一个度量单位(可选)。对云监控存储的指标数据发起请求时,返回的数据流通过命名空间、指标名称和维度进行识别。
  2. 命名空间: 命名空间是指标的容器。不同命名空间中的指标彼此独立,因此来自不同应用程序的指标不会被错误地聚合到一起。
  3. 维度: 维度是对监控对象进行唯一标识的 Key/Value 对,指标在确定维度值后才有意义。维度有助于设计统计数据聚合结构。例:机器IP、进程名proc_name,两个维度值确定后,即可确定一个监控对象:监控对象A(IP=1.1.1.1&proc_name=test)。您需要在将云产品指标数据放入监控平台时指定相应维度(系统预设的指标均已预设了相应的维度),在检索时使用没有定义的维度会出现错误。
  4. 时间戳: 在监控平台中每个指标数据点必须有一个时间标记,表示此原始数据采集的时间。在请求中使用的时间戳必须为 dateTime 对象,并包含完整的日期及小时、分钟和秒,例如:2000-01-31 23:59:59
  5. 单位 单位是指标原始数据的度量单位,应用程序根据数据单位得到有用的语法信息。例如,CVM的外网出方向带宽指标的单位是Mbps,因为网络带宽常以兆比特每秒(Mbps)来衡量当前网络速度。下方列表提供了一些常见单位:
    秒(时间单位)
    Byte(字节,常表示数据大小。 1 Byte=8 bit )
    bit(比特,数据的最小单位。)
    %(百分比)
    次(计数单位)
    Bps(每秒字节数)
    bps(每秒比特数)
  6. 时间段: 时间段是监控统计数据的间隔时间长度,每个时间戳数据代表在指定时间段内对收集的所有数据进行聚合的结果。尽管时间段以秒表示,但是时间段的最小粒度为一分钟。因此,您指定的时间段值应为 60 的倍数。例如,要指定六分钟的时间段,应该使用值 360。
指标主要分三种
  • 应用监控指标如:可用性、异常、吞吐量、响应时间、当前等待笔数、资源占用率、请求量、日志大小、性能、队列深度、线程数、服务调用次数、访问量、服务可用性等。
  • 业务监控指标如大额流水、流水区域、流水明细、请求笔数、响应时间、响应笔数等。
  • 系统监控指标如:CPU负载、内存负载、磁盘负载、网络IO、磁盘IO、tcp连接数、进程数等。
    从采集方式来说通常可以分为接口采集、客户端agent采集、通过网络协议主动抓取(http、snmp等)
    常用的系统监控指标

逐项介绍

statsd

StatsD 就是一个简单的网络守护进程,基于 Node.js 平台,通过 UDP 或者 TCP 方式侦听各种统计信息,包括计数器和定时器,并发送聚合信息到后端服务,如 Graphite。
它基于两大功能:计数和计时。普遍及支持多种语言——有基于 Ruby,Python, Java, erlang, Node, Scala, Go, haskell 等几乎所有语言的客户端。
说重点,statsd主要用于应用程序的指标监控,它致力于收集从你代码中发送出去的本地性能指标。基于个性化需求,可以通过 Statsd 收集任何想要的数据
StatsD的更详细内容

collectd

collectd也是一个简单的守护进程,用来收集系统性能数据和提供各种存储方式来存储不同值的机制,通过插件,更灵活的收集指标**
collectd官网
collectd收集的系统指标

influxDB

InfluxDB 是一个开源分布式时序、事件和指标数据库。使用 Go 语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。
它有三大特性:

  1. Time Series (时间序列):你可以使用与时间有关的相关函数(如最大,最小,求和等)
  2. Metrics(度量):你可以实时对大量数据进行计算
  3. Eevents(事件):它支持任意的事件数据

infludDB的下载:

wget https://dl.influxdata.com/influxdb/releases/influxdb_1.2.0_amd64.deb
sudo dpkg -i influxdb_1.2.0_amd64.deb

influxDB的更多内容
做的比较详细的帮助手册

Grafana

Grafana是纯 Javascript 开发的前端工具,用于访问 InfluxDB,自定义报表、显示图表等。

  • grafana是用于可视化大型测量数据的开源程序,他提供了强大和优雅的方式去创建、共享、浏览数据。dashboard中显示了你不同metric数据源中的数据。
  • grafana最常用于因特网基础设施和应用分析,但在其他领域也有机会用到,比如:工业传感器、家庭自动化、过程控制等等。
  • grafana有热插拔控制面板和可扩展的数据源,目前已经支持Graphite、InfluxDB、OpenTSDB、Elasticsearch。

Grafana图例

Paste_Image.png
Paste_Image.png

Grafana官网
Grafana安装详细例子

还需要研究的
  1. 怎么在Grafana上二次开发,汉化等
  2. 是否适应我们的业务需求

Highcharts

Highcharts 是一个用纯JavaScript编写的一个图表库。
Highcharts 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表
目前阿里的监控平台GoldenEyes前端图标展现是用Highcharts。
目前Highcharts用于商业用途要收费
HIghcharts支持监控平台的各种图例。
HighCharts 特性

  • 兼容性 - 支持所有主流浏览器和移动平台(android、iOS等)。
  • 多设备 - 支持多种设备,如手持设备 iPhone/iPad、平板等。
  • 免费使用 - 开源免费。
  • 轻量 - highcharts.js 内核库大小只有 35KB 左右。
  • 配置简单 - 使用 json 格式配置
  • 动态 - 可以在图表生成后修改。
  • 多维 - 支持多维图表
  • 配置提示工具 - 鼠标移动到图表的某一点上有提示信息。
  • 时间轴 - 可以精确到毫秒。
  • 导出 - 表格可导出为 PDF/ PNG/ JPG / SVG 格式
  • 输出 - 网页输出图表。
  • 可变焦 - 选中图表部分放大,近距离观察图表;
  • 外部数据 - 从服务器载入动态数据。
  • 文字旋转 - 支持在任意方向的标签旋转。
    HighCharts官网

监控常用图标展现

图表展现:支持折线图、面积图、热力图、饼图、表格。
a. 折线图:按时间序列展示监控数据。可以添加多个监控项。

折线图

b. 面积图:按时间序列显示监控数据,可以添加多个监控项。
面积图

c. 热力图:显示监控项的实时数据。用于展示多个实例指定监控项的实时监控数据分布与对比。例如展示多个实例CPU使用率的水位分布情况。只能添加一个监控项。
热力图

d. 饼图:显示监控项的实时数据。常用于数据的对比。可以添加多个监控项。
饼图

e. 表格:实时显示监控项数据值由大到小的排序。例如ECS分组中所有机器CPU使用率从大到小的排序。只能添加一个监控项。
表格

详情参考阿里云帮助文档

互联网平台参考设计

平台导航参考

监控导航目前有两种方式:
1.一个大平台,做成多个小应用(app),用户登录后,先选择应用后进入:

Paste_Image.png
Paste_Image.png
  1. 分成二级三级导航,用户进入后,有个首页概览,后登录各二级页面做详细操作
Paste_Image.png
Paste_Image.png
侧边导航栏只展现具体应用导航

OneApm的结构层思维导图

CloudInsight结构层
平台

平台列表则会列出已经监控的平台。



点击后可以看平台详细,平台操作系统及平台服务的详细指标

Paste_Image.png
仪表盘

仪表盘是支持增删改,支持客户定制,支持客户收藏和分享
仪表盘是 Cloudinsight 查看性能指标,以及平台负载情况,和平台服务的运行情况的主要形式。
仪表盘的设计思路是:


仪表盘针对采集到的性能指标,进行处理后,提供可视化方式进行展现。仪表盘按照操作类型可分为:
自定义仪表盘
平台服务仪表盘
自定义数据仪表盘
Metric查询:

OneAPM的指标图标

支持图表分享也是一个亮点
直接分享可以查看的URL,您可以拷贝并通过邮件发送给需要查看数据的其他人
iframe的版本,您可以将其粘贴至自己的代码中,嵌入到自己的系统中
通过手机扫描二维码,通过手机分享给其他人

Paste_Image.png

其他平台有益参考

腾讯云

腾讯云做的产品和我们类似,特别是监控平台,容器服务,弹性伸缩,大数据与AI方面都可以做很多参考。
腾讯云帮助文档

阿里云

阿里云也一样
阿里云帮助文档
阿里云监控平台的DashBoard设计:
展示多个实例的监控数据走势
例如您的一个应用部署在多台ECS实例上,可以将部署了相同应用的多台ECS实例监控信息添加在同一张监控图表中,查看相关多台机器的监控数据变化趋势。 例如在一张图表中同时展示ECS多个实例各自的CPU使用率的时间序走势。

多cpu

展示多个监控项的数据对比
例如在一张图表中展示ECS同一个实例的CPU使用率、内存使用率、磁盘使用率等多个指标。
多指标

展示机器的资源消耗排序
例如您有20台机器,通过表格展示可以查看20台机器的CPU使用率从大到小的排序。快速了解资源消耗情况,更合理的使用资源,减少不必要的花费。
表格

展示多个实例的监控数据实时分布
例如通过热力图,展示一组ECS实例的CPU使用率分布情况,知晓每台机器的CPU使用率和其他机器相比,处于什么水平。点击色块,可以查看该机器一段时间内的监控数据走势。
heatmap

展示多个实例某一监控项的聚合数据
例如在一张图表中查看ECS多个实例的CPU使用率的平均聚合值,从而了解整体的CPU使用率水位,判断是否各个实例资源使用不均。
图片

全景盯屏展示
Dashboard支持全屏展示和自动刷新,可以将您的各类产品指标添加到监控大盘后在运维大屏上全屏展示。
全屏

监控大盘参数说明


时间选择

选择时间范围:点击监控大盘页面上方的时间选择按钮,可以快速选择大盘中图表展示的监控数据时间范围。时间选择的作用范围是会是监控大盘的全部图表。

自动刷新:开启“自动刷新”按钮后,当您选择查询“1小时”、“3小时”、“6小时”的查询时间跨度时,可开启自动刷新功能,每分钟刷新一次。

监控项的单位展示在图表名称的括号内。
鼠标跟随显示所有图表相同时间的监控值。

百度云

百度云也可以参考,特别是智慧引擎,AI,大数据分析这块
百度云帮助文档

小米开源的监控平台

小米开源的监控平台,做的很不错。
open-falcon的目标是做最开放、最好用的互联网企业级监控产品。
小米,京东,美团,赶集都是基于这个平台深度定制。
目前我还没时间深入研究。
小米open-falcon

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,290评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,399评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,021评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,034评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,412评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,651评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,902评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,605评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,339评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,586评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,076评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,400评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,060评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,851评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,685评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,595评论 2 270

推荐阅读更多精彩内容