监控指标类型

171 阅读2分钟

监控指标

监控指标是指数值类型的监控数据,比如某个机器的内存利用率,某个 MySQL 实例的当前连接数,某个 Redis 的最大内存上限等等。

image.png

全局唯一字符串作为指标标识

监控指标通常是一个全局唯一的字符串,比如某机器的内存利用率 host.10.2.3.4.mem_used_percent,这个字符串中包含了机器的信息,也包含了指标名,可以唯一标识一条监控指标。假设监控数据采集的频率是 30 秒,2 分钟内采集了 4 个数据点,一个数据点包含一个时间戳和一个值。

{
  "name": "host.10.2.3.4.mem_used_percent",
  "points": [
    {
      "clock": 1662449136,
      "value": 45.4
    },
    {
      "clock": 1662449166,
      "value": 43.2
    },
    {
      "clock": 1662449196,
      "value": 44.9
    },
    {
      "clock": 1662449226,
      "value": 44.8
    }
  ]
}

标签集的组合作为指标标识

mysql.bytes_received 1287333217 327810227706 schema=foo host=db1
mysql.bytes_sent 1287333217 6604859181710 schema=foo host=db1
mysql.bytes_received 1287333232 327812421706 schema=foo host=db1
mysql.bytes_sent 1287333232 6604901075387 schema=foo host=db1
mysql.bytes_received 1287333321 340899533915 schema=foo host=db2
mysql.bytes_sent 1287333321 5506469130707 schema=foo host=db2

上面这 6 条监控指标,都通过空格把指标分隔成了多个字段。第一段是指标名,第二段是时间戳(单位是秒),第三段是指标值,剩下的部分是多个标签(tags/labels),每个标签都是 key=value 的格式,多个标签之间使用空格分隔。

优雅高效的 Influx 指标格式

InfluxDB 在接收监控数据写入时,设计了一个非常精巧的指标格式,一行可以传输多个指标

mesurement,labelkey1=labelval1,labelkey2=labelval2 field1=1.2,field2=2.3 timestamp

总体来看,分为 4 个部分,measurement,tag_set field_set timestamp,其中 tag_set 是可选的,tag_set 与前面的 measurement 之间用逗号分隔,其他各个部分之间都是用空格来分隔的。

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