首批通过分布式安全可靠测评,为关键业务系统打造
总览
更新时间:2026-04-13 17:11:14
本文适用于独立部署 obdiag 的场景,使用 obdiag display 命令可帮助洞察 OceanBase 数据库相关的信息。
查看当前支持的场景
obdiag display scene list
obdiag display scene run 使用
obdiag display scene run --scene={SceneName}
选项说明如下:
| 选项名 | 是否必选 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|---|
| --scene | 是 | string | 默认为空 | 场景名,可以通过 obdiag display scene list 查看当前版本支持哪些场景。 |
| --env | 否 | string | 默认为空 | 部分场景需要额外的参数才能支持,可统一通过 --env 设置。 |
| -c | 否 | string | ~/.obdiag/config.yml |
配置文件路径。 |
| --inner_config | 否 | string | 默认为空 | obdiag 自用的配置。 |
| --config | 否 | string | 默认为空 | 需被 obdiag 诊断的集群的配置,固定样式:--config key1=value1 --config key2=value2。
说明支持通过该选项配置的参数可参见 obdiag 配置。 |
说明
obdiag display 不做信息的落盘,仅做黑屏展示。
使用示例
方式一:无配置文件使用(开箱即用)
obdiag display scene run --scene={SceneName} \
--config db_host=xx.xx.xx.xx \
--config db_port=xxxx \
--config tenant_sys.user=root@sys \
--config tenant_sys.password=***
方式二:有配置文件使用
需要确保已经在 obdiag 配置文件 config.yml 中配置好需要收集节点的登录信息。相关的详细配置介绍,参见 obdiag 配置。
obdiag display scene run --scene={SceneName}
自定义场景编写教程
一个 task 表示一个独立的场景,可以理解为一个专业的,用 yaml 编写的,用 obdiag 识别的脚本文件。
开始编写前
先进入 ${display.scenes_base_path},并创建我们的示例文件 test.yaml(以 OceanBase 数据库为测试目标):
cd ~/.obdiag/display/tasks/observer
touch test.yaml
以上便完成了编写前的步骤
开始编写
开始编写就是开始编辑我们的 test.yaml。
# 首先需要声明下这个场景的作用,为了让大家看得懂
info: "for test"
简单的内容已经结束,开始复杂的编写,注意细节
场景编写
task 的作用是声明场景采集执行的步骤,为了兼容不同版本可能导致的步骤的不同,其基础结构是一个 list。
task 的一个元素的结构如下
| 参数名 | 是否必填 | 说明 | 数据类型 |
|---|---|---|---|
| version | 否 | 表示适用的版本,使用方式见下示例 | 用 str 的形式表示范围,需要完整的数字的版本号,3.x 版本为三位,4.x 版本为四位,如:[3.1.1,3.2.0],版本支持遵循左开又闭的原则。 |
| steps | 是 | 所执行步骤 | 为 list 结构。 |
示例如下:
info: testinfo
task:
- version: "[3.1.0,3.2.4]"
steps:
{steps_object}
- version: [4.2.0.0,4.3.0.0]
steps:
{steps_object}
steps 又是一个 list,用来表示具体的多个执行流程。
steps 的一个元素的结构即单个流程,内容如下:
| 参数名 | 是否必填 | 说明 |
|---|---|---|
| type | 是 | 表示适用的执行类型,目前仅支持 SQL,后续会持续增加支持的类型。 |
| {sql} | 是 | 根据所选的类型提供的参数,这块比较依赖代码里对执行类型的逻辑说明,本章节后续会对支持的进行类型进行详细的使用说明。 |
各种类型示例如下,step: 仅为一个标记,无实际作用。
sql
执行 SQL 并获取对应的值:
step:
type: sql
sql: select tenant_name from oceanbase.__all_tenant;
global: false
说明
Global 字段是相对于节点来说的,标记为 true 的时候只会在第一个节点执行的时候执行一次,如果标记为 false 则会在每个节点进行执行。