Prometheus

监控指标的 Prometheus 映射关系

对于 Metric Name 为 name, Tags 为 K1=V1, …, Kn=Vn 的监控指标有如下映射,其中 value 为具体值

监控指标类型映射关系
Countername_total{cluster=”clusterName”, nodeType=”nodeType”, nodeId=”nodeId”,k1=”V1” , …, Kn=”Vn”} value
AutoGauge、Gaugename{cluster=”clusterName”, nodeType=”nodeType”, nodeId=”nodeId”,k1=”V1” , …, Kn=”Vn”} value
Histogramname_max{cluster=”clusterName”, nodeType=”nodeType”, nodeId=”nodeId”,k1=”V1” , …, Kn=”Vn”} value
name_sum{cluster=”clusterName”, nodeType=”nodeType”, nodeId=”nodeId”,k1=”V1” , …, Kn=”Vn”} value
name_count{cluster=”clusterName”, nodeType=”nodeType”, nodeId=”nodeId”,k1=”V1” , …, Kn=”Vn”} value
name{cluster=”clusterName”, nodeType=”nodeType”, nodeId=”nodeId”,k1=”V1” , …, Kn=”Vn”, quantile=”0.5”} value
name{cluster=”clusterName”, nodeType=”nodeType”, nodeId=”nodeId”,k1=”V1” , …, Kn=”Vn”, quantile=”0.99”} value
Ratename_total{cluster=”clusterName”, nodeType=”nodeType”, nodeId=”nodeId”,k1=”V1” , …, Kn=”Vn”} value
name_total{cluster=”clusterName”, nodeType=”nodeType”, nodeId=”nodeId”,k1=”V1” , …, Kn=”Vn”, rate=”m1”} value
name_total{cluster=”clusterName”, nodeType=”nodeType”, nodeId=”nodeId”,k1=”V1” , …, Kn=”Vn”, rate=”m5”} value
name_total{cluster=”clusterName”, nodeType=”nodeType”, nodeId=”nodeId”,k1=”V1” , …, Kn=”Vn”, rate=”m15”} value
name_total{cluster=”clusterName”, nodeType=”nodeType”, nodeId=”nodeId”,k1=”V1” , …, Kn=”Vn”, rate=”mean”} value
Timername_seconds_max{cluster=”clusterName”, nodeType=”nodeType”, nodeId=”nodeId”,k1=”V1” , …, Kn=”Vn”} value
name_seconds_sum{cluster=”clusterName”, nodeType=”nodeType”, nodeId=”nodeId”,k1=”V1” , …, Kn=”Vn”} value
name_seconds_count{cluster=”clusterName”, nodeType=”nodeType”, nodeId=”nodeId”,k1=”V1” , …, Kn=”Vn”} value
name_seconds{cluster=”clusterName”, nodeType=”nodeType”, nodeId=”nodeId”,k1=”V1” , …, Kn=”Vn”, quantile=”0.5”} value value
name_seconds{cluster=”clusterName”, nodeType=”nodeType”, nodeId=”nodeId”,k1=”V1” , …, Kn=”Vn”, quantile=”0.99”} value

修改配置文件

  1. 以 DataNode 为例,修改 iotdb-datanode.properties 配置文件如下:
  1. dn_metric_reporter_list=PROMETHEUS
  2. dn_metric_level=CORE
  3. dn_metric_prometheus_reporter_port=9091
  1. 启动 IoTDB DataNode

  2. 打开浏览器或者用curl 访问 http://servier_ip:9091/metrics, 就能得到如下 metric 数据:

  1. ...
  2. # HELP file_count
  3. # TYPE file_count gauge
  4. file_count{name="wal",} 0.0
  5. file_count{name="unseq",} 0.0
  6. file_count{name="seq",} 2.0
  7. ...

Prometheus + Grafana

如上所示,IoTDB 对外暴露出标准的 Prometheus 格式的监控指标数据,可以使用 Prometheus 采集并存储监控指标,使用 Grafana
可视化监控指标。

IoTDB、Prometheus、Grafana三者的关系如下图所示:

iotdb_prometheus_grafana

iotdb_prometheus_grafana

  1. IoTDB在运行过程中持续收集监控指标数据。
  2. Prometheus以固定的间隔(可配置)从IoTDB的HTTP接口拉取监控指标数据。
  3. Prometheus将拉取到的监控指标数据存储到自己的TSDB中。
  4. Grafana以固定的间隔(可配置)从Prometheus查询监控指标数据并绘图展示。

从交互流程可以看出,我们需要做一些额外的工作来部署和配置Prometheus和Grafana。

比如,你可以对Prometheus进行如下的配置(部分参数可以自行调整)来从IoTDB获取监控数据

  1. job_name: pull-metrics
  2. honor_labels: true
  3. honor_timestamps: true
  4. scrape_interval: 15s
  5. scrape_timeout: 10s
  6. metrics_path: /metrics
  7. scheme: http
  8. follow_redirects: true
  9. static_configs:
  10. - targets:
  11. - localhost:9091

更多细节可以参考下面的文档:

Prometheus安装使用文档监控工具 - 图2open in new window

Prometheus从HTTP接口拉取metrics数据的配置说明监控工具 - 图3open in new window

Grafana安装使用文档监控工具 - 图4open in new window

Grafana从Prometheus查询数据并绘图的文档监控工具 - 图5open in new window

Apache IoTDB Dashboard

我们提供了Apache IoTDB Dashboard,支持统一集中式运维管理,可通过一个监控面板监控多个集群。

Apache IoTDB Dashboard

Apache IoTDB Dashboard

Apache IoTDB Dashboard

Apache IoTDB Dashboard

你可以在企业版中获取到 Dashboard 的 Json文件。

集群概览

可以监控包括但不限于:

  • 集群总CPU核数、总内存空间、总硬盘空间
  • 集群包含多少个ConfigNode与DataNode
  • 集群启动时长
  • 集群写入速度
  • 集群各节点当前CPU、内存、磁盘使用率
  • 分节点的信息

监控工具 - 图8

数据写入

可以监控包括但不限于:

  • 写入平均耗时、耗时中位数、99%分位耗时
  • WAL文件数量与尺寸
  • 节点 WAL flush SyncBuffer 耗时

监控工具 - 图9

数据查询

可以监控包括但不限于:

  • 节点查询加载时间序列元数据耗时
  • 节点查询读取时间序列耗时
  • 节点查询修改时间序列元数据耗时
  • 节点查询加载Chunk元数据列表耗时
  • 节点查询修改Chunk元数据耗时
  • 节点查询按照Chunk元数据过滤耗时
  • 节点查询构造Chunk Reader耗时的平均值

监控工具 - 图10

存储引擎

可以监控包括但不限于:

  • 分类型的文件数量、大小
  • 处于各阶段的TsFile数量、大小
  • 各类任务的数量与耗时

监控工具 - 图11

系统监控

可以监控包括但不限于:

  • 系统内存、交换内存、进程内存
  • 磁盘空间、文件数、文件尺寸
  • JVM GC时间占比、分类型的GC次数、GC数据量、各年代的堆内存占用
  • 网络传输速率、包发送速率

监控工具 - 图12

监控工具 - 图13

监控工具 - 图14