oceanbase 进入客户端查看和prometheus看到的session数量不一样多

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

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

进入客户端查看:
10.104.102.11) [(none)]> SELECT * FROM oceanbase.V$OB_PROCESSLIST where STATE=‘ACTIVE’ and tenant=‘sys’;

看到一个会话

prometheus查看:
sum(ob_active_session_num{app=“OB”, endpoint=“port”, instance=“10.104.102.11:8088”,tenant_name=‘sys’})

返回值为9

为啥相差这么大

根据文档库中的信息,V$OB_PROCESSLIST 视图用于展示客户端连接到的节点的运行状态和性能指标信息,而 GV$OB_PROCESSLIST 视图用于展示租户所在的所有 OBServer 节点的会话信息。Prometheus 监控的数据通常是从整个集群的角度来收集的,因此可能会包含更多的会话信息,而不仅仅是您当前连接的节点上的会话。

以下是可能的原因:

  1. 视图范围不同

    • V$OB_PROCESSLIST 只显示客户端连接到的节点的会话信息。
    • GV$OB_PROCESSLIST 显示租户所在的所有 OBServer 节点的会话信息。
  2. Prometheus 监控范围

    • Prometheus 收集的是整个集群的会话信息,而不仅仅是您当前连接的节点。
  3. 会话状态

    • V$OB_PROCESSLIST 中的 STATE 字段可能只显示 ACTIVE 状态的会话,而 Prometheus 可能会统计所有状态的会话。

为了验证这些假设,您可以执行以下步骤:

  1. 查询所有节点的会话信息

    SELECT * FROM oceanbase.GV$OB_PROCESSLIST WHERE STATE='ACTIVE' AND TENANT='sys';
    
  2. 检查 Prometheus 查询

    • 确认 Prometheus 查询是否正确地过滤了 tenant_name 和其他条件。
    • 确认 Prometheus 查询的时间范围和数据采集频率。
  3. 对比结果

    • 比较 GV$OB_PROCESSLIST 的结果和 Prometheus 的结果,看看是否有明显的差异。

如果以上步骤仍然无法解释差异,建议进一步检查 Prometheus 的配置和数据采集脚本,确保它们正确地反映了集群的会话信息。

具体信息可参考以下文档:

  1. V$OB_PROCESSLIST
  2. GV$OB_PROCESSLIST
  3. 启用和关闭并行查询
  4. CONNECTION_ID
  5. 并行执行问题诊断
  6. DBMS_XPLAN 概述
  7. OceanBase 自有视图
  8. 9500 ~ 9999

查一下GV$OB_PROCESSLIST视图。你查看的是V$OB_PROCESSLIST

以V$开头命名的视图只能看到连接的节点信息
以GV$开头命名的视图可以看到OB集群全局的信息

1 个赞