优先级: P0:高优先级(高优先级:指标超限会对集群产生性能影响,或进行巡检时需要根据该指标评估集群运行状况)。
P1:中优先级(中等优先级:在集群出现故障或告警时,需要该指标辅助问题定位)。 P2:低优先级(低优先级)。
监控项优化建议
- 将现有FE,BE性能、状态监控项合并至一个面板,方便观察及评估集群健康状态,提升高优先级监控项在面板中占比大小,方便在集群出现性能问题排查。
- 将Tasks、Query、Jbos、Transactions版块组合创建一个面板。方便业务观察作业运行情况,同时方便巡检时能关注核心性能指标。
- 检查当前FE面板中172.16.71.10的监控状态,该机器的监控数据无法获取。该FE节点当前处于正常状态。
- 根据实际需要适当删减低优先级指标,简化监控面板,降低阅读难度。
当前监控项(根据Grafana版块进行划分)
Cluster Overview
| 监控项名称 | 监控项含义 | 优先级 | 告警阈值 |
|---|---|---|---|
| FENode | 总的FE节点数 | P1 | |
| FE Alive | 当前正常的FE节点数 | P0 | <集群节点数量,节点掉线立即告警 |
| BE Node | 集群中BE的节点总数 | P1 | |
| BE Alive | 当前集群充正常存活的BE节点数,如果这个数量和BE Node的数量不一致说明集群中有掉线的BE节点,需要去查看处理 | P0 | <集群节点数量,节点掉线立即告警 |
| Uesd Capacity | 当前集群已使用的磁盘空间 | P0 | 70%集群磁盘容量 |
| Total Capacity | 集群整体存储空间 | P1 | |
| BE Compaction Score | 数据合并压力,正常这个值在100以内算是正常,不过如果持续接近100这个值。如果呈上升态势,或在平稳状态但数值较高,则需要考虑调整 Compaction 参数以加快 Compaction 的进度。 | P0 | >800立即触发 正常范围不超过100,在集群有大量导入任务时>1000会出现报错。 |
| QPS | 并发量 | P0 | |
| 99th Latency | 慢查询定位 | P0 |
Host Moniter
| 监控项名称 | 监控项含义 | 优先级 | 告警阈值 |
|---|---|---|---|
| CPU Used Rate | CPU使用率 | P0 | 连续3分钟>90% |
| Mem Usage | 内存使用 | P1 | |
| Mem Used Rate | 内存使用率 | P0 | 连续3分钟>90% |
| I/O Util | IO繁忙 | P0 | 连续3分钟>80% |
| Disk Used Rate | 磁盘使用率 | P0 | >75% |
| Disk Write Throughput | 磁盘写吞吐量 | P1 | |
| Disk Read Throughput | 磁盘读吞吐量 | P1 | |
| Network Outbound Traffic | 网络上行 | P1 | |
| Network Intbound Traffic | 网络下行 | P1 |
FE监控指标
| 监控项名称 | 监控项含义 | 优先级 | 告警阈值 | PromQL | PromQL参数 |
|---|---|---|---|---|---|
| Max Replayed Journal ID | 用于观察多个FE之间的 id 是否差距过大。过大则表示元数据同步出现问题 | P0 | 各个节点id值相差超过500 | doris_fe_max_journal_id{job="$cluster_id"} | 无 |
| Edit log Size | 用于监控editlog 大小。如果大小超限,需人工介入 | P0 | doris_fe_edit_log{job="$cluster_id", type="current_bytes"} | {type="accumulated_bytes"}日志累计写入量{type="current_bytes"}日志当前值{type="read"}元数据日志读取次数的计数{type="write"}元数据日志写入次数的计数 | |
| Image Write | 生成元数据镜像文件成功/失败的次数,不应失败,如失败,需人工介入 | P0 | 失败次数>=1 | doris_fe_image_write{job="$cluster_id", type="success"} | {type="failed"}成功{type="success"}失败 |
| Image Push | 将元数据镜像文件推送给其他FE节点的成功/失败的次数 | P0 | 失败次数>=1 | doris_fe_image_push{job="$cluster_id", type="success"} | {type="failed"}成功{type="success"}失败 |
| Image Counter | Doris Master FE 元数据image生成计数器。这些指标预计会以合理的时间间隔增加通常,它们应该相等。 | P1 | doris_fe_image_write{job="fe_master"} | {type="failed"}成功{type="success"}失败 | |
| Image Clean | 清理历史元数据镜像文件失败的次数,不应失败,如失败,需人工介入 | P0 | doris_fe_image_clean{job="$cluster_id", type="success"} | {type="failed"}成功{type="success"}失败 | |
| Edit Log Clean | 清理历史元数据日志成功/失败的次数,不应失败,如失败,需人工介入 | P0 | doris_fe_edit_log_clean{job="$cluster_id", type="success"} | {type="failed"}成功{type="success"}失败 | |
| BDBJE Write | 日志写入量/写入延迟 | P0 | rate(doris_fe_edit_log{job="cluster_id", type="write"}[interval]) | {type="accumulated_bytes"}日志累计写入量{type="current_bytes"}日志当前值{type="read"}元数据日志读取次数的计数{type="write"}元数据日志写入次数的计数 | |
| BDBJE Read | 日志读取量/读取延迟 | P0 | rate(doris_fe_edit_log{job="cluster_id", type="read"}[interval]) | {type="accumulated_bytes"}日志累计写入量{type="current_bytes"}日志当前值{type="read"}元数据日志读取次数的计数{type="write"}元数据日志写入次数的计数 | |
| JVM Heap | JVM 内存监控。标签包含 max, used, committed,分别对应最大值,已使用和已申请的内存。观测JVM内存使用情况 | P0 | 连续3分钟>85% | jvm_heap_size_bytes{instance="cluster_id", type="used"} | {type="max"}{type="used"}{type="committed"} |
| Scheduling Tablets | Master FE节点正在调度的 tablet 数量。包括正在修复的副本和正在均衡的副本。该数值可以反映当前集群,正在迁移的 tablet 数量。如果长时间有值,说明集群不稳定 | P0 | doris_fe_scheduled_tablet_num{job="fe_master"} | 无 | |
| JVM Old GC | JVM老年代垃圾回收 | P0 | jvm_old_gc{job="fe_instance", type="count"} | type="count" | |
| JVM Young GC | JVM新生代垃圾回收 | P0 | jvm_young_gc{job="fe_instance", type="count"} | type="count" | |
| JVM Old | JVM 老年代内存统计 | P0 | jvm_old_size_bytes{job="fe_instance", type="used"} | {type="max"}{type="used"}{type="committed"} | |
| JVM Young | JVM 新生代内存统计 | P0 | jvm_young_size_bytes{job="fe_instance", type="used"} | {type="max"}{type="used"}{type="committed"} | |
| FE Collect Compaction Score | 所有BE节点中最大的 compaction score 值。该值可以观测当前集群最大的 compaction score,以判断是否过高。如过高则可能出现查询或写入延迟 | P1 | >800立即触发 正常范围不超过100,在集群有大量导入任务时>1000会出现报错。 | doris_fe_max_tablet_compaction_score{job="$cluster_id"} | 无 |
| JVM Non Heap | JVM 堆外内存统计 | P1 | jvm_non_heap_size_bytes{instance="cluster_id", type="used"} | type="used" | |
| JVM Threads | JVM 线程数统计,观测 JVM 线程数是否合理 | P1 | jvm_thread{job="fe_instance", type="count"} | type="count" |
BE监控指标
| 监控项名称 | 监控项含义 | 优先级 | 告警阈值 | PromQL | PromQL参数 |
|---|---|---|---|---|---|
| Disk Usage | 磁盘使用率 | P0 | >75% | (SUM(doris_be_disks_total_capacity{job="be_instance"}) by (instance, path) - SUM(doris_be_disks_avail_capacity{job="cluster_name"}) by (instance, path)) / SUM(doris_be_disks_total_capacity{job="cluster_id", instance=~"$be_instance"}) by (instance, path) | 无 |
| BE FD Count | BE 进程已使用的文件句柄数。通过 /proc/pid/limits 采集 | P2 | doris_be_process_fd_num_used{job="be_instance"} | ||
| BE Thread Num | BE 进程线程数。通过 /proc/pid/task 采集 | P1 | doris_be_process_thread_num{job="be_instance"} | ||
| Tablet Meta Read | 访问 RocksDB 中的 meta 的次数累计,通过斜率观测 BE 元数据访问频率 | P1 | irate(doris_be_meta_request_total{job="be_instance", type="read"}[$interval]) | {type="write"}读取{type="write"}写入 | |
| Tablet Meta Write | 访问 RocksDB 中的 meta 的次数累计,通过斜率观测 BE 元数据写入频率 | P1 | doris_be_meta_request_total{job="be_instance", type="read"}[$interval] | {type="write"}读取{type="write"}写入 | |
| Tablet Distribution | 各个BE节点当前tablet总数。 可以查看 tablet 分布是否均匀以及绝对值是否合理 | P0 | doris_fe_tablet_num{job="fe_master"} | ||
| BE Compaction Base | 记录的是 compaction 任务中,input rowset 的 disk size。通过斜率可以观测 compaction的速率 | P1 | rate(doris_be_compaction_bytes_total{type="cumulative", job="be_instance"}[$interval]) | type="cumulative"type="base" | |
| BE Push Bytes | BE推送任务速率 | P2 | rate(doris_be_push_request_write_bytes{job="be_instance"}[$interval]) | ||
| BE Push Rows | BE推送任务行数 | P2 | rate(doris_be_push_request_write_rows{job="be_instance"} | ||
| BE Scan Bytes | BE扫描任务速率 | P2 | rate(doris_be_query_scan_bytes{job="be_instance"}[$interval]) | ||
| BE Scan Rows | BE扫描任务行数 | P2 | rate(doris_be_query_scan_rows{job="be_instance"}[$interval]) |
BE tasks
| 监控项名称 | 监控项含义 | 优先级 | 告警阈值 | PromQL | PromQL参数 |
|---|---|---|---|---|---|
| Tablets Report | BE 上各类任务执行状态的累计值 | P1 | SUM(doris_be_engine_requests_total{job="be_instance", type="report_all_tablets", status="total"}) | type="report_all_tablets" | |
| Single Tablet Report | P1 | type="report_tablet" | |||
| Finish Task Report | P1 | type="finish_task" | |||
| Delete | P1 | type="delete" | |||
| Base Compaction | P0 | type="base_compaction" | |||
| Clone | P1 | type="clone" | |||
| Create Rollup | P1 | type="create_rollup" | |||
| Schema Change | P1 | type="schema_change" | |||
| Create Tablet | P1 | type="create_tablet" | |||
| Push Task | BE推送任务数量 | P1 | sum(doris_be_push_requests_total{job="be_instance", status="SUCCESS"}) | ||
| Push Task Cost Time | 每个Backend推送任务的平均花费时间。 | P1 | irate(doris_be_push_request_duration_us{job="be_instance"}[$interval]) | {type="write"}读取{type="write"}写入 |
Query监控指标
| 监控项名称 | 监控项含义 | 优先级 | 告警阈值 | PromQL | PromQL参数 |
|---|---|---|---|---|---|
| RPS | 所有通过 MySQL 端口接收的操作请求(包括查询和其他语句)每秒操作率 | P1 | rate(doris_fe_request_total{job="cluster_id", group="fe"}[interval]) | 无 | |
| QPS | 查询请求率 | P1 | rate(doris_fe_query_total{job="cluster_id", group="fe", user!~".+"}[interval]) | ||
| 99th | 99%分位慢查询 | P0 | sum(doris_fe_query_latency_ms{job="$cluster_id", quantile="0.99"}) by (instance) | ||
| Query Percentile | 查询请求延迟的百分位统计。 | P0 | doris_fe_query_latency_ms{job="fe_instance"} | {type="write"}读取{type="write"}写入 | |
| Query Error[1m] | 错误查询 | P0 | 每分钟失败的查询率>10% | doris_fe_query_err{job="$cluster_id"} | {type="write"}读取{type="write"}写入 |
| Connections | 连接数 | P0 | doris_fe_connection_total{job="$cluster_id"} |
Jobs监控指标*
| 监控项名称 | 监控项含义 | 优先级 | 告警阈值 | PromQL | PromQL参数 |
|---|---|---|---|---|---|
| Broker Load Job | 当前不同作业类型的计数。如 {job="load", type="INSERT"} 表示类型为 INSERT 的导入作业个数 | P2 | doris_fe_job{job="fe_master"} | type="INSERT"type="BROKER"type="ROUTINE"type="SPARK" | |
| Insert Load Job | P2 | ||||
| Routine Load Job | P2 | ||||
| Spark Load Job | P2 | ||||
| Broker Load Tendency | 当前不同作业类型以及不同作业状态的计数。如 {job="load", type="INSERT", state="LOADING"} 表示类型为 INSERT 的导入作业,处于 LOADING 状态的作业个数 | P2 | doris_fe_job{job="fe_master", state="PENDING"} | type="INSERT"type="BROKER"type="ROUTINE"type="SPARK" state="PENDING"state="ETL" state="LOADING" | |
| Insert Load Tendency | P2 | ||||
| Routine Load Tendency | P2 | ||||
| Spark Load Tendency | P2 | ||||
| SC Job | schema change状态变更作业个数 | P2 | doris_fe_job{job="fe_master", type="SCHEMA_CHANGE"} | ||
| Rollup Job | Rollup状态作业个数 | P2 | doris_fe_job{job="fe_master", type="ROLLUP"} | ||
| Report Queue Size | BE的各种定期汇报任务在FE端的队列长度.该值反映了汇报任务在 Master FE 节点上的阻塞程度,数值越大,表示FE处理能力不足 | P2 | doris_fe_report_queue_size{job="fe_master"} |
Transactions监控指标*
| 监控项名称 | 监控项含义 | 优先级 | 告警阈值 | PromQL | PromQL参数 |
|---|---|---|---|---|---|
| Txn Begin/Success on FE | 统计各个状态的导入事务的数量的累计值 | P2 | doris_fe_txn_counter{type="begin"} | type="begin"type="success"type="faild"type="reject" | |
| Txn Begin/Success on FE | P2 | ||||
| P2 | |||||
| Publish Task on BE | publish状态事务总量 | P2 | sum(doris_be_engine_requests_total{job="$cluster_id", type="publish", status="total"}) | ||
| Txn Status on FE | 事务所有状态数量统计 | P2 | doris_fe_txn_status{group="fe", job="$cluster_id", type="prepare"} | ||
| Txn Load Bytes/Rows rate | stream load 最终导入的行数累计值stream load 接收的字节数累计值 | P2 | sum(rate(doris_be_stream_load{group="be", job="cluster_id", type="receive_bytes"}[interval])) |