-
Notifications
You must be signed in to change notification settings - Fork 32
300.obdiag‐config‐guide
本文将介绍 obdiag 配置文件。
使用 OBD 部署的集群不能直接使用 `obdiag xxx` 命令。OBD 不部署 obdiag,而是 OBD 部署的集群可以通过 `obd obdiag` 来快速的使用诊断功能。
请确保已经安装 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 | 否 | OceanBas e集群 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 oceanbase data_dir (default:'/home/admin/oceanbase/store'): # OceanBase 部署的数据盘目录
Enter your oceanbase redo_dir (default:'/home/admin/oceanbase/store'): # OceanBase 部署的redo数据的目录
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/example
目录下的文件。 位于 /usr/local/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: 20 # 对单台远程主机执行一次采集命令回传的文件数量上限
file_size_limit: 2G # 对单台远程主机执行一次采集命令回传的文件大小上限
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 打印到屏幕上的最低日志级别
check: # 巡检所需配置,一般场景下不需要变更
ignore_version: false # 忽略 OceanBase 的版本
report:
report_path: "./check_report/" # 巡检报告输出路径
export_type: table # 巡检报告输出类型
package_file: "~/.obdiag/check/observer_check_package.yaml" # 巡检套餐文件路径
tasks_base_path: "~/.obdiag/check/tasks/" # 巡检任务的基础目录
gather:
scenes_base_path: "~/.obdiag/gather/tasks" # gather 场景的目录
rca:
result_path: "./rca/" # rca结果存储路径
OceanBase是原生分布式数据库系统,故障根因分析通常是比较繁琐的,因为涉及的因素可能有很多,如机器环境、配置参数、运行负载等等。专家在排查问题的时候需要获取大量的信息来分析故障,如何高效的获取故障场景下分散在各个节点的信息,挖掘出其中的关联性,帮助用户自助诊断问题便是obdiag的价值。