監控工具
大約 5 分鐘
監控工具
監控工具的部署可參考文檔 監控面板部署 章節。
1. 監控指標的 Prometheus 映射關系
對于 Metric Name 為 name, Tags 為 K1=V1, ..., Kn=Vn 的監控指標有如下映射,其中 value 為具體值
| 監控指標類型 | 映射關系 |
|---|---|
| Counter | name_total{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn"} value |
| AutoGauge、Gauge | name{cluster="clusterName", nodeType="nodeType", nodeId="nodeId",k1="V1" , ..., Kn="Vn"} value |
| Histogram | name_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 |
| Rate | name_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 |
| Timer | name_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 |
2. 修改配置文件
- 以 DataNode 為例,修改 iotdb-system.properties 配置文件如下:
dn_metric_reporter_list=PROMETHEUS
dn_metric_level=CORE
dn_metric_prometheus_reporter_port=9091啟動 IoTDB DataNode
打開瀏覽器或者用
curl訪問http://servier_ip:9091/metrics, 就能得到如下 metric 數據:
...
# HELP file_count
# TYPE file_count gauge
file_count{name="wal",} 0.0
file_count{name="unseq",} 0.0
file_count{name="seq",} 2.0
...3. Prometheus + Grafana
如上所示,IoTDB 對外暴露出標準的 Prometheus 格式的監控指標數據,可以使用 Prometheus 采集并存儲監控指標,使用 Grafana
可視化監控指標。
IoTDB、Prometheus、Grafana三者的關系如下圖所示:

- IoTDB在運行過程中持續收集監控指標數據。
- Prometheus以固定的間隔(可配置)從IoTDB的HTTP接口拉取監控指標數據。
- Prometheus將拉取到的監控指標數據存儲到自己的TSDB中。
- Grafana以固定的間隔(可配置)從Prometheus查詢監控指標數據并繪圖展示。
從交互流程可以看出,我們需要做一些額外的工作來部署和配置Prometheus和Grafana。
比如,你可以對Prometheus進行如下的配置(部分參數可以自行調整)來從IoTDB獲取監控數據
job_name: pull-metrics
honor_labels: true
honor_timestamps: true
scrape_interval: 15s
scrape_timeout: 10s
metrics_path: /metrics
scheme: http
follow_redirects: true
static_configs:
- targets:
- localhost:9091更多細節可以參考下面的文檔:
Prometheus從HTTP接口拉取metrics數據的配置說明
4. Apache IoTDB Dashboard
我們提供了Apache IoTDB Dashboard,支持統一集中式運維管理,可通過一個監控面板監控多個集群。


你可以在企業版中獲取到 Dashboard 的 Json文件。
4.1 集群概覽
可以監控包括但不限于:
- 集群總CPU核數、總內存空間、總硬盤空間
- 集群包含多少個ConfigNode與DataNode
- 集群啟動時長
- 集群寫入速度
- 集群各節點當前CPU、內存、磁盤使用率
- 分節點的信息

4.2 數據寫入
可以監控包括但不限于:
- 寫入平均耗時、耗時中位數、99%分位耗時
- WAL文件數量與尺寸
- 節點 WAL flush SyncBuffer 耗時

4.3 數據查詢
可以監控包括但不限于:
- 節點查詢加載時間序列元數據耗時
- 節點查詢讀取時間序列耗時
- 節點查詢修改時間序列元數據耗時
- 節點查詢加載Chunk元數據列表耗時
- 節點查詢修改Chunk元數據耗時
- 節點查詢按照Chunk元數據過濾耗時
- 節點查詢構造Chunk Reader耗時的平均值

4.4 存儲引擎
可以監控包括但不限于:
- 分類型的文件數量、大小
- 處于各階段的TsFile數量、大小
- 各類任務的數量與耗時

4.5 系統監控
可以監控包括但不限于:
- 系統內存、交換內存、進程內存
- 磁盤空間、文件數、文件尺寸
- JVM GC時間占比、分類型的GC次數、GC數據量、各年代的堆內存占用
- 網絡傳輸速率、包發送速率


