首批通过分布式安全可靠测评,为关键业务系统打造
诊断工具命令组
更新时间:2024-12-08 23:00:00
obd 集成了 Oceanbase Diagnostic Tool(简称: obdiag)工具,obdiag 现有功能包含了对 OceanBase 数据库日志、SQL Audit 以及 OceanBase 数据库进程堆栈等信息的扫描收集,支持通过 obd 实现诊断信息的一键采集。详细 obdiag 信息可参考 obdiag GitHub 仓库。
说明
本文介绍的命令仅支持对 obd 管理的 OceanBase 集群进行操作,对于通过其他方法部署的集群,使用 obdiag 进行信息收集以及诊断分析的操作介绍可参见 敏捷诊断工具文档。
obd obdiag deploy
使用该命令可在本机安装部署 obdiag 工具。
obd obdiag deploy
obd obdiag gather
使用该命令组可调用 obdiag 工具对 obd 管理的 OceanBase 数据库进行相关的诊断信息收集。
obd obdiag gather <gather type> <deploy name> [options]
gather type 包含如下:
log:一键收集所属 OceanBase 集群的日志。
sysstat:一键收集所属 OceanBase 集群主机信息。
clog:一键收集所属 OceanBase 集群的 clog 日志。
slog:一键收集所属 OceanBase 集群的 slog 日志。
plan_monitor:一键收集所属 OceanBase 集群指定 trace_id 的并行 SQL 的执行详情信息。
stack:一键收集所属 OceanBase 集群的堆栈信息。
perf:一键收集所属 OceanBase 集群的 perf 信息。
obproxy_log:一键收集所属 OceanBase 集群所依赖的 ODP 的日志。
all:一键统一收集所属 OceanBase 集群的诊断信息,包括收集 OceanBase 集群日志、主机信息、OceanBase 集群堆栈信息、OceanBase 集群 perf 信息。
scene: 一键收集所属 OceanBase 集群在指定故障场景下的诊断信息。
obd obdiag gather log
使用该命令可以一键收集所属 OceanBase 集群的日志。
obd obdiag gather log <deploy name> [options]
参数 deploy name 为部署名,可以理解为配置文件的别名。
选项说明见下表:
| 选项名 | 是否必选 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|---|
| --from | 否 | string | 默认为空 | 日志收集的开始时间,格式为: "yyyy-mm-dd hh:mm:ss",需要加引号,例如 "1970-01-01 12:00:00" |
| --to | 否 | string | 默认为空 | 日志收集的结束时间,格式为: "yyyy-mm-dd hh:mm:ss",需要加引号,例如 "1970-01-01 13:00:00" |
| --since | 否 | string | 默认为空 | 日志收集最近的某段时间,格式为: <n> <m|h|d>,其中,n 表示待输入的时间数字,m 表示分钟,h 表示小时,d 表示天,例如 30m 表示收集最近 30 分钟的日志 |
| --scope | 否 | string | all | 选择收集的 OceanBase 集群日志类型,可配置值为 observer、election、rootservice、all |
| --grep | 否 | string | 默认为空 | 选择查询的关键字,若配置多个关键字,日志行需同时满足 --grep 中全部关键字才会被收集。 |
| --encrypt | 否 | string | false | 指定回传的文件是否加密,可配置为 true 或 false,默认为 false |
| --store_dir | 否 | string | 默认为命令执行的当前路径 | 存储结果的本地路径 |
| --obdiag_dir | 否 | string | $HOME/oceanbase-diagnostic-tool | obdiag 的安装目录 |
obd obdiag gather sysstat
使用该命令可以一键收集所属 OceanBase 集群主机信息(主机 dmesg 信息、主机 CPU 信息、主机内存信息)。
obd obdiag gather sysstat <deploy name> [options]
参数 deploy name 为部署名,可以理解为配置文件的别名。
选项说明见下表:
| 选项名 | 是否必选 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|---|
| --store_dir | 否 | string | 默认为命令执行的当前路径 | 存储结果的本地路径 |
| --obdiag_dir | 否 | string | $HOME/oceanbase-diagnostic-tool | obdiag 的安装目录 |
obd obdiag gather clog
使用该命令可以一键收集所属 OceanBase 集群的 clog 日志。
obd obdiag gather clog <deploy name> [options]
参数 deploy name 为部署名,可以理解为配置文件的别名。
选项说明见下表:
| 选项名 | 是否必选 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|---|
| --from | 否 | string | 默认为空 | 日志收集的开始时间,格式为: "yyyy-mm-dd hh:mm:ss",需要加引号,例如 "1970-01-01 12:00:00" |
| --to | 否 | string | 默认为空 | 日志收集的结束时间,格式为: "yyyy-mm-dd hh:mm:ss",需要加引号,例如 "1970-01-01 13:00:00" |
| --since | 否 | string | 默认为空 | 日志收集最近的某段时间,格式为: <n> <m|h|d>,其中,n 表示待输入的时间数字,m 表示分钟,h 表示小时,d 表示天,例如 30m 表示收集最近 30 分钟的日志 |
| --encrypt | 否 | string | false | 指定回传的文件是否加密,可配置为 true 或 false,默认为 false |
| --store_dir | 否 | string | 默认为命令执行的当前路径 | 存储结果的本地路径 |
| --obdiag_dir | 否 | string | $HOME/oceanbase-diagnostic-tool | obdiag 的安装目录 |
obd obdiag gather slog
使用该命令可以一键收集所属 OceanBase 集群的 slog 日志。
obd obdiag gather slog <deploy name> [options]
参数 deploy name 为部署名,可以理解为配置文件的别名。
选项说明见下表:
| 选项名 | 是否必选 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|---|
| --from | 否 | string | 默认为空 | 日志收集的开始时间,格式为: "yyyy-mm-dd hh:mm:ss",需要加引号,例如 "1970-01-01 12:00:00" |
| --to | 否 | string | 默认为空 | 日志收集的结束时间,格式为: "yyyy-mm-dd hh:mm:ss",需要加引号,例如 "1970-01-01 13:00:00" |
| --since | 否 | string | 默认为空 | 日志收集最近的某段时间,格式为: <n> <m|h|d>,其中,n 表示待输入的时间数字,m 表示分钟,h 表示小时,d 表示天,例如 30m 表示收集最近 30 分钟的日志 |
| --encrypt | 否 | string | false | 指定回传的文件是否加密,可配置为 true 或 false,默认为 false |
| --store_dir | 否 | string | 默认为命令执行的当前路径 | 存储结果的本地路径 |
| --obdiag_dir | 否 | string | $HOME/oceanbase-diagnostic-tool | obdiag 的安装目录 |
obd obdiag gather plan_monitor
该命令可以一键收集所属 OceanBase 集群指定 trace_id 的并行 SQL 的执行详情信息,便于在 AP 场景下 SQL 执行慢时分析算子层面的原因。
说明
该功能仅支持 OceanBase 数据库 V3.0 及以上版本。
obd obdiag gather plan_monitor <deploy name> [options]
参数 deploy name 为部署名,可以理解为配置文件的别名。
选项说明见下表:
| 选项名 | 是否必选 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|---|
| --trace_id | 是 | string | 默认为空 | OceanBase 数据库 V4.0.0 以下版本可从 gv$sql_audit 中查看 trace_id,OceanBase 数据库 V4.0.0 及以上版本可从 gv$ob_sql_audit 中查看 trace_id |
| --env | 否 | string | 默认为空 | 需要的额外配置统一通过 env 传递进去,此处是传递访问 OceanBase 数据库的用户连接串用于连接到用户数据库下获取执行计划,样例:--env "{db_connect='-hxx -Pxx -uxx -pxx -Dxx'}" |
| --store_dir | 否 | string | 默认为命令执行的当前路径 | 存储结果的本地路径 |
| --obdiag_dir | 否 | string | $HOME/oceanbase-diagnostic-tool | obdiag 的安装目录 |
obd obdiag gather stack
该命令可以一键收集所属 OceanBase 集群的堆栈信息,该采集项暂不支持 arm 版本。
obd obdiag gather stack <deploy name> [options]
参数 deploy name 为部署名,可以理解为配置文件的别名。
选项说明见下表:
| 选项名 | 是否必选 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|---|
| --store_dir | 否 | string | 默认为命令执行的当前路径 | 存储结果的本地路径 |
| --obdiag_dir | 否 | string | $HOME/oceanbase-diagnostic-tool | obdiag 的安装目录 |
obd obdiag gather perf
该命令可以一键收集所属 OceanBase 集群的 perf 信息。
obd obdiag gather perf <deploy name> [options]
参数 deploy name 为部署名,可以理解为配置文件的别名。
选项说明见下表:
| 选项名 | 是否必选 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|---|
| --scope | 否 | string | all | 用于选择性地收集指定的 perf 信息,可配置值为:sample、flame、all |
| --store_dir | 否 | string | 默认为命令执行的当前路径 | 存储结果的本地路径 |
| --obdiag_dir | 否 | string | $HOME/oceanbase-diagnostic-tool | obdiag 的安装目录 |
obd obdiag gather obproxy_log
使用该命令可以一键收集所属 OceanBase 集群所依赖的 ODP 的日志。
obd obdiag gather obproxy_log <deploy name> [options]
参数 deploy name 为部署名,可以理解为配置文件的别名。
选项说明见下表:
| 选项名 | 是否必选 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|---|
| --from | 否 | string | 默认为空 | 日志收集的开始时间,格式为: "yyyy-mm-dd hh:mm:ss",需要加引号,例如 "1970-01-01 12:00:00" |
| --to | 否 | string | 默认为空 | 日志收集的结束时间,格式为: "yyyy-mm-dd hh:mm:ss",需要加引号,例如 "1970-01-01 13:00:00" |
| --since | 否 | string | 默认为空 | 日志收集最近的某段时间,格式为: <n> <m|h|d>,其中,n 表示待输入的时间数字,m 表示分钟,h 表示小时,d 表示天,例如 30m 表示收集最近 30 分钟的日志 |
| --scope | 否 | string | all | 选择查询的 ODP 日志类型,可配置值为 obproxy、obproxy_digest、obproxy_stat、obproxy_slow、obproxy_limit、all |
| --grep | 否 | string | 默认为空 | 选择查询的关键字,若配置多个关键字,日志行需同时满足 --grep 中全部关键字才会被收集。 |
| --encrypt | 否 | string | false | 指定回传的文件是否加密,可配置为 true 或 false,默认为 false |
| --store_dir | 否 | string | 默认为命令执行的当前路径 | 存储结果的本地路径 |
| --obdiag_dir | 否 | string | $HOME/oceanbase-diagnostic-tool | obdiag 的安装目录 |
obd obdiag gather all
使用该命令可以一键统一收集所属 OceanBase 集群的诊断信息,包括收集 OceanBase 集群日志、主机信息、OceanBase 集群堆栈信息、OceanBase 集群 perf 信息。
obd obdiag gather all <deploy name> [options]
参数 deploy name 为部署名,可以理解为配置文件的别名。
选项说明见下表:
| 选项名 | 是否必选 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|---|
| --from | 否 | string | 默认为空 | 日志收集的开始时间,格式为: "yyyy-mm-dd hh:mm:ss",需要加引号,例如 "1970-01-01 12:00:00" |
| --to | 否 | string | 默认为空 | 日志收集的结束时间,格式为: "yyyy-mm-dd hh:mm:ss",需要加引号,例如 "1970-01-01 13:00:00" |
| --since | 否 | string | 默认为空 | 日志收集最近的某段时间,格式为: <n> <m|h|d>,其中,n 表示待输入的时间数字,m 表示分钟,h 表示小时,d 表示天,例如 30m 表示收集最近 30 分钟的日志 |
| --scope | 否 | string | all | 选择收集的 OceanBase 集群日志类型,可配置值为 observer、election、rootservice、all |
| --grep | 否 | string | 默认为空 | 选择查询的关键字,若配置多个关键字,日志行需同时满足 --grep 中全部关键字才会被收集。 |
| --encrypt | 否 | string | false | 指定回传的文件是否加密,可配置为 true 或 false,默认为 false |
| --store_dir | 否 | string | 默认为命令执行的当前路径 | 存储结果的本地路径 |
| --obdiag_dir | 否 | string | $HOME/oceanbase-diagnostic-tool | obdiag 的安装目录 |
obd obdiag gather scene run
该命令用于收集所属 OceanBase 集群在指定故障场景下的诊断信息。
obd obdiag gather scene run <deploy name> --scene=<SceneName> [options]
参数 deploy name 为部署名,可以理解为配置文件的别名。参数 SceneName 为故障场景名,可通过 obd obdiag gather scene list 命令查看支持的场景。
选项说明见下表:
| 选项名 | 是否必选 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|---|
| --scene | 是 | string | 默认为空 | 场景名,可以通过 obd obdiag gather scene list 命令查看当前版本支持的场景。 |
| --from | 否 | string | 默认为空 | 日志收集的开始时间,格式为: "yyyy-mm-dd hh:mm:ss",需要加引号,例如 "1970-01-01 12:00:00"。 |
| --to | 否 | string | 默认为空 | 日志收集的结束时间,格式为: "yyyy-mm-dd hh:mm:ss",需要加引号,例如 "1970-01-01 13:00:00"。 |
| --since | 否 | string | 默认为空 | 日志收集最近的某段时间,格式为: <n> <m|h|d>,其中,n 表示待输入的时间数字,m 表示分钟,h 表示小时,d 表示天,例如 30m 表示收集最近 30 分钟的日志。 |
| --env | 否 | string | 默认为空 | 部分场景需要额外配置,具体场景及配置信息可通过执行 obd obdiag gather scene list 命令查看。 |
| --store_dir | 否 | string | 默认为命令执行的当前路径 | 设置存储结果的本地路径。 |
| --obdiag_dir | 否 | string | $HOME/oceanbase-diagnostic-tool | 指定 obdiag 的安装目录。 |
| --dis_update | 否 | string | 默认为true | 预留参数,用于禁止自动更新收集场景配置 |
obd obdiag check
使用该命令可帮助 OceanBase 数据库进行相关状态巡检,目前支持从系统内核参数、内部表等方式对 OceanBase 数据库进行分析,发现已存在或可能会导致集群出现异常问题的原因分析并提供运维建议。
obd obdiag check <deploy name> [options]
参数 deploy name 为部署名,可以理解为配置文件的别名。
选项说明见下表:
| 选项名 | 是否必选 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|---|
| --cases | 否 | string | 默认为所有 tasks | 需要执行的巡检项目的集合名。当未赋值时执行所有的 tasks。task 的详细介绍可参见 《OceanBase 敏捷诊断工具》中 一键集群巡检 一文。 |
| --store_dir | 否 | string | ./check_report/ | 指定报告输出路径。 |
| --obdiag_dir | 否 | string | $HOME/oceanbase-diagnostic-tool | obdiag 的安装目录。 |
| --dis_update | 否 | string | 默认为true | 预留参数,用于禁止自动更新收集场景配置 |
obd obdiag analyze
使用该命令组可调用 obdiag 工具对 obd 管理的 OceanBase 数据库进行分析诊断。
obd obdiag analyze <analyze type> <deploy name> [options]
analyze type 包含如下:
log:一键分析 obd 管理的 OceanBase 数据库的日志。
flt_trace:一键对 obd 管理的 OceanBase 数据库 trace 日志进行全链路诊断。
obd obdiag analyze log
使用该命令可以一键分析 obd 管理的 OceanBase 数据库的日志。
obd obdiag analyze log <deploy name> [options]
参数 deploy name 为部署名,可以理解为配置文件的别名。
选项说明见下表:
| 选项名 | 是否必选 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|---|
| --from | 否 | string | 默认为空 | 日志收集的开始时间,格式为: "yyyy-mm-dd hh:mm:ss",需要加引号,例如 "1970-01-01 12:00:00" 。 |
| --to | 否 | string | 默认为空 | 日志收集的结束时间,格式为: "yyyy-mm-dd hh:mm:ss",需要加引号,例如 "1970-01-01 13:00:00" 。 |
| --since | 否 | string | 默认为空 | 日志收集最近的某段时间,格式为: <n> <m|h|d>,其中,n 表示待输入的时间数字,m 表示分钟,h 表示小时,d 表示天,例如 30m 表示收集最近 30 分钟的日志。 |
| --scope | 否 | string | all | 选择分析的 OceanBase 集群日志类型,可配置值介绍如下。
|
| --grep | 否 | string | 默认为空 | 选择查询的关键字,若配置多个关键字,日志行需同时满足 --grep 中全部关键字才会被收集。 |
| --log_level | 否 | string | WARN | 指定分析的 OceanBase 数据库日志最低等级,可配置的日志等级由低到高依次为 DEBUG、TRACE、INFO、WDIAG、WARN、EDIAG、ERROR。 |
| --files | 否 | string | 默认为空 | 指定离线分析日志文件模式,需要传递相关 OceanBase 数据库日志或者日志路径,离线分析模式下 --from、--to、--since 将不需要设置。 |
| --store_dir | 否 | string | 默认为命令执行的当前路径 | 设置存储结果的本地路径。 |
| --obdiag_dir | 否 | string | $HOME/oceanbase-diagnostic-tool | 指定 obdiag 的安装目录。 |
obd obdiag analyze flt_trace
使用该命令可以一键对 obd 管理的 OceanBase 数据库 trace 日志进行全链路诊断。
obd obdiag analyze flt_trace <deploy name> [options]
参数 deploy name 为部署名,可以理解为配置文件的别名。
选项说明见下表:
| 选项名 | 是否必选 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|---|
| --flt_trace_id | 是 | string | flt_trace_id | flt_trace_id 可从 OceanBase 数据库 GV$OB_SQL_AUDIT 视图中查看 FLT_TRACE_ID 或者直接通过 trace.log 查找。视图 GV$OB_SQL_AUDIT 的详细介绍可参见《OceanBase 数据库》文档 GV$OB_SQL_AUDIT。 |
| --store_dir | 否 | string | 默认为命令执行的当前路径 | 设置存储结果的本地路径。 |
| --files | 否 | string | 默认为空 | --files 用于指定离线分析日志文件模式,一旦指定 --files 则进入离线分析日志模式。 |
| --top | 否 | string | 5 | 展示在全链路诊断结果中耗时最长的 Top N 叶子节点。 |
| --recursion | 否 | string | 8 | 设置最多可递归的全链路诊断层数。 |
| --output | 否 | string | 60 | 设置打印到屏幕上的结果行数,全量结果会完整的存储到结果文件中。 |
| --obdiag_dir | 否 | string | $HOME/oceanbase-diagnostic-tool | 指定 obdiag 的安装目录。 |
obd obdiag rca run
使用该命令可以对 obd 管理的 OceanBase 数据库进行特定故障场景的诊断信息分析,找出导致问题的可能原因。
obd obdiag rca run <deploy name> --scene=<scene_name> [options]
参数 deploy name 为部署名,可以理解为配置文件的别名。参数 scene_name 为故障场景名,可通过 obd obdiag rca list 命令查看支持的场景。
选项说明见下表:
| 选项名 | 是否必选 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|---|
| --scene | 是 | string | 默认为空 | 指定需要进行根因分析的场景,可通过 obd obdiag rca list 命令查看支持的场景列表。 |
| --store_dir | 否 | string | ./rca |
设置根因分析结果保存路径。 |
| --parameters | 否 | string | 默认为空 | 预留选项,目前无需关注。 |
| --obdiag_dir | 否 | string | $HOME/oceanbase-diagnostic-tool | 指定 obdiag 的安装目录。 |