监控指标
Doris 的 FE 和 BE 进程都内置完备的监控指标,默认以 Prometheus 兼容格式暴露。本文系统列出所有可观测指标,并标注重要等级(Priority),方便接入 Prometheus + Grafana 后快速搭建监控告警体系。
适用场景
| 场景 | 用途 |
|---|---|
| 集群健康监控 | 通过 P0 指标快速发现 FE/BE 节点异常 |
| 告警配置 | 基于 QPS、错误率、Compaction Score 等指标设置阈值告警 |
| 性能排查 | 通过查询延迟、线程池排队、内存使用等指标定位瓶颈 |
| 容量规划 | 通过磁盘使用率、Tablet 数量、连接数评估集群负载 |
| 故障复盘 | 结合机器指标(CPU、IO、网络)与进程指标分析故障根因 |
指标分类
Doris 监控指标按观测对象分为两类:
- 进程监控:展示 Doris 进程自身的运行指标,如查询数、事务数、Compaction 状态等。
- 节点监控:展示 Doris 进程所在机器的资源指标,如 CPU、内存、IO、网络等。
获取监控指标
Prometheus 兼容格式(默认)
直接访问 FE 或 BE 节点的 HTTP 端口即可获取:
curl http://fe_host:http_port/metrics
curl http://be_host:webserver_port/metrics
返回示例:
doris_fe_cache_added{type="partition"} 0
doris_fe_cache_added{type="sql"} 0
doris_fe_cache_hit{type="partition"} 0
doris_fe_cache_hit{type="sql"} 0
doris_fe_connection_total 2
JSON 格式
通过 type=json 参数获取 JSON 格式:
curl http://fe_host:http_port/metrics?type=json
curl http://be_host:webserver_port/metrics?type=json
监控等级与最佳实践
-
每张指标表的最后一列为重要等级(Priority),P0 表示最重要,数值越大重要性越低。建议优先接入 P0 指标。
-
绝大多数监控指标类型为 Counter(累计值)。通过间隔采集(如每 15 秒)并计算单位时间斜率,才能获得有效信息。
例如:通过计算
doris_fe_query_err的斜率,可获取查询错误率(error per second)。
欢迎补充完善此表格,以提供更全面、有效的监控指标。
FE 监控指标
进程监控
| 名称 | 标签 | 单位 | 含义 | 说明 | 等级 |
|---|---|---|---|---|---|
doris_fe_cache_added | {type="partition"} | Num | 新增的 Partition Cache 数量累计值 | ||
| {type="sql"} | Num | 新增的 SQL Cache 数量累计值 | |||
doris_fe_cache_hit | {type="partition"} | Num | 命中 Partition Cache 的计数 | ||
| {type="sql"} | Num | 命中 SQL Cache 的计数 | |||
doris_fe_connection_total | Num | 当前 FE 的 MySQL 端口连接数 | 用于监控查询连接数。如果连接数超限,则新的连接将无法接入 | P0 | |
doris_fe_counter_hit_sql_block_rule | Num | 被 SQL BLOCK RULE 拦截的查询数量 | |||
doris_fe_edit_log_clean | {type="failed"} | Num | 清理历史元数据日志失败的次数 | 不应失败,如失败,需人工介入 | P0 |
| {type="success"} | Num | 清理历史元数据日志成功的次数 | |||
doris_fe_edit_log | {type="accumulated_bytes"} | 字节 | 元数据日志写入量的累计值 | 通过计算斜率可以获得写入速率,来观察是否元数据写入有延迟 | P0 |
| {type="current_bytes"} | 字节 | 元数据日志当前值 | 用于监控 editlog 大小。如果大小超限,需人工介入 | P0 | |
| {type="read"} | Num | 元数据日志读取次数的计数 | 通过斜率观察元数据读取频率是否正常 | P0 | |
| {type="write"} | Num | 元数据日志写入次数的计数 | 通过斜率观察元数据写入频率是否正常 | P0 | |
| {type="current"} | Num | 元数据日志当前数量 | 用于监控 editlog 数量。如果数量超限,需人工介入 | P0 | |
doris_fe_editlog_write_latency_ms | 毫秒 | 元数据日志写入延迟的百分位统计。如 {quantile="0.75"} 表示 75 分位的写入延迟 | |||
doris_fe_image_clean | {type="failed"} | Num | 清理历史元数据镜像文件失败的次数 | 不应失败,如失败,需人工介入 | P0 |
| {type="success"} | Num | 清理历史元数据镜像文件成功的次数 | |||
doris_fe_image_push | {type="failed"} | Num | 将元数据镜像文件推送给其他 FE 节点失败的次数 | ||
| {type="success"} | Num | 将元数据镜像文件推送给其他 FE 节点成功的次数 | |||
doris_fe_image_write | {type="failed"} | Num | 生成元数据镜像文件失败的次数 | 不应失败,如失败,需人工介入 | P0 |
| {type="success"} | Num | 生成元数据镜像文件成功的次数 | |||
doris_fe_job | Num | 当前不同作业类型以及不同作业状态的计数。如 {job="load", type="INSERT", state="LOADING"} 表示类型为 INSERT 的导入作业,处于 LOADING 状态的作业个数 | 可以根据需要,观察不同类型的作业在集群中的数量 | P0 | |
doris_fe_max_journal_id | Num | 当前 FE 节点最大元数据日志 ID。如果是 Master FE,则是当前写入的最大 ID;如果是非 Master FE,则代表当前回放的元数据日志最大 ID | 用于观察多个 FE 之间的 ID 是否差距过大。过大则表示元数据同步出现问题 | P0 | |
doris_fe_max_tablet_compaction_score | Num | 所有 BE 节点中最大的 Compaction Score 值 | 该值可以观测当前集群最大的 Compaction Score,以判断是否过高。如过高则可能出现查询或写入延迟 | P0 | |
doris_fe_qps | Num/Sec | 当前 FE 每秒查询数量(仅统计查询请求) | QPS | P0 | |
doris_fe_query_err | Num | 错误查询的累积值 | |||
doris_fe_query_err_rate | Num/Sec | 每秒错误查询数 | 观察集群是否出现查询错误 | P0 | |
doris_fe_query_latency_ms | 毫秒 | 查询请求延迟的百分位统计。如 {quantile="0.75"} 表示 75 分位的查询延迟 | 详细观察各分位查询延迟 | P0 | |
doris_fe_query_latency_ms_db | 毫秒 | 各个 DB 的查询请求延迟的百分位统计。如 {quantile="0.75",db="test"} 表示 DB test 75 分位的查询延迟 | 详细观察各 DB 各分位查询延迟 | P0 | |
doris_fe_query_olap_table | Num | 查询内部表(OlapTable)的请求个数统计 | |||
doris_fe_query_total | Num | 所有查询请求的累积计数 | |||
doris_fe_report_queue_size | Num | BE 的各种定期汇报任务在 FE 端的队列长度 | 该值反映了汇报任务在 Master FE 节点上的阻塞程度,数值越大,表示 FE 处理能力不足 | P0 | |
doris_fe_request_total | Num | 所有通过 MySQL 端口接收的操作请求(包括查询和其他语句) | |||
doris_fe_routine_load_error_rows | Num | 统计集群内所有 Routine Load 作业的错误行数总和 | |||
doris_fe_routine_load_receive_bytes | 字节 | 统计集群内所有 Routine Load 作业接收的数据量大小 | |||
doris_fe_routine_load_rows | Num | 统计集群内所有 Routine Load 作业接收的数据行数 | |||
doris_fe_routine_load_get_meta_latency | 毫秒 | 统计集群内所有 Routine Load Job 获取元数据的延迟 | |||
doris_fe_routine_load_get_meta_count | Num | 统计集群内所有 Routine Load Job 获取元数据的操作次数 | |||
doris_fe_routine_load_get_meta_fail_count | Num | 统计集群内所有 Routine Load Job 获取元数据失败的次数 | |||
doris_fe_routine_load_task_execute_time | 毫秒 | 统计集群内所有 Routine Load Task 的执行时间 | |||
doris_fe_routine_load_task_execute_count | Num | 统计集群内所有 Routine Load Task 的执行次数 | |||
doris_fe_routine_load_lag | 毫秒 | 统计集群内所有 Routine Load Job 的消费延迟 | |||
doris_fe_routine_load_progress | 毫秒 | 统计集群内所有 Routine Load Job 的消费进度 | |||
doris_fe_routine_load_abort_task_num | Num | 统计集群内所有 Routine Load Job 失败的 Task 数量 | |||
doris_fe_rps | Num | 当前 FE 每秒请求数量(包含查询以及其他各类语句) | 和 QPS 配合来查看集群处理请求的量 | P0 | |
doris_fe_scheduled_tablet_num | Num | Master FE 节点正在调度的 tablet 数量。包括正在修复的副本和正在均衡的副本 | 该数值可以反映当前集群正在迁移的 tablet 数量。如果长时间有值,说明集群不稳定 | P0 | |
doris_fe_tablet_max_compaction_score | Num | 各个 BE 节点汇报的 Compaction Score。如 {backend="172.21.0.1:9556"} 表示 "172.21.0.1:9556" 这个 BE 的汇报值 | |||
doris_fe_tablet_num | Num | 各个 BE 节点当前 tablet 总数。如 {backend="172.21.0.1:9556"} 表示 "172.21.0.1:9556" 这个 BE 的当前 tablet 数量 | 可以查看 tablet 分布是否均匀以及绝对值是否合理 | P0 | |
doris_fe_tablet_status_count | Num | 统计 Master FE 节点 Tablet 调度器所调度的 tablet 数量的累计值 | |||
| {type="added"} | Num | 统计 Master FE 节点 Tablet 调度器所调度的 tablet 数量的累计值。"added" 表示被调度过的 tablet 数量 | |||
| {type="in_sched"} | Num | 同上。表示被重复调度的 tablet 数量 | 该值如果增长较快,则说明有 tablet 长时间处于不健康状态,导致被调度器反复调度 | ||
| {type="not_ready"} | Num | 同上。表示尚未满足调度触发条件的 tablet 数量 | 该值如果增长较快,说明有大量 tablet 处于不健康状态但又无法被调度 | ||
| {type="total"} | Num | 同上。表示累积的被检查过(但不一定被调度)的 tablet 数量 | |||
| {type="unhealthy"} | Num | 同上。表示累积的被检查过的不健康的 tablet 数量 | |||
doris_fe_thread_pool | Num | 统计各类线程池的工作线程数和排队情况。active_thread_num 表示正在执行的任务数。pool_size 表示线程池总线程数量。task_in_queue 表示正在排队的任务数 | |||
| {name="agent-task-pool"} | Num | Master FE 用于发送 Agent Task 到 BE 的线程池 | |||
| {name="connect-scheduler-check-timer"} | Num | 用于检查 MySQL 空闲连接是否超时的线程池 | |||
| {name="connect-scheduler-pool"} | Num | 用于接收 MySQL 连接请求的线程池 | |||
| {name="mysql-nio-pool"} | Num | NIO MySQL Server 用于处理任务的线程池 | |||
| {name="export-exporting-job-pool"} | Num | exporting 状态的 export 作业的调度线程池 | |||
| {name="export-pending-job-pool"} | Num | pending 状态的 export 作业的调度线程池 | |||
| {name="heartbeat-mgr-pool"} | Num | Master FE 用于处理各个节点心跳的线程池 | |||
| {name="loading-load-task-scheduler"} | Num | Master FE 用于调度 Broker Load 作业中 loading task 的调度线程池 | |||
| {name="pending-load-task-scheduler"} | Num | Master FE 用于调度 Broker Load 作业中 pending task 的调度线程池 | |||
| {name="schema-change-pool"} | Num | Master FE 用于调度 schema change 作业的线程池 | |||
| {name="thrift-server-pool"} | Num | FE 端 ThriftServer 的工作线程池。对应 fe.conf 中 rpc_port,用于和 BE 进行交互 | |||
doris_fe_txn_counter | Num | 统计各个状态的导入事务的数量的累计值 | 可以观测导入事务的执行情况 | P0 | |
| {type="begin"} | Num | 提交的事务数量 | |||
| {type="failed"} | Num | 失败的事务数量 | |||
| {type="reject"} | Num | 被拒绝的事务数量(如当前运行事务数大于阈值,则新的事务会被拒绝) | |||
| {type="succes"} | Num | 成功的事务数量 | |||
doris_fe_txn_status | Num | 统计当前处于各个状态的导入事务的数量。如 {type="committed"} 表示处于 committed 状态的事务的数量 | 可以观测各个状态下导入事务的数量,来判断是否有堆积 | P0 | |
doris_fe_query_instance_num | Num | 指定用户当前正在请求的 fragment instance 数目。如 {user="test_u"} 表示用户 test_u 当前正在请求的 instance 数目 | 该数值可以用于观测指定用户是否占用过多查询资源 | P0 | |
doris_fe_query_instance_begin | Num | 指定用户请求开始的 fragment instance 数目。如 {user="test_u"} 表示用户 test_u 开始请求的 instance 数目 | 该数值可以用于观测指定用户是否提交了过多查询 | P0 | |
doris_fe_query_rpc_total | Num | 发往指定 BE 的 RPC 次数。如 {be="192.168.10.1"} 表示发往 IP 为 192.168.10.1 的 BE 的 RPC 次数 | 该数值可以观测是否向某个 BE 提交了过多 RPC | ||
doris_fe_query_rpc_failed | Num | 发往指定 BE 的 RPC 失败次数。如 {be="192.168.10.1"} 表示发往 IP 为 192.168.10.1 的 BE 的 RPC 失败次数 | 该数值可以观测某个 BE 是否存在 RPC 问题 | ||
doris_fe_query_rpc_size | Num | 指定 BE 的 RPC 数据大小。如 {be="192.168.10.1"} 表示发往 IP 为 192.168.10.1 的 BE 的 RPC 数据字节数 | 该数值可以观测是否向某个 BE 提交了过大的 RPC | ||
doris_fe_txn_exec_latency_ms | 毫秒 | 事务执行耗时的百分位统计。如 {quantile="0.75"} 表示 75 分位的事务执行耗时 | 详细观察各分位事务执行耗时 | P0 | |
doris_fe_txn_publish_latency_ms | 毫秒 | 事务 publish 耗时的百分位统计。如 {quantile="0.75"} 表示 75 分位的事务 publish 耗时 | 详细观察各分位事务 publish 耗时 | P0 | |
doris_fe_txn_num | Num | 指定 DB 正在执行的事务数。如 {db="test"} 表示 DB test 当前正在执行的事务数 | 该数值可以观测某个 DB 是否提交了大量事务 | P0 | |
doris_fe_publish_txn_num | Num | 指定 DB 正在 publish 的事务数。如 {db="test"} 表示 DB test 当前正在 publish 的事务数 | 该数值可以观测某个 DB 的 publish 事务数量 | P0 | |
doris_fe_txn_replica_num | Num | 指定 DB 正在执行的事务打开的副本数。如 {db="test"} 表示 DB test 当前正在执行的事务打开的副本数 | 该数值可以观测某个 DB 是否打开了过多的副本,可能会影响其他事务执行 | P0 | |
doris_fe_thrift_rpc_total | Num | FE thrift 接口各个方法接收的 RPC 请求次数。如 {method="report"} 表示 report 方法接收的 RPC 请求次数 | 该数值可以观测某个 thrift rpc 方法的负载 | ||
doris_fe_thrift_rpc_latency_ms | 毫秒 | FE thrift 接口各个方法接收的 RPC 请求耗时。如 {method="report"} 表示 report 方法接收的 RPC 请求耗时 | 该数值可以观测某个 thrift rpc 方法的负载 | ||
doris_fe_external_schema_cache | {catalog="hive"} | Num | 指定 External Catalog 对应的 schema cache 的数量 | ||
doris_fe_hive_meta_cache | {catalog="hive"} | Num | |||
{type="partition_value"} | Num | 指定 External Hive Metastore Catalog 对应的 partition value cache 的数量 | |||
{type="partition"} | Num | 指定 External Hive Metastore Catalog 对应的 partition cache 的数量 | |||
{type="file"} | Num | 指定 External Hive Metastore Catalog 对应的 file cache 的数量 |
JVM 监控
| 名称 | 标签 | 单位 | 含义 | 说明 | 等级 |
|---|---|---|---|---|---|
jvm_heap_size_bytes | 字节 | JVM 内存监控。标签包含 max、used、committed,分别对应最大值、已使用和已申请的内存 | 观测 JVM 内存使用情况 | P0 | |
jvm_non_heap_size_bytes | 字节 | JVM 堆外内存统计 | |||
<GarbageCollector> | GC 监控 | GarbageCollector 指代具体的垃圾收集器 | P0 | ||
| {type="count"} | Num | GC 次数累计值 | |||
| {type="time"} | 毫秒 | GC 耗时累计值 | |||
jvm_old_size_bytes | 字节 | JVM 老年代内存统计 | P0 | ||
jvm_thread | Num | JVM 线程数统计 | 观测 JVM 线程数是否合理 | P0 | |
jvm_young_size_bytes | 字节 | JVM 新生代内存统计 | P0 |
机器监控
| 名称 | 标签 | 单位 | 含义 | 说明 | 等级 |
|---|---|---|---|---|---|
system_meminfo | 字节 | FE 节点机器的内存监控。采集自 /proc/meminfo。包括 buffers、cached、memory_available、memory_free、memory_total | |||
system_snmp | FE 节点机器的网络监控。采集自 /proc/net/snmp | ||||
{name="tcp_in_errs"} | Num | tcp 包接收错误的次数 | |||
{name="tcp_in_segs"} | Num | tcp 包接收的个数 | |||
{name="tcp_out_segs"} | Num | tcp 包发送的个数 | |||
{name="tcp_retrans_segs"} | Num | tcp 包重传的个数 |
BE 监控指标
进程监控
| 名称 | 标签 | 单位 | 含义 | 说明 | 等级 |
|---|---|---|---|---|---|
doris_be_active_scan_context_count | Num | 展示当前由外部直接打开的 scanner 的个数 | |||
doris_be_add_batch_task_queue_size | Num | 记录导入时,接收 batch 的线程池的队列大小 | 如果大于 0,则表示导入任务的接收端出现积压 | P0 | |
agent_task_queue_size | Num | 展示各个 Agent Task 处理队列的长度,如 {type="CREATE_TABLE"} 表示 CREATE_TABLE 任务队列的长度 | |||
doris_be_brpc_endpoint_stub_count | Num | 已创建的 brpc stub 的数量,这些 stub 用于 BE 之间的交互 | |||
doris_be_brpc_function_endpoint_stub_count | Num | 已创建的 brpc stub 的数量,这些 stub 用于和 Remote RPC 之间交互 | |||
doris_be_cache_capacity | 记录指定 LRU Cache 的容量 | ||||
doris_be_cache_usage | 记录指定 LRU Cache 的使用量 | 用于观测内存占用情况 | P0 | ||
doris_be_cache_usage_ratio | 记录指定 LRU Cache 的使用率 | ||||
doris_be_cache_lookup_count | 记录指定 LRU Cache 被查找的次数 | ||||
doris_be_cache_hit_count | 记录指定 LRU Cache 的命中次数 | ||||
doris_be_cache_hit_ratio | 记录指定 LRU Cache 的命中率 | 用于观测 cache 是否有效 | P0 | ||
| {name="DataPageCache"} | Num | DataPageCache 用于缓存数据的 Data Page | 数据 Cache,直接影响查询效率 | P0 | |
| {name="IndexPageCache"} | Num | IndexPageCache 用于缓存数据的 Index Page | 索引 Cache,直接影响查询效率 | P0 | |
| {name="LastSuccessChannelCache"} | Num | LastSuccessChannelCache 用于缓存导入接收端的 LoadChannel | |||
| {name="SegmentCache"} | Num | SegmentCache 用于缓存已打开的 Segment,如索引信息 | |||
doris_be_chunk_pool_local_core_alloc_count | Num | ChunkAllocator 中,从绑定的 core 的内存队列中分配内存的次数 | |||
doris_be_chunk_pool_other_core_alloc_count | Num | ChunkAllocator 中,从其他的 core 的内存队列中分配内存的次数 | |||
doris_be_chunk_pool_reserved_bytes | 字节 | ChunkAllocator 中预留的内存大小 | |||
doris_be_chunk_pool_system_alloc_cost_ns | 纳秒 | SystemAllocator 申请内存的耗时累计值 | 通过斜率可以观测内存分配的耗时 | P0 | |
doris_be_chunk_pool_system_alloc_count | Num | SystemAllocator 申请内存的次数 | |||
doris_be_chunk_pool_system_free_cost_ns | 纳秒 | SystemAllocator 释放内存的耗时累计值 | 通过斜率可以观测内存释放的耗时 | P0 | |
doris_be_chunk_pool_system_free_count | Num | SystemAllocator 释放内存的次数 | |||
doris_be_compaction_bytes_total | 字节 | Compaction 处理的数据量的累计值 | 记录的是 Compaction 任务中,input rowset 的 disk size。通过斜率可以观测 Compaction 的速率 | P0 | |
| {type="base"} | 字节 | Base Compaction 的数据量累计 | |||
| {type="cumulative"} | 字节 | Cumulative Compaction 的数据量累计 | |||
doris_be_compaction_deltas_total | Num | Compaction 处理的 rowset 个数的累计值 | 记录的是 Compaction 任务中,input rowset 的个数 | ||
| {type="base"} | Num | Base Compaction 处理的 rowset 个数累计 | |||
| {type="cumulative"} | Num | Cumulative Compaction 处理的 rowset 个数累计 | |||
doris_be_disks_compaction_num | Num | 指定数据目录上正在执行的 Compaction 任务数。如 {path="/path1/"} 表示 /path1 目录上正在执行的任务数 | 用于观测各个磁盘上的 Compaction 任务数是否合理 | P0 | |
doris_be_disks_compaction_score | Num | 指定数据目录上正在执行的 Compaction 令牌数。如 {path="/path1/"} 表示 /path1 目录上正在执行的令牌数 | |||
doris_be_compaction_used_permits | Num | Compaction 任务已使用的令牌数量 | 用于反映 Compaction 的资源消耗量 | ||
doris_be_compaction_waitting_permits | Num | 正在等待 Compaction 令牌的数量 | |||
doris_be_data_stream_receiver_count | Num | 数据接收端 Receiver 的数量 | FIXME:向量化引擎此指标缺失 | ||
doris_be_disks_avail_capacity | 字节 | 指定数据目录所在磁盘的剩余空间。如 {path="/path1/"} 表示 /path1 目录所在磁盘的剩余空间 | P0 | ||
doris_be_disks_local_used_capacity | 字节 | 指定数据目录所在磁盘的本地已使用空间 | |||
doris_be_disks_remote_used_capacity | 字节 | 指定数据目录所在磁盘的对应的远端目录的已使用空间 | |||
doris_be_disks_state | 布尔 | 指定数据目录的磁盘状态。1 表示正常,0 表示异常 | |||
doris_be_disks_total_capacity | 字节 | 指定数据目录所在磁盘的总容量 | 配合 doris_be_disks_avail_capacity 计算磁盘使用率 | P0 | |
doris_be_engine_requests_total | Num | BE 上各类任务执行状态的累计值 | |||
| {status="failed",type="xxx"} | Num | xxx 类型的任务的失败次数的累计值 | |||
| {status="total",type="xxx"} | Num | xxx 类型的任务的总次数的累计值 | 可以按需监控各类任务的失败次数 | P0 | |
{status="skip",type="report_all_tablets"} | Num | xxx 类型任务被跳过执行的次数的累计值 | |||
doris_be_fragment_endpoint_count | Num | 同 doris_be_data_stream_receiver_count | FIXME: 同 doris_be_data_stream_receiver_count 数目。并且向量化引擎缺失 | ||
doris_be_fragment_request_duration_us | 微秒 | 所有 fragment instance 的执行时间累计 | 通过斜率观测 instance 的执行耗时 | P0 | |
doris_be_fragment_requests_total | Num | 执行过的 fragment instance 的数量累计 | |||
doris_be_load_channel_count | Num | 当前打开的 load channel 个数 | 数值越大,说明当前正在执行的导入任务越多 | P0 | |
doris_be_local_bytes_read_total | 字节 | 由 LocalFileReader 读取的字节数 | P0 | ||
doris_be_local_bytes_written_total | 字节 | 由 LocalFileWriter 写入的字节数 | P0 | ||
doris_be_local_file_reader_total | Num | 打开的 LocalFileReader 的累计计数 | |||
doris_be_local_file_open_reading | Num | 当前打开的 LocalFileReader 个数 | |||
doris_be_local_file_writer_total | Num | 打开的 LocalFileWriter 的累计计数 | |||
doris_be_mem_consumption | 字节 | 指定模块的当前内存开销。如 {type="compaction"} 表示 Compaction 模块的当前总内存开销 | 值取自相同 type 的 MemTracker。FIXME | ||
doris_be_memory_allocated_bytes | 字节 | BE 进程物理内存大小,取自 /proc/self/status/VmRSS | P0 | ||
doris_be_memory_jemalloc | 字节 | Jemalloc stats,取自 je_mallctl | 含义参考:https://jemalloc.net/jemalloc.3.html | P0 | |
doris_be_memory_pool_bytes_total | 字节 | 所有 MemPool 当前占用的内存大小。统计值,不代表真实内存使用 | |||
doris_be_memtable_flush_duration_us | 微秒 | memtable 写入磁盘的耗时累计值 | 通过斜率可以观测写入延迟 | P0 | |
doris_be_memtable_flush_total | Num | memtable 写入磁盘的个数累计值 | 通过斜率可以计算写入文件的频率 | P0 | |
doris_be_meta_request_duration | 微秒 | 访问 RocksDB 中的 meta 的耗时累计 | 通过斜率观测 BE 元数据读写延迟 | P0 | |
| {type="read"} | 微秒 | 读取耗时 | |||
| {type="write"} | 微秒 | 写入耗时 | |||
doris_be_meta_request_total | Num | 访问 RocksDB 中的 meta 的次数累计 | 通过斜率观测 BE 元数据访问频率 | P0 | |
| {type="read"} | Num | 读取次数 | |||
| {type="write"} | Num | 写入次数 | |||
doris_be_fragment_instance_count | Num | 当前已接收的 fragment instance 的数量 | 观测是否出现 instance 堆积 | P0 | |
doris_be_process_fd_num_limit_hard | Num | BE 进程的文件句柄数硬限。通过 /proc/pid/limits 采集 | |||
doris_be_process_fd_num_limit_soft | Num | BE 进程的文件句柄数软限。通过 /proc/pid/limits 采集 | |||
doris_be_process_fd_num_used | Num | BE 进程已使用的文件句柄数。通过 /proc/pid/limits 采集 | |||
doris_be_process_thread_num | Num | BE 进程线程数。通过 /proc/pid/task 采集 | P0 | ||
doris_be_query_cache_memory_total_byte | 字节 | Query Cache 占用字节数 | |||
doris_be_query_cache_partition_total_count | Num | 当前 Partition Cache 缓存个数 | |||
doris_be_query_cache_sql_total_count | Num | 当前 SQL Cache 缓存个数 | |||
doris_be_query_scan_bytes | 字节 | 读取数据量的累计值。这里只统计读取 Olap 表的数据量 | |||
doris_be_query_scan_bytes_per_second | 字节/秒 | 根据 doris_be_query_scan_bytes 计算得出的读取速率 | 观测查询速率 | P0 | |
doris_be_query_scan_rows | Num | 读取行数的累计值。这里只统计读取 Olap 表的数据量。并且是 RawRowsRead(部分数据行可能被索引跳过,并没有真正读取,但仍会记录到这个值中) | 通过斜率观测查询速率 | P0 | |
doris_be_result_block_queue_count | Num | 当前查询结果缓存中的 fragment instance 个数 | 该队列仅用于被外部系统直接读取时使用。如 Spark on Doris 通过 external scan 查询数据 | ||
doris_be_result_buffer_block_count | Num | 当前查询结果缓存中的 query 个数 | 该数值反映当前 BE 中有多少查询的结果正在等待 FE 消费 | P0 | |
doris_be_routine_load_task_count | Num | 当前正在执行的 routine load task 个数 | |||
doris_be_rowset_count_generated_and_in_use | Num | 自上次启动后,新增的并且正在使用的 rowset id 个数 | |||
doris_be_s3_bytes_read_total | Num | S3FileReader 的打开累计次数 | |||
doris_be_s3_file_open_reading | Num | 当前打开的 S3FileReader 个数 | |||
doris_be_s3_bytes_read_total | 字节 | S3FileReader 读取字节数累计值 | |||
doris_be_scanner_thread_pool_queue_size | Num | 用于 OlapScanner 的线程池的当前排队数量 | 大于零则表示 Scanner 开始堆积 | P0 | |
doris_be_segment_read | {type="segment_read_total"} | Num | 读取的 segment 的个数累计值 | ||
doris_be_segment_read | {type="segment_row_total"} | Num | 读取的 segment 的行数累计值 | 该数值也包含了被索引过滤的行数。相当于读取的 segment 个数 * 每个 segment 的总行数 | |
doris_be_send_batch_thread_pool_queue_size | Num | 导入时用于发送数据包的线程池的排队个数 | 大于 0 则表示有堆积 | P0 | |
doris_be_send_batch_thread_pool_thread_num | Num | 导入时用于发送数据包的线程池的线程数 | |||
doris_be_small_file_cache_count | Num | 当前 BE 缓存的小文件数量 | |||
doris_be_streaming_load_current_processing | Num | 当前正在运行的 stream load 任务数 | 仅包含 curl 命令发送的任务 | ||
doris_be_streaming_load_duration_ms | 毫秒 | 所有 stream load 任务执行时间的耗时累计值 | |||
doris_be_streaming_load_requests_total | Num | stream load 任务数的累计值 | 通过斜率可观测任务提交频率 | P0 | |
doris_be_stream_load_pipe_count | Num | 当前 stream load 数据管道的个数 | 包括 stream load 和 routine load 任务 | ||
doris_be_stream_load | {type="load_rows"} | Num | stream load 最终导入的行数累计值 | 包括 stream load 和 routine load 任务 | P0 |
doris_be_stream_load | {type="receive_bytes"} | 字节 | stream load 接收的字节数累计值 | 包括 stream load 从 HTTP 接收的数据,以及 routine load 从 Kafka 读取的数据 | P0 |
doris_be_tablet_base_max_compaction_score | Num | 当前最大的 Base Compaction Score | 该数值实时变化,有可能丢失峰值数据。数值越高,表示 Compaction 堆积越严重 | P0 | |
doris_be_tablet_cumulative_max_compaction_score | Num | 同上。当前最大的 Cumulative Compaction Score | |||
doris_be_tablet_version_num_distribution | Num | tablet version 数量的直方 | 用于反映 tablet version 数量的分布 | P0 | |
doris_be_thrift_connections_total | Num | 创建过的 thrift 连接数的累计值。如 {name="heartbeat"} 表示心跳服务的连接数累计 | 此数值为 BE 作为服务端的 thrift server 的连接 | ||
doris_be_thrift_current_connections | Num | 当前 thrift 连接数。如 {name="heartbeat"} 表示心跳服务的当前连接数 | 同上 | ||
doris_be_thrift_opened_clients | Num | 当前已打开的 thrift 客户端的数量。如 {name="frontend"} 表示访问 FE 服务的客户端数量 | |||
doris_be_thrift_used_clients | Num | 当前正在使用的 thrift 客户端的数量。如 {name="frontend"} 表示正在用于访问 FE 服务的客户端数量 | |||
doris_be_timeout_canceled_fragment_count | Num | 因超时而被取消的 fragment instance 数量累计值 | 这个值可能会被重复记录。比如部分 fragment instance 被多次取消 | P0 | |
doris_be_stream_load_txn_request | {type="begin"} | Num | stream load 开始事务数的累计值 | 包括 stream load 和 routine load 任务 | |
doris_be_stream_load_txn_request | {type="commit"} | Num | stream load 执行成功的事务数的累计值 | 同上 | |
doris_be_stream_load_txn_request | {type="rollback"} | Num | stream load 执行失败的事务数的累计值 | 同上 | |
doris_be_unused_rowsets_count | Num | 当前已废弃的 rowset 的个数 | 这些 rowset 正常情况下会被定期删除 | ||
doris_be_upload_fail_count | Num | 冷热分层功能,上传到远端存储失败的 rowset 的次数累计值 | |||
doris_be_upload_rowset_count | Num | 冷热分层功能,上传到远端存储成功的 rowset 的次数累计值 | |||
doris_be_upload_total_byte | 字节 | 冷热分层功能,上传到远端存储成功的 rowset 数据量累计值 | |||
doris_be_load_bytes | 字节 | 通过 tablet sink 发送的数量累计 | 可观测导入数据量 | P0 | |
doris_be_load_rows | Num | 通过 tablet sink 发送的行数累计 | 可观测导入数据量 | P0 | |
fragment_thread_pool_queue_size | Num | 当前查询执行线程池等待队列的长度 | 如果大于零,则说明查询线程已耗尽,查询会出现堆积 | P0 | |
doris_be_all_rowsets_num | Num | 当前所有 rowset 的个数 | P0 | ||
doris_be_all_segments_num | Num | 当前所有 segment 的个数 | P0 | ||
doris_be_heavy_work_max_threads | Num | brpc heavy 线程池线程个数 | P0 | ||
doris_be_light_work_max_threads | Num | brpc light 线程池线程个数 | P0 | ||
doris_be_heavy_work_pool_queue_size | Num | brpc heavy 线程池队列最大长度,超过则阻塞提交 work | P0 | ||
doris_be_light_work_pool_queue_size | Num | brpc light 线程池队列最大长度,超过则阻塞提交 work | P0 | ||
doris_be_heavy_work_active_threads | Num | brpc heavy 线程池活跃线程数 | P0 | ||
doris_be_light_work_active_threads | Num | brpc light 线程池活跃线程数 | P0 | ||
routine_load_get_msg_latency | 毫秒 | Routine Load 获取 Kafka 消息的延迟 | |||
routine_load_get_msg_count | Num | Routine Load 获取 Kafka 消息的次数 | |||
routine_load_consume_bytes | 字节 | Routine Load 消费 Kafka 的数据量 | |||
routine_load_consume_rows | Num | Routine Load 消费 Kafka 的行数 |
机器监控
| 名称 | 标签 | 单位 | 含义 | 说明 | 等级 |
|---|---|---|---|---|---|
doris_be_cpu | Num | CPU 相关监控指标,从 /proc/stat 采集。会分别采集每个逻辑核的各项数值。如 {device="cpu0",mode="nice"} 表示 cpu0 的 nice 值 | 可计算得出 CPU 使用率 | P0 | |
doris_be_disk_bytes_read | 字节 | 磁盘读取量累计值。从 /proc/diskstats 采集。会分别采集每块磁盘的数值。如 {device="vdd"} 表示 vdd 盘的数值 | |||
doris_be_disk_bytes_written | 字节 | 磁盘写入量累计值。采集方式同上 | |||
doris_be_disk_io_time_ms | 毫秒 | 采集方式同上 | 可计算得出 IO Util | P0 | |
doris_be_disk_io_time_weighted | 毫秒 | 采集方式同上 | |||
doris_be_disk_reads_completed | Num | 采集方式同上 | |||
doris_be_disk_read_time_ms | 毫秒 | 采集方式同上 | |||
doris_be_disk_writes_completed | Num | 采集方式同上 | |||
doris_be_disk_write_time_ms | 毫秒 | 采集方式同上 | |||
doris_be_fd_num_limit | Num | 系统文件句柄限制上限。从 /proc/sys/fs/file-nr 采集 | |||
doris_be_fd_num_used | Num | 系统已使用文件句柄数。从 /proc/sys/fs/file-nr 采集 | |||
doris_be_file_created_total | Num | 本地文件创建次数累计 | 所有调用 local_file_writer 并最终 close 的文件计数 | ||
doris_be_load_average | Num | 机器 Load Avg 指标监控。如 {mode="15_minutes"} 为 15 分钟 Load Avg | 观测整机负载 | P0 | |
doris_be_max_disk_io_util_percent | 百分比 | 计算得出的所有磁盘中,最大的 IO UTIL 的磁盘的数值 | P0 | ||
doris_be_max_network_receive_bytes_rate | 字节/秒 | 计算得出的所有网卡中,最大的接收速率 | P0 | ||
doris_be_max_network_send_bytes_rate | 字节/秒 | 计算得出的所有网卡中,最大的发送速率 | P0 | ||
doris_be_memory_pgpgin | 字节 | 系统从磁盘写到内存页的数据量 | |||
doris_be_memory_pgpgout | 字节 | 系统内存页写入磁盘的数据量 | |||
doris_be_memory_pswpin | 字节 | 系统从磁盘换入到内存的数量 | 通常情况下,swap 应该关闭,因此这个数值应该是 0 | ||
doris_be_memory_pswpout | 字节 | 系统从内存换入到磁盘的数量 | 通常情况下,swap 应该关闭,因此这个数值应该是 0 | ||
doris_be_network_receive_bytes | 字节 | 各个网卡的接收字节累计。采集自 /proc/net/dev | |||
doris_be_network_receive_packets | Num | 各个网卡的接收包个数累计。采集自 /proc/net/dev | |||
doris_be_network_send_bytes | 字节 | 各个网卡的发送字节累计。采集自 /proc/net/dev | |||
doris_be_network_send_packets | Num | 各个网卡的发送包个数累计。采集自 /proc/net/dev | |||
doris_be_proc | {mode="ctxt_switch"} | Num | CPU 上下文切换的累计值。采集自 /proc/stat | 观测是否有异常的上下文切换 | P0 |
doris_be_proc | {mode="interrupt"} | Num | CPU 中断次数的累计值。采集自 /proc/stat | ||
doris_be_proc | {mode="procs_blocked"} | Num | 系统当前被阻塞的进程数(如等待 IO)。采集自 /proc/stat | ||
doris_be_proc | {mode="procs_running"} | Num | 系统当前正在执行的进程数。采集自 /proc/stat | ||
doris_be_snmp_tcp_in_errs | Num | tcp 包接收错误的次数。采集自 /proc/net/snmp | 可观测网络错误如重传、丢包等。需和其他 snmp 指标配合使用 | P0 | |
doris_be_snmp_tcp_in_segs | Num | tcp 包接收的个数。采集自 /proc/net/snmp | |||
doris_be_snmp_tcp_out_segs | Num | tcp 包发送的个数。采集自 /proc/net/snmp | |||
doris_be_snmp_tcp_retrans_segs | Num | tcp 包重传的个数。采集自 /proc/net/snmp |
常见问题
Q: 监控接口返回 404,怎么处理?
确认访问的是 FE 的 http_port 或 BE 的 webserver_port,并核对端口在 fe.conf / be.conf 中的实际值。
Q: Counter 类指标只增不减,是正常的吗?
这是正常现象。Counter 表示累计值,需通过间隔采集计算斜率(如 PromQL 的 rate())才能得到瞬时速率。
Q: doris_fe_max_journal_id 在多个 FE 之间差距过大,怎么处理?
表示元数据同步延迟。检查 Follower / Observer FE 与 Master FE 的网络连通性以及回放速度。
Q: Compaction Score 持续过高,怎么排查?
关注 doris_be_tablet_base_max_compaction_score 和 doris_be_tablet_cumulative_max_compaction_score,结合磁盘 IO、Compaction 任务数判断瓶颈。
Q: 查询/导入出现堆积,怎么排查?
检查 fragment_thread_pool_queue_size、doris_be_scanner_thread_pool_queue_size、doris_be_send_batch_thread_pool_queue_size 等线程池排队指标。