首批通过分布式安全可靠测评,为关键业务系统打造
obdiag 配置
更新时间:2025-10-22 14:51:27
本文将介绍 obdiag 配置文件。
说明
使用 obd 部署的集群建议通过 obd obdiag 命令快速使用诊断功能,此时无需配置 obdiag 配置文件。具体命令介绍可参见官网《OceanBase 安装部署工具》文档中 obd 命令/诊断工具命令组。
前提条件
请确保已经安装 obdiag,详细信息,请参见 安装 obdiag。
配置说明
obdiag 配置文件的路径有两个,一个是用户侧的配置文件,支持自定义路径。一个是 obdiag 自用的系统配置文件,一般情况下无需修改。下面分别介绍这两个配置文件。
用户侧配置文件
用户侧配置文件可通过 obdiag config <option> 命令快速生成或者直接编辑配置文件,文件的默认路径是 ~/.obdiag/config.yml,其样板文件位于 ~/.obdiag/example。
obdiag config -h <db_host> -u <sys_user> [-p password] [-P port]
配置项说明如下:
| 参数名称 | 是否必须 | 说明 |
|---|---|---|
| db_host | 是 | OceanBase 集群 sys 租户的连接地址。 |
| sys_user | 是 | OceanBase 集群 sys 租户的连接用户,为避免权限问题建议使用 root@sys。当通过 OBProxy 进行连接时,需要附带加上集群名(如 root@sys#obtest)。 |
| -p password | 否 | OceanBase 集群 sys 租户的连接密码,默认为空。 |
| -P port | 否 | OceanBase集群 sys 租户的端口,默认为 2881。 |
例子:
# 密码非空例子
obdiag config -hxx.xx.xx.xx -uroot@sys -p***** -P2881
# 空密码场景
obdiag config -hxx.xx.xx.xx -uroot@sys -P2881
# 通过 obproxy 场景
obdiag config -hxx.xx.xx.xx -uroot@sys#obtest -p***** -P2883
执行 obdiag config 后会出现交互形式的输入,请填写正确的信息。
#obdiag config -hxx.xx.xx.xx -uroot@sys -Pxxxx -p*****
2024-01-31 09:57:24,019 [INFO] Getting all the node information of the cluster, please wait a moment ...
Please enter the following configuration !!!
Enter your oceanbase host ssh username (default:''): test # ssh 到各主机的用户名
Enter your oceanbase host ssh password (default:''): ********* # ssh 到各主机的用户对应的密码
Enter your oceanbase host ssh_port (default:'22'): 22 # ssh 的端口号,默认是22
Enter your oceanbase install home_path (default:'/root/observer'): /home/admin/oceanbase # OceanBase 部署的安装目录
Enter your need config obproxy [y/N] (default:'N'): y # 被诊断的集群是否需要带上obproxy
Enter your obproxy server eg:'192.168.1.1;192.168.1.2;192.168.1.3' (default:''): xx.xx.xx.xx # obproxy的节点ip
Enter your obproxy host ssh username (default:''): test # obproxy的节点的ssh用户
Enter your obproxy host ssh password (default:''): ********* # obproxy的节点的ssh用户密码
Enter your obproxy host ssh port (default:'22'): 22 # obproxy的节点的ssh的端口号,默认是22
Enter your obproxy install home_path (default:'/root/obproxy'): /home/admin/obproxy # obproxy的安装目录
2024-01-31 09:59:23,109 [INFO] Node information has been rewritten to the configuration file /test/.obdiag/config.yml, and you can enjoy the journey !
说明
使用 config 命令会进入交互模式按照提示填入信息。请按照实际情况填写。
执行完成后在 ~/.obdiag/config.yml 中会生成一份新的配置,如果原来 ~/.obdiag/config.yml 存在内容,将会将老配置备份到 ~/.obdiag/backup_conf 目录下。
一份完整的配置如下,分为三个部分,这三个部分可以按需配置。
# 第一部分:OCP 相关的
ocp:
login:
url: http://xx.xx.xx.xxx:xx
user: ****
password: ******
# 第二部分:obcluster 相关的
obcluster:
ob_cluster_name: test # 集群名
db_host: xx.xx.xx.1 # 集群的连接地址
db_port: 2881 # default 2881
tenant_sys: # sys租户的配置信息,为避免权限问题,建议配置root@sys
user: root@sys # 默认为 root@sys
password: ""
servers:
nodes:
- ip: xx.xx.xx.1
- ip: xx.xx.xx.2
- ip: xx.xx.xx.3
global:
ssh_username: **** # 登录信息,建议使用部署observer时所使用的用户信息
ssh_password: **** # 若不使用密码登录或无密码,可设置为“”
# ssh_port: 22 # ssh端口,默认为22
# ssh_key_file: "" # ssh秘钥地址,与ssh_password二选一即可
# ssh_type: remote # observer的部署模式目前支持remote、docker(不支持kube)默认为remote
# container_name: xxx # 当ssh_type为docker,此项必填,为observer的容器名
# observer的安装目录,例如observer的可执行程序为/root/observer/bin/observer
# 则需要填写的home_path为/root/observer
home_path: /root/observer
data_dir: /root/observer/store # observer的数据盘路径,一般为上文提到的${home_path}/store,与obd内同名配置概念一致
redo_dir: /root/observer/store # observer的日志盘盘路径,一般为上文提到的${home_path}/store,与obd内同名配置概念一致
# 第三部分:obproxy 相关
obproxy:
obproxy_cluster_name: obproxy
servers:
nodes:
- ip: xx.xx.xx.4
- ip: xx.xx.xx.5
- ip: xx.xx.xx.6
global:
ssh_username: **** # 登录信息,建议使用部署obproxy时所使用的用户信息
ssh_password: **** # 若不使用密码登录或无密码,可设置为“”
# ssh_port: 22 # ssh端口,默认为22
# ssh_key_file: "" # ssh秘钥地址,与ssh_password二选一即可
# ssh_type: remote # obproxy的部署模式目前支持remote、docker(不支持kube)默认为remote
# container_name: xxx # 当ssh_type为docker,此项必填,为obproxy的容器名
# obproxy的安装目录,例如obproxy的可执行程序为/root/obproxy/bin/obproxy
# 则需要填写的home_path为/root/obproxy
home_path: /root/obproxy
其中global 下的配置优先级低于特定节点下的配置,如果节点下配置了,将会走节点下的特定配置,如果节点没配置特定信息,走 global 下的配置。
例如下面的 obcluster 的配置,在每个 IP 下面都有自己的配置,则 global 下的和 IP 下配置相同的项将以 IP 下的为实际配置。
obcluster:
ob_cluster_name: test
db_host: xx.xx.xx.1
db_port: 2881 # default 2881
tenant_sys:
user: root@sys # default root@sys
password: ""
servers:
nodes:
- ip: xx.xx.xx.1
ssh_username: ****
ssh_password: ****1
home_path: /root/observer1
data_dir: /root/observer/store1
redo_dir: /root/observer/store1
- ip: xx.xx.xx.2
ssh_username: ****2
ssh_password: ****2
home_path: /root/observer2
data_dir: /root/observer/store2
redo_dir: /root/observer/store2
- ip: xx.xx.xx.3
ssh_username: ****3
ssh_password: ****3
home_path: /root/observer3
data_dir: /root/observer/store3
redo_dir: /root/observer/store3
global:
ssh_port: 22
说明
obdiag 自 V3.2.0 起支持配置 ipv6 地址,示例
ip: "xxxx:xxxx:xxx:xxxx:xxxx:xxxx:xxx:xxxx"更多的配置样例,可参考
~/.obdiag/example目录下的文件。如果您的 OB 集群为 docker 方式部署,配置文件可参考
~/.obdiag/example/docker_ob_cluster.yml如果您的 OB 集群为通过 ob-operator(k8s) 方式部署,配置文件可参考
~/.obdiag/example/operator.yml
不使用用户侧配置文件处理方法
obdiag >= 2.4.0 版本支持通过 --config 参数来传递用户侧的配置文件,让使用者可以无配置文件即可开箱即用 obdiag。本小节将介绍一下如何通过 --config 来传递配置。
说明
--config的参数传递可叠加使用,固定样式:--config key1=value1 --config key2=value2。- 原 ~/.obdiag/config.yml 样式的配置文件中 nodes 列表 通过在 nodes 后追加 [num] 来表名同一个节点的信息,如:obcluster.servers.nodes[0]。
- 原 ~/.obdiag/config.yml 样式的配置文件层级关系通过
.来区分。
完整的配置通过 --config 传递的话形式如下:
--config ocp.login.url=http://xx.xx.xx.xxx:xx \
--config ocp.login.user=**** \
--config ocp.login.password=****** \
--config obcluster.ob_cluster_name=test \
--config obcluster.db_host=xx.xx.xx.1 \
--config obcluster.db_port=2881 \
--config obcluster.tenant_sys.user=root@sys \
--config obcluster.tenant_sys.password="" \
--config obcluster.servers.nodes[0].ip=xx.xx.xx.1 \
--config obcluster.servers.nodes[1].ip=xx.xx.xx.2 \
--config obcluster.servers.nodes[2].ip=xx.xx.xx.3 \
--config obcluster.servers.global.ssh_username=**** \
--config obcluster.servers.global.ssh_password=**** \
--config obcluster.servers.global.ssh_port=22 \
--config obcluster.servers.global.home_path=/root/observer \
--config obcluster.servers.global.data_dir=/root/observer/store \
--config obcluster.servers.global.redo_dir=/root/observer/store \
--config obproxy.obproxy_cluster_name=obproxy \
--config obproxy.servers.nodes[0].ip=xx.xx.xx.4 \
--config obproxy.servers.nodes[1].ip=xx.xx.xx.5 \
--config obproxy.servers.nodes[2].ip=xx.xx.xx.6 \
--config obproxy.servers.global.ssh_username=**** \
--config obproxy.servers.global.ssh_password=**** \
--config obproxy.servers.global.ssh_port=22 \
--config obproxy.servers.global.home_path=/root/obproxy
配置中若需要使用ipv6地址,示例如下:
--config obcluster.servers.nodes[0].ip="xxxx:xxxx:xxx:xxxx:xxxx:xxxx:xxx:xxxa"
当然为了能够少输入一些内容,obdiag 支持部分内容简写,简写表如下
| 简写 | 完整配置 |
|---|---|
db_host |
obcluster.db_host |
db_port |
obcluster.db_port |
tenant_sys.user |
obcluster.tenant_sys.user |
tenant_sys.password |
obcluster.tenant_sys.password |
ssh_username |
obcluster.servers.global.ssh_username |
ssh_password |
obcluster.servers.global.ssh_password |
ssh_port |
obcluster.servers.global.ssh_port |
home_path |
obcluster.servers.global.home_path |
obproxy_home_path |
obproxy.servers.global.home_path |
系统配置文件(obdiag 自用的配置)
配置文件位于 /opt/oceanbase-diagnostic-tool/conf/inner_config.yml。
obdiag:
basic:
config_path: ~/.obdiag/config.yml # 用户侧的配置文件路径
config_backup_dir: ~/.obdiag/backup_conf # 通过 obdiag config 命令执行时,老配置文件会进行备份,备份路径
file_number_limit: 50 # 对单台远程主机执行一次采集命令回传的文件数量上限
file_size_limit: 5G # 对单台远程主机执行一次采集命令回传的文件大小上限
dis_rsa_algorithms: 0 # 禁用RSA算法,主要目的是解决SSH连接兼容性问题,默认值为0
strict_host_key_checking: 0 # 控制 SSH 连接时的主机密钥检查策略,用于验证远程服务器的身份。
logger:
log_dir: ~/.obdiag/log # obdiag 自身的执行日志存储路径
log_filename: obdiag.log # obdiag 自身的执行日志存储文件名
file_handler_log_level: DEBUG # obdiag 自身的执行日志输出的最低级别
log_level: INFO # obdiag 自身的执行日志级别
mode: obdiag
stdout_handler_log_level: INFO # obdiag 打印到屏幕上的最低日志级别
error_stream: sys.stdout # 错误日志输出流,默认值为 sys.stdout
silent: false # 是否静默模式
ssh_client:
remote_client_sudo: 0 # 是否使用 sudo 执行远程命令,默认值为 0
cmd_exec_timeout: 180 # 远程命令执行超时时间,默认值为 180 秒
analyze:
thread_nums: 3
check: # 巡检所需配置,一般场景下不需要变更
ignore_version: false # 忽略 OceanBase 的版本
work_path: "~/.obdiag/check" # 巡检报告输出路径
report:
report_path: "./check_report/" # 巡检报告输出路径
export_type: table # 巡检报告输出类型
tasks_base_path: "~/.obdiag/check/tasks/" # 巡检任务的基础目录
gather:
scenes_base_path: "~/.obdiag/gather/tasks" # gather 场景的目录
redact_processing_num: 3
thread_nums: 3
rca:
result_path: "./obdiag_rca/" # rca结果存储路径
obdiag >= 2.4.0 版本支持通过 --inner_config 参数来传递 obdiag 的系统配置。本小节将介绍一下如何通过 --inner_config 来传递配置。
说明
inner_config的参数传递可叠加使用,固定样式:--inner_config key1=value1 --inner_config key2=value2。- 原 /opt/oceanbase-diagnostic-tool/conf/inner_config.yml 样式的配置文件层级关系通过
.来区分。
配置通过 --inner_config 传递的样例如下:
# 限制文件数量和文件大小
--inner_config obdiag.basic.file_number_limit=20
--inner_config obdiag.basic.file_size_limit=2G
# 禁用RSA算法
--inner_config obdiag.basic.dis_rsa_algorithms=1
# 控制 obdiag 在静默模式下的输出格式为 markdown
--inner_config obdiag.logger.silent=true
--inner_config obdiag.logger.silent_type=md