首批通过分布式安全可靠测评,为关键业务系统打造
obproxy_digest.log
更新时间:2026-04-10 16:11:03
obproxy_digest.log 日志是 ODP 审计日志,记录执行时间大于参数 query_digest_time_threshold 阈值(默认 100ms)的请求和错误响应请求。
日志格式
obproxy_digest.log 日志的通用格式如下:
日志打印时间,逻辑租户名,TraceId,RpcId,逻辑库名,物理库信息(cluster:tenant:database),数据库类型(OB/RDS),逻辑表名,物理表名,SQL 命令,SQL 类型(CRUD),执行结果(success/failed),错误码(success 时为空),SQL,执行总耗时(us),ODP 处理时间,连接建立时间,OBServer 节点执行时间,当前线程名,无需关注字段
需要了解如下信息:
SQL 命令:显示为 COM_QUERY、COM_STMT_PREPARE 等。SQL:根据执行的请求类型不同,此字段内容有所区别,具体如下。- SQL 请求:打印执行的 SQL 语句。
- OBKV 请求:打印 OBKV 请求的路由信息。
OBKV 请求的路由信息格式为
{请求类型}-{table_id}-{partition_id}-{无需关注字段}-{无需关注字段},各字段含义如下:{请求类型}:OBKV 请求的类型,有以下三种取值:shard:跨分区请求中的父请求。sub:跨分区请求中的子请求。single:非跨分区请求。
{table_id}:表的唯一 ID 标识。{partition_id}:当前请求路由计算得到的分区 ID,如果是跨分区父请求,该值为-1。{无需关注字段}:目前固定为0,无需关注。
执行总耗时:包括内部 SQL 执行耗时。当前线程名:显示 ODP 的内部线程 ID。无需关注字段:显示的均为内部使用相关的字段,您无需关注。
示例
此处使用 select sleep(3) from dual 模仿慢 SQL,执行后查看 obproxy_digest.log,可以看到 ODP 执行花费了 409us,OceanBase 数据库执行花了 3039883us。内容如下:
2022-07-11 14:32:51.758265,undefined,,,,obcluster:sys:test,OB_MYSQL,,,COM_QUERY,SELECT,success,,select sleep(3),3041116us,409us,0us,3039883us,Y0-7F4B1CEA13A0,,,,0,11.xxx.xxx.53:33041
# 日志通过逗号分隔,如果 SQL 中有逗号,会通过 %2C 替代,通过 tr ',' '\n' 替换结果如下
1,2022-07-11 14:32:51.758265 #日志打印时间
2,undefined # 逻辑租户名,无需关注
3, # TraceId,无需关注
4, # RpcId,无需关注
5, # 逻辑库名,无需关注
6,obcluster:sys:test # 物理库信息(cluster:tenant:database)
7,OB_MYSQL # 数据库类型
8, # 逻辑表名
9, # 物理表名
10,COM_QUERY # SQL 命令(COM_QUERY、COM_STMT_PREPARE 等)
11,SELECT # SQL 类型
12,success # 执行结果(success/failed)
13, # 错误码(success 时为空)
14,select sleep(3) # SQL 语句
15,3041116us # 执行总耗时(包括内部 SQL 执行耗时)
16,409us # ODP 处理时间
17,0us # 建立连接时间
18,3039883us # OBServer 节点执行时间
19,Y0-7F4B1CEA13A0 # ODP 内部日志 trace_id
20, # 无需关注,内部使用
21, # 无需关注,内部使用
22, # 无需关注,内部使用
23,0 # 无需关注,内部使用
24,11.xxx.xxx.53:33041 # 路由到的 OBServer 节点的地址信息
对于审计日志比较重要的是第 14 行记录了执行的 SQL,15 ~ 16 记录了详细的执行时间,如果数据库执行慢第 18 行的时间就会很长。
相关文档
query_digest_time_threshold 配置项的详细介绍可参见 query_digest_time_threshold。