OCP SQL诊断无数据

【 使用环境 】生产环境
【 OB or 其他组件 】OCP
【 使用版本 】OCP 4.0.3
【问题描述】清晰明确描述问题
OCP中的SQL诊断为空,没有任何信息
【复现路径】问题出现前后相关操作
【问题现象及影响】

【附件】

确认一下是不是没有sql?如果有那就得看看是不是采集关闭了

租户是否有流量,监控数据,sql_audit是否开启了

可以提供下ocp_agent和ocp的日志
agent 日志在observer机器上
/home/admin/ocp_agent/log
ocp日志需要进入到容器中
docker exec -it ocp bash
/home/admin/logs/ocp/

有开启sql_audit,有sql进行

集群中observer的sql_audit为true了,ocp日志中有(monagent.pipeline.sql.audit.status=inactive), (monagent.pipeline.plan.monitor.status=inactive), (monagent.pipeline.sql.plan.status=inactive), (monagent.pipeline.transaction.status=inactive), (monagent.pipeline.session.status=inactive), (monagent.pipeline.slow.sql.status=inactive,agent日志有caller=engine/pipeline_module_callback.go:119:InitPipelineModuleCallback: pipeline module config monitor.ob.sql.audit is inactive or invalid, just skip

看起来就是agent没有采集,可以把agent的日志文件还有配置文件都发一下吗

配置是默认文件,对agent日志筛了error,都是重复这两条
2023-05-25T15:31:05.34304+08:00 WARN [529526,dcc4a3e969e7ff09] caller=mysql/table_input.go:328:collectData: failed to do collect with sql select /* MONITOR_AGENT */ tenant_id, stat_id, value from v$sysstat where stat_id IN (30066, 50003, 50021, 50022, 50030, 50039, 50040, 60031, 60057, 60083, 80023, 80025, 80026, 120002, 120005, 120006, 200001, 200002) 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 and value > 0, args:[], err: Error 1054: Unknown column ‘DBA_OB_TENANTS.tenant_id’ in ‘where clause’

2023-05-25T15:31:05.34318+08:00 ERROR [529526,dcc4a3e969e7ff09] caller=common/input_cache.go:39:Update: update cache for key ob_sysstat, err: Error 1054: Unknown column ‘DBA_OB_TENANTS.tenant_id’ in ‘where clause’

补充一点信息,OCP的MetaDB和MonitorDB也部署在这个集群里。我是先用社区版OBD创建了4.1的OB,然后创建Meta、Monitor对应租户和数据库,再部署ocp 4.0.3进去接管这个集群,不知道会不会有冲突。

看报错Unknown column ‘DBA_OB_TENANTS.tenant_id’ in ‘where clause’ 说明 DBA_OB_TENANTS表找不到 tenant_id 字段,你需要检查下你的数据库是不是设置了大小写敏感,导致了tenant_id无法找到。

检查了下相关数据库,编码格式均无大小写敏感。单独查询DBA_OB_TENANTS.tenant_id字段是可以执行的,无大小写问题

我重新检查了一下系统报错这条sql,截取前面一小段简化
select tenant_id, stat_id from v$sysstat where DBA_OB_TENANTS.tenant_id = v$sysstat.con_id;
其中tenant_id为表DBA_OB_TENANTS字段,stat_id为表v$sysstat字段。这样查询会报错找不到DBA_OB_TENANTS.tenant_id。

只有改为select tenant_id, stat_id from v$sysstat,DBA_OB_TENANTS where DBA_OB_TENANTS.tenant_id = v$sysstat.con_id;才能正确执行,不是知道是否为agent的sql编写错误,还是我数据库设置问题。麻烦帮忙看一下

可以发一下monagent.log的完整日志看看吗,这条报错信息应该是sql有问题,按照你修改过的才是正确的,但是查询的数据是v$sysstat, 影响的范围应该不是SQL诊断相关的功能