该工具适用于OB2.x、OB3.x、OB4.x版本集群(目前2.0以下版本的obdiag因适配问题还无法用于OB2.x,建议使用2.0最新版obdiag)
该工具适用于如下场景所涉及的OB(内部表、日志)、OBPROXY(日志)的信息收集:
- obloader/obdumper导数问题
- OB进程CORE、无故重启
- obproxy进程CORE、无故重启
- CLOG盘满问题
- UNIT迁移、副本不均衡问题
- 有主选举、无主选举问题
- OCP出现OB日志告警、OB日志有ERROR
- 长事务和悬挂事务问题
- 备份恢复问题
- SQL执行报错、PL执行报错
- 应用报错
- OB内存问题(-4030、-4013)
- OB启动问题(启动慢、启动失败)
- 正在发生的CPU跑满场景(过去式的CPU跑满信息获取有限)
- 主备库异常场景
- 合并异常场景
- 集群通过2881或2883无法连接问题
该工具不适用于如下场景所涉及的OB(内部表、日志)、OBPROXY(日志)的信息收集:
- sql执行慢、PL执行慢
- sql结果集错误
- sql兼容性问题
注意事项:
1,默认每个ob节点只取20个数据文件,如果无法满足需求,需要修改/usr/local/oceanbase-diagnostic-tool/conf/inner_config.yml配置文件的file_number_limit参数。具体参考https://www.oceanbase.com/docs/common-obdiag-cn-1000000000632495
2,主备问题,需要分别获取主库和备库的信息,需要"obdiag config"配置不同数据源后执行命令后获取2次
3,由于该工具在收集日志时,会先把日志copy到对应ob节点的/tmp目录,如果收集的日志比较多,可能需要较多的/tmp磁盘空间
工具下载:
1,打开地址:https://www.oceanbase.com/softwarecenter
2,按如下图片进行下载
工具安装:
1,将下载的rpm包传输到对应主机(无需OB所在主机,只要该主机与OB集群的网络可达即可)
2,执行如下命令安装:
$sudo rpm -ivh oceanbase-diagnostic-tool-1.6.0-22024020410.el7.x86_64.rpm
warning: Unable to get systemd shutdown inhibition lock: Unit is masked.
Preparing... ################################# [100%]
Updating / installing...
1:oceanbase-diagnostic-tool-1.6.0-2################################# [100%]
Please execute the following command to init obdiag:
source /usr/local/oceanbase-diagnostic-tool/init.sh
3,安装完成后,执行如下命令初始化:
[admin@e69a01088.et15sqa /home/shoubian.ls]
$source /usr/local/oceanbase-diagnostic-tool/init.sh
Init obdiag finished
如上步骤一切正常后,即可使用
工具使用:
配置OB集群信息:
注意事项:
1,如果要收集obproxy的日志,务必配置obproxy的信息
2,上面的信息务必配置正确,避免获取信息失败
3,ssh的用户和密码是必须要配置且准确,否则无法运行
4,ssh建议配置admin用户
执行如下命令,配置集群相关信息:
obdiag config -h11.166.86.111 -uroot@sys -P2881 -pxxxx
根据提示填写正确信息,正常输出如下:
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 !
运行收集命令:
收集OB相关信息:
1,将下面的文件all_ob_relative_informations.yaml,copy到~/.obdiag/gather/tasks/observer目录下,".obdiag"目录是在安装obdiag软件的对应用户目录下存在:
然后执行如下命令,收集信息,其中--from为问题开始时间,--to为问题结束时间,obdiag会根据提供的时间区间自动获取日志、内部视图结果:
obdiag gather scene run --scene=observer.all_ob_relative_informations --from 2024-03-21 15:40:00 --to 2024-03-21 22:05:00
注意:
如上命令不建议手敲输入,手敲可能会出错,如果手敲输入,需要检查字符完全准确
收集obproxy相关信息:
1,将下面的文件obproxy_all_informations.yaml,copy到~/.obdiag/gather/tasks/obproxy目录下,".obdiag"目录是在安装obdiag软件的对应用户目录下存在:
📎obproxy_all_informations.yaml
然后执行如下命令,收集信息,其中--from为问题开始时间,--to为问题结束时间,obdiag会根据提供的时间区间自动获取日志、内部视图结果:
obdiag gather scene run --scene=obproxy.obproxy_all_informations --from 2024-03-21 15:40:00 --to 2024-03-21 22:05:00
注意:
如上命令不建议手敲输入,手敲可能会出错,如果手敲输入,需要检查字符完全准确
获取信息并提供:
程序运行结束后,最后会显示目录名称,一般是在当前的程序运行目录下,如下,将如下结果提供给售后支持人员即可:
2024-03-24 00:09:05,886 [INFO] step nu: 82 execute end
2024-03-24 00:09:05,886 [INFO] scene execute end
2024-03-24 00:09:05,886 [INFO] execute tasks end : observer.all_ob_relative_informations
If you want to view detailed obdiag logs, please run:' obdiag display-trace --trace_id 55484174-f481-3580-818d-ed9152cadad3 '
Gather scene results stored in this directory: gather_pack_20240324000843
目录内包含运行结果,如下: