ocp租户监控无数据

【 使用环境 】测试环境
【 OB or 其他组件 】ocp
【 使用版本 】4.4.0-20251114143405
【问题描述】ocp中一个集群,租户监控信息不显示,主机监控显示正常

【复现路径】
【附件及日志】



【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

7 个赞

3 个赞

租户的所有监控项都没有数据吗?发下相应observer的monagent.log,压缩一下

2 个赞

太奇怪了

2 个赞

顶一下

2 个赞

陈波(60232038)邀请您在VDrive2.0协作
内容: monagent-ocp.zip

点击链接查看: https://sdrivesdt.catl.com/l/G1Rwat
提取码: tsgb
到期日: 无限制

2 个赞

log发来看一下

1 个赞

都对啊,

1 个赞

支持!!!

1 个赞

学习啦

这个集群的租户监控没数据,是因为 ocp_agent 采集 OceanBase 租户级监控视图的 SQL 持续超时/慢查询,导致核心租户指标采不上来;主机监控不依赖这些 OB 内部视图

monagent (1).log 里大量collect ob_metric xxx timeout

典型慢 SQL

   slow sql, name: ob_waitevent, duration: 15.056s
     select con_id tenant_id, sum(total_waits), sum(time_waited_micro)/1000000
     from v$system_event where wait_class <> 'IDLE' and (con_id > 1000 or con_id = 1)
     group by tenant_id;

   slow sql, name: ob_sysstat, duration: 16.121s
     select tenant_id, stat_id, value from v$sysstat, DBA_OB_TENANTS ...

   slow sql, name: ob_cache, duration: 40.780s
     select tenant_id, cache_name, cache_size from V$OB_KVCACHE ...
sys租户查询下

SELECT * FROM GV$OB_PROCESSLIST WHERE TENANT='sys' ORDER BY TIME DESC;
SELECT * FROM GV$OB_SQL_AUDIT WHERE TENANT_NAME='sys' ORDER BY ELAPSED_TIME DESC LIMIT 20;
2 个赞

手工查询过这些sql,确实在sys租户里执行慢,sys租户规格32C64G,看起来不像是资源限制,查看trace像是消耗在返回结果集上,相关版本有类似问题吗

这套集群是什么版本

4.2.5.6-106000022025082510

select /* MONITOR_AGENT */ tenant_id, stat_id, value from v$sysstat, DBA_OB_TENANTS where stat_id IN (30066, 50003, 50021, 50022, 50030, 50039, 50040, 60031, 60057, 60083, 80023, 80025, 80026, 120002, 120005, 120006, 200001) and (con_id > 1000 or con_id = 1) and DBA_OB_TENANTS.tenant_id = v$sysstat.con_id and DBA_OB_TENANTS.tenant_type<>‘META’ UNION ALL select con_id as tenant_id, stat_id, value from v$sysstat where stat_id IN (80025,80026,80023) and con_id > 1 and con_id < 1001;

把执行计划 全部发一下 在拿一下ASH报告 看看

ash报告拉取不了,很多内部监控SQL都慢,这个是随便拿了一个看的执行计划,刚才sql_audit拉旭辉一起看了下,感觉像是Observer端的文题导致的监控信息采集不上来

| =====================================================================================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|REAL.ROWS|REAL.TIME(us)|IO TIME(us)|CPU TIME(us)|

|0 |UNION ALL | |71 |1987 |1032 |35534369 |0 |68 |
|1 |├─MERGE JOIN | |35 |371 |1032 |17809950 |0 |238 |
|2 |│ ├─SUBPLAN SCAN |DBA_OB_TENANTS |86 |78 |86 |17809950 |0 |8 |
|3 |│ │ └─NESTED-LOOP OUTER JOIN | |86 |78 |86 |17809950 |0 |458 |
|4 |│ │ ├─TABLE FULL SCAN |A |86 |17 |86 |17809950 |0 |3018 |
|5 |│ │ └─MATERIAL | |7 |54 |7396 |17809950 |0 |297 |
|6 |│ │ └─SUBPLAN SCAN |C |7 |54 |86 |9396 |0 |15 |
|7 |│ │ └─MERGE DISTINCT | |7 |54 |86 |9396 |0 |16 |
|8 |│ │ └─MERGE GROUP BY | |15 |54 |258 |9396 |0 |62 |
|9 |│ │ └─SORT | |20 |52 |258 |9396 |0 |114 |
|10|│ │ └─HASH JOIN | |20 |50 |258 |9396 |0 |273 |
|11|│ │ ├─TABLE FULL SCAN|F |19 |6 |256 |6263 |0 |2950 |
|12|│ │ └─TABLE FULL SCAN|G |128 |29 |261 |9396 |0 |2962 |
|13|│ └─SORT | |35 |289 |2052 |17809950 |0 |1526 |
|14|│ └─SUBPLAN SCAN |GV$SYSSTAT |35 |284 |2052 |17807833 |0 |752 |
|15|│ └─TABLE RANGE SCAN |__all_virtual_sysstat|35 |283 |2052 |17807833 |0 |17754309 |
|16|└─TABLE RANGE SCAN |__all_virtual_sysstat|36 |1617 |0 |35535426 |0 |17682979 |

