Q1: 如果收集的日志文件过大怎么办?
A: 默认单节点回传文件大小上限为 5GB(由系统配置 obdiag.basic.file_size_limit 控制)。若单次采集回传总大小超过该限制,会限制回传,结果中返回 Error:File too large。可调整查询时间范围,如在命令中配置 --inner_config obdiag.basic.file_size_limit=2G 或修改 /opt/oceanbase-diagnostic-tool/conf/inner_config.yml 中的 file_size_limit 进行调整。
Summary:
+------------------+----------------------+--------+------------+--------+------------+
| Node | Status | Size | Password | Time | PackPath |
+==================+======================+========+============+========+============+
| xxx.xxx.xxx.xxx | Error:File too large | 0.000B | | 21 s | |
+------------------+----------------------+--------+------------+--------+------------+
| xxx.xxx.xxx.xxx | Error:File too large | 0.000B | | 70 s | |
+------------------+----------------------+--------+------------+--------+------------+
Q2: 如果收集的日志数量过多怎么办?
A: 默认单节点单次回传文件数量上限为 50 个(由系统配置 obdiag.basic.file_number_limit 控制)。文件数量超过该限制时,不会回传超出部分,结果中会出现 Error:Too many files xx > 50 类提示。可缩小查询时间范围或增大限制,如修改配置文件路径中的 file_number_limit 参数,或执行命令时增加如下内部参数的入参:
--inner_config obdiag.basic.file_number_limit=100
系统配置文件路径为 /opt/oceanbase-diagnostic-tool/conf/inner_config.yml(源码安装时以实际路径为准)。
Q3: 报错 zip: command not found。
A: obdiag 3.2.0 (不含)以前采集信息回传的时候会用到目标主机的 zip 工具进行压缩,所以需要到被采集主机上安装 zip 工具。
Q4: 在执行source /usr/local/oceanbase-diagnostic-tool/init.sh 要求反复确认是否需要覆写。
A: 可能是因为 cp 指令被改写了增加了 -i 前缀,建议查看 ~/.bashrc 文件是否有存在 cp 指令被改写的情况,并删去 -i 后执行 source ~/.bashrc 来重置 cp 指令。
说明
该问题仅在 obdiag V3.2.0 之前版本存在,自 V3.2.0 起已经解决。
Q5: 在 Debian 系系统下为什么不会指令自动补全?
A: 部分 Debian 系下不会自动 source /etc/profile.d/obdiag.sh,用户可以手动将 source /etc/profile.d/obdiag.sh 语句加入到 ~/.bashrc 中。
Q6: obdiag config 指令执行时如果不想填写 ssh username 和 ssh password 怎么办?
A: 打通远程节点(一般是 OBServer 节点) 和 obdiag 部署节点的 ssh 免密即可。举例:机器 A 要 ssh 免密码登陆机器 B。
# step1: A 机器上生成公钥:(一路回车默认即可)
# id_rsa.pub (公钥)
ssh-keygen -t rsa
ls ~/.ssh
# step2: 上传 A 的公钥到机器 B
ssh-copy-id -i ~/.ssh/id_rsa.pub 用户@机器B的ip
Q7: 存在特殊字符的参数输入时,obdiag 对于参数的解析有问题,指令识别不正确。
A: 可使用临时环境变量的方式传入参数,避免 shell 对特殊字符(如 !)的解析问题。例如:
PASSWORD='xxxxx_!XSP'
obdiag gather scene run --scene=observer.perf_sql \
--env host=xx.xx.xx.xx --env port=2881 --env user=xxx@xxx --env password=$PASSWORD --env database=xx \
--env trace_id=YBxxxxx
Q8: 如何查看某次 obdiag 执行的详细日志?
A: 每次执行结束后会输出 Trace ID。使用 obdiag display-trace <trace_id> 可查看该次执行的详细日志。日志文件默认位于 ~/.obdiag/log/obdiag.log。