监控指标与监控类型

监控体系中最基础的是监控指标,监控系统就是围绕指标的采集、传输、存储、分析、可视化的一个系统。

监控指标是指数值类型的监控数据,比如某个机器的内存利用率,某个 MySQL 实例的当前连接数,某个 Redis 的最大内存上限等等。不同的监控系统,对于监控指标有不同的描述方式,典型的方式有三种。

  • 监控指标通常是一个全局唯一的字符串,比如某机器的内存利用率 host.10.2.3.4.mem_used_percent,这个字符串中包含了机器的信息,也包含了指标名,可以唯一标识一条监控指标。
  • 标签集的组合作为指标标识。第一段是指标名,第二段是时间戳(单位是秒),第三段是指标值,剩下的部分是多个标签(tags/labels),每个标签都是 key=value 的格式,多个标签之间使用空格分隔。
  • 优雅高效的 Influx 指标格式。measurement,tag_set field_set timestamp,其中 tag_set 是可选的,tag_set 与前面的 measurement 之间用逗号分隔,其他各个部分之间都是用空格来分隔的。

Prometheus 生态也支持数据类型,分为 Gauge、Counter、Histogram、Summary4 种,下面我们简单了解一下 Prometheus 的这 4 种类型。

  • Gauge:测量值类型,可大可小,可正可负。这种类型的数据,我们通常关注的是当前值。
  • Counter:表示单调递增的值,比如操作系统自启动以来网卡接收到的所有流量包的数量。
  • Histogram:直方图类型,用于描述数据分布,最典型的应用场景就是监控延迟数据,计算 90 分位、99 分位的值。所谓的分位值,就是把一批数据从小到大排序,然后取 X% 位置的数据,90 分位就是指样本数据第 90% 位置的值。
  • Summary:这种类型是在客户端计算分位值,然后把计算之后的结果推给服务端存储,展示的时候直接查询即可,不需要做很重的计算,性能大幅提升。

时序库(Time series database)是一种专门处理时序数据的数据库 。我们常见的数据库中,MySQL 是关系型数据库,Redis 是 KV 数据库,MongoDB 是文档数据库,而 InfluxDB、VictoriaMetrics、M3DB 等都是时序库,Prometheus 其实也内置实现了一个时序存储模块。

时序数据最大的特点是每一条数据都带有时间戳,通常是单调顺序,不会乱序,流式发给服务端,通常不会修改,比如指标数据和日志数据,都是典型的时序数据。

此文章为7月Day28学习笔记,内容来源于极客时间《运维监控系统实战笔记》,推荐该课程。

猜你喜欢

转载自blog.csdn.net/key_3_feng/article/details/131987637