Outputs & filters:

0 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil)
1 - output([DBA_OB_TENANTS.TENANT_ID], [GV$SYSSTAT.STAT_ID], [GV$SYSSTAT.VALUE]), filter(nil)
equal_conds([DBA_OB_TENANTS.TENANT_ID = GV$SYSSTAT.CON_ID]), other_conds(nil)
merge_directions([ASC])
2 - output([DBA_OB_TENANTS.TENANT_ID]), filter(nil)
access([DBA_OB_TENANTS.TENANT_ID])
3 - output([A.tenant_id]), filter(nil)
conds([A.tenant_id = C.TENANT_ID OR A.tenant_id = C.META_TENANT_ID]), nl_params_(nil), use_batch=false
4 - output([A.tenant_id]), filter([CASE WHEN A.tenant_id = 1 THEN ‘SYS’ WHEN (T_OP_BIT_AND, A.tenant_id, cast(X’01’, BIGINT(-1, 0))) = 1 THEN ‘META’ ELSE
‘USER’ END != ‘META’])
access([A.tenant_id]), partitions(p1)
is_index_back=false, is_global_index=false, filter_before_indexback[false],
range_key([A.tenant_id]), range(MIN ; MAX)always true
5 - output([C.TENANT_ID], [C.META_TENANT_ID]), filter(nil)
6 - output([C.TENANT_ID], [C.META_TENANT_ID]), filter(nil)
access([C.TENANT_ID], [C.META_TENANT_ID])
7 - output([F.tenant_id], [CASE WHEN F.tenant_id < 1 THEN NULL WHEN F.tenant_id != 1 THEN F.tenant_id - 1 ELSE NULL END]), filter(nil)
distinct([F.tenant_id])
8 - output([F.tenant_id]), filter(nil)
group([F.tenant_id], [G.zone]), agg_func(nil)
9 - output([F.tenant_id], [G.zone]), filter(nil)
sort_keys([F.tenant_id, ASC], [G.zone, ASC])
10 - output([F.tenant_id], [G.zone]), filter(nil)
equal_conds([F.resource_pool_id = G.resource_pool_id]), other_conds(nil)
11 - output([F.resource_pool_id], [F.tenant_id]), filter([F.tenant_id > 0])
access([F.resource_pool_id], [F.tenant_id]), partitions(p1)
is_index_back=false, is_global_index=false, filter_before_indexback[false],
range_key([F.resource_pool_id]), range(MIN ; MAX)always true
12 - output([G.resource_pool_id], [G.zone]), filter([G.status != ‘DELETING’])
access([G.resource_pool_id], [G.status], [G.zone]), partitions(p1)
is_index_back=false, is_global_index=false, filter_before_indexback[false],
range_key([G.unit_id]), range(MIN ; MAX)always true
13 - output([GV$SYSSTAT.STAT_ID], [GV$SYSSTAT.VALUE], [GV$SYSSTAT.CON_ID]), filter(nil)
sort_keys([GV$SYSSTAT.CON_ID, ASC])
14 - output([GV$SYSSTAT.CON_ID], [GV$SYSSTAT.VALUE], [GV$SYSSTAT.STAT_ID]), filter(nil)
access([GV$SYSSTAT.CON_ID], [GV$SYSSTAT.VALUE], [GV$SYSSTAT.STAT_ID])
15 - output([__all_virtual_sysstat.tenant_id], [__all_virtual_sysstat.value], [__all_virtual_sysstat.stat_id]), filter([__all_virtual_sysstat.svr_ip =
HOST_IP()], [__all_virtual_sysstat.tenant_id > 1000 OR __all_virtual_sysstat.tenant_id = 1], [__all_virtual_sysstat.stat_id IN (30066, 50003, 50021, 50022,
50030, 50039, 50040, 60031, 60057, 60083, 80023, 80025, 80026, 120002, 120005, 120006, 200001)], [__all_virtual_sysstat.can_visible = 1], [__all_virtual_sysstat.svr_port
= RPC_PORT()])
access([__all_virtual_sysstat.tenant_id], [__all_virtual_sysstat.svr_ip], [__all_virtual_sysstat.svr_port], [__all_virtual_sysstat.can_visible], [__all_virtual_sysstat.value],
[__all_virtual_sysstat.stat_id]), partitions(p3)
is_index_back=false, is_global_index=false, filter_before_indexback[false,false,false,false,false],
range_key([__all_virtual_sysstat.tenant_id], [__all_virtual_sysstat.svr_ip], [__all_virtual_sysstat.svr_port], [__all_virtual_sysstat.statistic#]),
range(1000,MAX,MAX,MAX ; MAX,10.38.14.25,2882,MIN), (1,10.38.14.25,2882,MIN ; 1,10.38.14.25,2882,MAX)
16 - output([__all_virtual_sysstat.tenant_id], [__all_virtual_sysstat.stat_id], [__all_virtual_sysstat.value]), filter([__all_virtual_sysstat.svr_ip =
HOST_IP()], [__all_virtual_sysstat.stat_id IN (80025, 80026, 80023)], [__all_virtual_sysstat.tenant_id < 1001], [__all_virtual_sysstat.can_visible = 1],
[__all_virtual_sysstat.tenant_id > 1], [__all_virtual_sysstat.svr_port = RPC_PORT()])
access([__all_virtual_sysstat.tenant_id], [__all_virtual_sysstat.svr_ip], [__all_virtual_sysstat.svr_port], [__all_virtual_sysstat.can_visible], [__all_virtual_sysstat.value],
[__all_virtual_sysstat.stat_id]), partitions(p3)
is_index_back=false, is_global_index=false, filter_before_indexback[false,false,false,false,false,false],
range_key([__all_virtual_sysstat.tenant_id], [__all_virtual_sysstat.svr_ip], [__all_virtual_sysstat.svr_port], [__all_virtual_sysstat.statistic#]),
range(1,MAX,MAX,MAX ; 1001,MIN,MIN,MIN)

Used Hint:

/*+

*/
Qb name trace:

stmt_id:0, SET$1
stmt_id:1, SEL$1 > SEL$33582AE5 > SEL$7784D055
stmt_id:2, SEL$2 > SEL$2F8A4177
stmt_id:3, SEL$3 > SEL$A50C0DDB > SEL$1F8A3A80 > SEL$AD5573C3
stmt_id:4, SEL$4 > SEL$0A7B4D77 > SEL$3053D65C > SEL$4E1A5471 > SEL$5C3B1704
stmt_id:5, SEL$5 > SEL$9ABF49B5 > SEL$630FA7F4
stmt_id:6, SEL$6 > SEL$BCFD3484
stmt_id:7, SEL$7 > SEL$8CC5BAA5 > SEL$73F21024 > SEL$16AD5A75
stmt_id:8, SEL$8 > SEL$7B4B4EA9
stmt_id:9, SEL$9 > SEL$1B08284C
stmt_id:10, SEL$10 > SEL$B603E2FC
stmt_id:11, SEL$11 > SEL$98591A47
stmt_id:12, SEL$12 > SEL$0378F9F7 > SEL$D9B95943

Outline Data:

/*+
BEGIN_OUTLINE_DATA
LEADING(@“SEL$7784D055” (“DBA_OB_TENANTS”@“SEL$1” “GV$SYSSTAT”@“SEL$2”))
USE_MERGE(@“SEL$7784D055” “GV$SYSSTAT”@“SEL$2”)
LEADING(@“SEL$5C3B1704” (“A”@“SEL$4” “C”@“SEL$4”))
USE_NL(@“SEL$5C3B1704” “C”@“SEL$4”)
USE_NL_MATERIALIZATION(@“SEL$5C3B1704” “C”@“SEL$4”)
FULL(@“SEL$5C3B1704” “A”@“SEL$4”)
LEADING(@“SEL$16AD5A75” (“F”@“SEL$7” “G”@“SEL$7”))
USE_HASH(@“SEL$16AD5A75” “G”@“SEL$7”)
FULL(@“SEL$16AD5A75” “F”@“SEL$7”)
FULL(@“SEL$16AD5A75” “G”@“SEL$7”)
FULL(@“SEL$AD5573C3” “oceanbase”."__all_virtual_sysstat"@“SEL$3”)
FULL(@“SEL$D9B95943” “oceanbase”."__all_virtual_sysstat"@“SEL$12”)
PROJECT_PRUNE(@“SEL$2”)
PROJECT_PRUNE(@“SEL$4”)
PROJECT_PRUNE(@“SEL$3”)
PROJECT_PRUNE(@“SEL$5”)
PROJECT_PRUNE(@“SEL$8”)
PROJECT_PRUNE(@“SEL$9”)
PROJECT_PRUNE(@“SEL$6”)
PROJECT_PRUNE(@“SEL$11”)
PROJECT_PRUNE(@“SEL$12”)
MERGE(@“SEL$2F8A4177” > “SEL$1”)
MERGE(@“SEL$98591A47” > “SEL$10”)
MERGE(@“SEL$7” < “SEL$BCFD3484”)
MERGE(@“SEL$0378F9F7” < “SEL$B603E2FC”)
OUTER_TO_INNER(@“SEL$8CC5BAA5”)
ELIMINATE_JOIN(@“SEL$0A7B4D77” “E”@“SEL$4” “D”@“SEL$4” “B”@“SEL$4”)
PRED_DEDUCE(@“SEL$33582AE5”)
PRED_DEDUCE(@“SEL$A50C0DDB”)
PRED_DEDUCE(@“SEL$3053D65C”)
SIMPLIFY_GROUP_BY(@“SEL$9ABF49B5”)
PROJECT_PRUNE(@“SEL$4E1A5471”)
PROJECT_PRUNE(@“SEL$1F8A3A80”)
MERGE(@“SEL$73F21024” < “SEL$630FA7F4”)
OPTIMIZER_FEATURES_ENABLE(‘4.2.1.0’)
END_OUTLINE_DATA
*/
Optimization Info:

A:
table_rows:153
physical_range_rows:153
logical_range_rows:153
index_back_rows:0
output_rows:86
table_dop:1
dop_method:Table DOP
avaiable_index_name:[__all_virtual_tenant_mysql_sys_agent]
stats info:[version=2024-12-31 22:07:42.703096, is_locked=0, is_expired=0]
dynamic sampling level:1
estimation method:[DYNAMIC SAMPLING FULL]
F:
table_rows:19
physical_range_rows:19
logical_range_rows:19
index_back_rows:0
output_rows:19
table_dop:1
dop_method:Table DOP
avaiable_index_name:[__all_virtual_resource_pool_mysql_sys_agent]
stats info:[version=2023-11-06 22:00:34.780240, is_locked=0, is_expired=0]
dynamic sampling level:0
estimation method:[OPTIMIZER STATISTICS]
G:
table_rows:255
physical_range_rows:255
logical_range_rows:255
index_back_rows:0
output_rows:127
table_dop:1
dop_method:Table DOP
avaiable_index_name:[__all_virtual_unit_mysql_sys_agent]
stats info:[version=2025-10-03 22:13:23.682813, is_locked=0, is_expired=0]
dynamic sampling level:0
estimation method:[OPTIMIZER STATISTICS]
__all_virtual_sysstat:
table_rows:17121
physical_range_rows:2634
logical_range_rows:2634
index_back_rows:0
output_rows:34
table_dop:1
dop_method:Table DOP
avaiable_index_name:[all_virtual_sysstat_i1, __all_virtual_sysstat]
pruned_index_name:[all_virtual_sysstat_i1]
stats info:[version=2023-11-06 22:00:04.627425, is_locked=0, is_expired=0]
dynamic sampling level:0
estimation method:[OPTIMIZER STATISTICS]
__all_virtual_sysstat:
table_rows:17121
physical_range_rows:15617
logical_range_rows:15617
index_back_rows:0
output_rows:35
table_dop:1
dop_method:Table DOP
avaiable_index_name:[all_virtual_sysstat_i1, __all_virtual_sysstat]
pruned_index_name:[all_virtual_sysstat_i1]
stats info:[version=2023-11-06 22:00:04.627425, is_locked=0, is_expired=0]
dynamic sampling level:0
estimation method:[OPTIMIZER STATISTICS]

Plan Type:
LOCAL

Parameters:
:0 => 30066
:1 => 50003
:2 => 50021
:3 => 50022
:4 => 50030
:5 => 50039
:6 => 50040
:7 => 60031
:8 => 60057
:9 => 60083
:10 => 80023
:11 => 80025
:12 => 80026
:13 => 120002
:14 => 120005
:15 => 120006
:16 => 200001
:17 => 1000
:18 => 1
:19 => ‘META’
:20 => 80025
:21 => 80026
:22 => 80023
:23 => 1
:24 => 1001

Note:
Degree of Parallelisim is 1 because of table property

SELECT tenant_type, COUNT(*) cnt

FROM oceanbase.DBA_OB_TENANTS

GROUP BY tenant_type;

SELECT COUNT(DISTINCT con_id) tenant_cnt,
COUNT(*) total_rows,
COUNT(DISTINCT stat_id) stat_cnt
FROM oceanbase.v$sysstat;

SELECT COUNT(*) FROM (
SELECT tenant_id, stat_id, value
FROM v$sysstat, DBA_OB_TENANTS
WHERE stat_id IN (30066,50003,50021,50022,50030,50039,50040,
60031,60057,60083,80023,80025,80026,
120002,120005,120006,200001)
AND (con_id > 1000 OR con_id = 1)
AND DBA_OB_TENANTS.tenant_id = v$sysstat.con_id
AND DBA_OB_TENANTS.tenant_type <> ‘META’
) t;

这三个信息 也查一下