收集诊断信息
通过运行收集程序来收集必要的信息, 方便问题诊断。
运行环境要求
- Linux操作系统.
- 可通过
kubectl
访问对应的kubernetes集群. - 可运行的命令:bash、kubectl、tar、touch、sed等.
收集日志
以下介绍两种方式用于收集日志。
方法一: 下载并执行诊断脚本
- 选择或者创建一个工作目录,比如选择工作目录路径为``, 执行如下命令:
mkdir -p {{工作目录路径}}
export WORKSPACE={{工作目录路径}}
- 下载诊断脚本:
curl -L "https://polardbx-opensource.oss-cn-hangzhou.aliyuncs.com/scripts/diagnose.sh" -o diagnose.sh
- 确定PolarDB-X实例所在的namespace 和 polardbx-operator所在的namespace
请在如下命令中,将
\{\{PolarDB-X实例所在的namespace\}\}
和\{\{polardbx-operator所在的namespace\}\}
,替换为实际的值,然后执行:
export PXC_INSTANCE_NAMESPACE={{PolarDB-X实例所在的namespace}}
export PXC_OPERATOR_NAMESPACE={{polardbx-operator所在的namespace}}
- 运行脚本
sh diagnose.sh -n $PXC_INSTANCE_NAMESPACE -m $PXC_OPERATOR_NAMESPACE -w $WORKSPACE
- 运行结果
工作目录下,会出现一个名称以polardbx_diagnose_
开头的文件夹,文件名后缀部分为格式为yyyyMMddHHmmss
的日期时间。
脚本运行结束后,会在工作目录下生成一个名为polardbx-diagnose.tar.gz
的文件(可将该压缩包交给相关人员进行问题诊断),该文件包含了诊断所需的所有日志,是polardbx_diagnose_
开头的文件夹的压缩包。
方法二: 在诊断Pod内执行脚本
如果安装的polardbx-operator版本不低于v1.6.0,则可以使用 Clinic Pod,该Pod内已经满足脚本的运行条件,通过如下命令获取Pod名称
- 进入诊断Pod
通过如下命令获取Pod名称:
kubectl -n {{polardbx-operator namesapce}} get pods -l app.kubernetes.io/component=clinic,app.kubernetes.io/name=polardbx-operator
执行结果如下:
NAME READY STATUS RESTARTS AGE
polardbx-clinic-6c4d9cbfb4-whc75 1/1 Running 0 19h
通过kubectl exec
命令进入该Pod内的 /root 目录下,比如:
kubectl -n polardbx-operator-system exec -it polardbx-clinic-6c4d9cbfb4-whc75 bash
- 确定PolarDB-X实例所在的namespace 和 polardbx-operator所在的namespace
请在如下命令中,将
\{\{PolarDB-X实例所在的namespace\}\}
和\{\{polardbx-operator所在的namespace\}\}
,替换为实际的值,然后执行:
export PXC_INSTANCE_NAMESPACE={{PolarDB-X实例所在的namespace}}
export PXC_OPERATOR_NAMESPACE={{polardbx-operator所在的namespace}}
- 运行脚本
sh diagnose.sh -n $PXC_INSTANCE_NAMESPACE -m $PXC_OPERATOR_NAMESPACE -w /root/workspace
执行完成后,/root/workspace 目录下会有:
- finished 文件
- polardbx-diagnose.tar.gz 文件
polardbx_diagnose_
为前缀的目录,文件名后缀部分为格式为yyyyMMddHHmmss的日期时间,polardbx-diagnose.tar.gz 文件由该目录经压缩所得
/root/workspace 下的文件不会自动清理,请视磁盘容量进行手动清理。
- 下载日志到本地
以便于问题诊断或者上传到别处,可通过 kubectl cp
命令先将运行结果拷贝到本地,比如:
kubectl -n polardbx-operator-system cp polardbx-clinic-6c4d9cbfb4-whc75:/root/workspace/polardbx-diagnose.tar.gz polardbx-diagnose.tar.gz
日志内容
文件内容由三级目录构成。
一级目录内容
内容如下表所示:
文件名称 | 文件类型 | 描述 |
---|---|---|
cn.sql | 文本 | 收集CN上信息的时候,在CN上所执行的SQL语句 |
dn.sql | 文本 | 收集DN信息的时候,在DN上所执行的SQL语句 |
{{polardbx实例所在的namespace}} | 目录 | 目录下保存了该namesapce下收集的诊断信息 |
{{polardbx-operator所在的namespace}} | 目录 | 目录下保存了该namesapce下收集的诊断信息 |
注意: {{polardbx实例所在的namespace}} 和 {{polardbx-operator所在的namespace}} 分别由执行收集脚本的时候传入的
-n
和-m
参数决定。
二级目录内容
目录名称为资源类型:
目录名称 | 资源类型 | 实例namespace下 | operator的namespace下 |
---|---|---|---|
ConfigMap | 基本 | Yes | Yes |
Deployment | 基本 | Yes | Yes |
Node | 基本 | Yes | Yes |
Pod | 基本 | Yes | Yes |
XStore | 基本 | Yes | Yes |
DaemonSet | 基本 | No | Yes |
PolarDBXBackupSchedule | 备份调度策略 | Yes | No |
PolarDBXBackup | 全量数据备份 | Yes | No |
PolarDBXCluster | PolarDB-X实例资源类型 | Yes | No |
PolarDBXBackupBinlog | PolarDB-X增量日志备份 | Yes | No |
PolarDBXLogCollector | 日志采集 | Yes | No |
PolarDBXMonitor | 性能监控 | Yes | No |
PolarDBXParameter | 实例参数 | Yes | No |
PolarDBXParameterTemplate | 实例参数模版 | Yes | No |
SystemTask | 系统后台任务 | Yes | No |
XStoreFollower | 重搭任务 | Yes | No |
XStoreBackup | XStore全量备份 | Yes | No |
XStoreBackupBinlog | XStore增量日志备份 | Yes | No |
注意: polardbx-operator的namespace下configmap描述文件(polardbx-controller-manager-config.yaml和polardbx-hpfs-config.yaml) 里可能保存有密钥信息,脚本会将敏感字段脱敏处理成
******
。
三级目录内容
包含各个资源的描述文件,这里对Pod资源做重点介绍。
Pod资源下有较多诊断信息,如下表所示({{PodName}}表示Pod名称):
文件名称 | 哪些Pod有 | 描述 |
---|---|---|
{{PodName}}.yaml | ALL | Pod的yaml格式的描述文件,通过 kubectl -n {{namespace}} get pod {{PodName}} -o yaml 获取 |
{{PodName}}_describe.txt | ALL | Pod的describe信息,通过 kubectl -n {{namespace}} describe pod {{PodName}} 获取 |
{{PodName}}_engine.log | CN、DN、CDC | engine容器的标准输出日志 |
{{PodName}}_exporter.log | CN、DN、CDC | exporter容器的标准输出日志 |
{{PodName}}_prober.log | CN、DN、CDC | prober容器的标准输出日志 |
{{PodName}}_updater.log | polardbx-tools-updater | updater容器的标准输出日志 |
{{PodName}}_hpfs.log | polardbx-hpfs | hpfs容器的标准输出日志 |
{{PodName}}_polardbx-clinic.log | polardbx-clinic | polardbx-clinic容器的标准输出日志 |
{{PodName}}_polardbx-operator.log | polardbx-controller-manager | polardbx-operator容器的标准输出日志 |
{{PodName}}-cmdresponse.log | CN、DN、CDC | 执行诊断信息采集的命令的执行结果 |
{{PodName}}-mysql.tar.gz | DN | 在容器内执行cd /data/mysql/log/ && tar zcvf mysql.tar.gz alert.log /data/mysql/conf/* 获得的压缩包 |
{{PodName}}-tddlog.tar.gz | CN | 在容器内执行cd /home/admin/drds-server/logs/tddl && tar zcvf tddllog.tar.gz *.log 获得的压缩包 |
{{PodName}}-cdc.tar.gz | CDC | 在容器内执行cd /home/admin/drds-server/logs/cdc && tar zcvf cdc.tar.gz *.log 获得的压缩包 |
{{PodName}}-cmdresponse.log文件内容说明:
CN、DN、CDC的{{PodName}}-cmdresponse.log文件都包含如下命令的执行结果:
#查看资源限制
ulimit -a
#查看系统参数
sysctl -a
#查看内存使用情况
free -h
#查看进程
ps -ef
#查看资源使用情况
vmstat
其中针对CN还包含如下SQL命令的执行结果:
#查看版本号
select version();
#查看存储节点列表
show storage;
#查看mpp集群
show mpp;
#查看会话列表
show full processlist;
#查看变量
show variables;
针对DN还包含如下SQL命令的执行结果:
#查看版本号
select version();
#查看会话列表
show processlist;
#查看变量
show variables;
#在Leader上执行可以查看集群日志复制状态
, 及其他协议层相关信息
select *
from information_schema.alisql_cluster_global;
#可查看当前实例的日志复制状态
, 及其他协议层相关信息
select *
from information_schema.alisql_cluster_local;
#在Leader上执行可以查看集群健康状况
select *
from information_schema.alisql_cluster_health;
#查看binlog文件列表
show consensus logs;
#查看备库复制状态
show slave status;
例子
.
|-- default
| |-- ConfigMap
| | |-- list.txt
| | |-- polardb-x-study-pvzr-config.yaml
| | |-- polardb-x-study-pvzr-dn-0-config.yaml
| | |-- polardb-x-study-pvzr-dn-0-shared.yaml
| | |-- polardb-x-study-pvzr-dn-0-task.yaml
| | |-- polardb-x-study-pvzr-gms-config.yaml
| | |-- polardb-x-study-pvzr-gms-shared.yaml
| | |-- polardb-x-study-pvzr-gms-task.yaml
| | `-- polardb-x-study-pvzr-task.yaml
| |-- Deployment
| | |-- list.txt
| | |-- polardb-x-study-pvzr-cdc-default.yaml
| | `-- polardb-x-study-pvzr-cn-default.yaml
| |-- Node
| | |-- cn-beijing.172.16.2.119.yaml
| | |-- cn-beijing.172.16.2.204.yaml
| | |-- cn-beijing.172.16.2.205.yaml
| | |-- cn-beijing.172.16.2.54.yaml
| | |-- cn-beijing.172.16.4.121.yaml
| | |-- cn-beijing.172.16.4.122.yaml
| | |-- cn-beijing.172.16.4.19.yaml
| | `-- list.txt
| |-- Pod
| | |-- cdclist.txt
| | |-- cdcpodlist.txt
| | |-- cnlist.txt
| | |-- cnpodlist.txt
| | |-- dnlist.txt
| | |-- dnpodlist.txt
| | |-- polardb-x-study-pvzr-cdc-default-78c68fc9b-d58p7-cdc.tar.gz
| | |-- polardb-x-study-pvzr-cdc-default-78c68fc9b-d58p7-cmdresponse.log
| | |-- polardb-x-study-pvzr-cdc-default-78c68fc9b-d58p7.yaml
| | |-- polardb-x-study-pvzr-cdc-default-78c68fc9b-d58p7_describe.txt
| | |-- polardb-x-study-pvzr-cdc-default-78c68fc9b-d58p7_engine.log
| | |-- polardb-x-study-pvzr-cdc-default-78c68fc9b-d58p7_exporter.log
| | |-- polardb-x-study-pvzr-cdc-default-78c68fc9b-d58p7_prober.log
| | |-- polardb-x-study-pvzr-cn-default-766785d594-fctd4-cmdresponse.log
| | |-- polardb-x-study-pvzr-cn-default-766785d594-fctd4-tddlog.tar.gz
| | |-- polardb-x-study-pvzr-cn-default-766785d594-fctd4.yaml
| | |-- polardb-x-study-pvzr-cn-default-766785d594-fctd4_describe.txt
| | |-- polardb-x-study-pvzr-cn-default-766785d594-fctd4_engine.log
| | |-- polardb-x-study-pvzr-cn-default-766785d594-fctd4_exporter.log
| | |-- polardb-x-study-pvzr-cn-default-766785d594-fctd4_prober.log
| | |-- polardb-x-study-pvzr-dn-0-cand-0-cmdresponse.log
| | |-- polardb-x-study-pvzr-dn-0-cand-0-mysql.tar.gz
| | |-- polardb-x-study-pvzr-dn-0-cand-0.yaml
| | |-- polardb-x-study-pvzr-dn-0-cand-0_describe.txt
| | |-- polardb-x-study-pvzr-dn-0-cand-0_engine.log
| | |-- polardb-x-study-pvzr-dn-0-cand-0_exporter.log
| | |-- polardb-x-study-pvzr-dn-0-cand-0_prober.log
| | |-- polardb-x-study-pvzr-dn-0-cand-1-cmdresponse.log
| | |-- polardb-x-study-pvzr-dn-0-cand-1-mysql.tar.gz
| | |-- polardb-x-study-pvzr-dn-0-cand-1.yaml
| | |-- polardb-x-study-pvzr-dn-0-cand-1_describe.txt
| | |-- polardb-x-study-pvzr-dn-0-cand-1_engine.log
| | |-- polardb-x-study-pvzr-dn-0-cand-1_exporter.log
| | |-- polardb-x-study-pvzr-dn-0-cand-1_prober.log
| | |-- polardb-x-study-pvzr-dn-0-log-0-cmdresponse.log
| | |-- polardb-x-study-pvzr-dn-0-log-0-mysql.tar.gz
| | |-- polardb-x-study-pvzr-dn-0-log-0.yaml
| | |-- polardb-x-study-pvzr-dn-0-log-0_describe.txt
| | |-- polardb-x-study-pvzr-dn-0-log-0_engine.log
| | |-- polardb-x-study-pvzr-dn-0-log-0_exporter.log
| | |-- polardb-x-study-pvzr-dn-0-log-0_prober.log
| | |-- polardb-x-study-pvzr-gms-cand-0-cmdresponse.log
| | |-- polardb-x-study-pvzr-gms-cand-0-mysql.tar.gz
| | |-- polardb-x-study-pvzr-gms-cand-0.yaml
| | |-- polardb-x-study-pvzr-gms-cand-0_describe.txt
| | |-- polardb-x-study-pvzr-gms-cand-0_engine.log
| | |-- polardb-x-study-pvzr-gms-cand-0_exporter.log
| | |-- polardb-x-study-pvzr-gms-cand-0_prober.log
| | |-- polardb-x-study-pvzr-gms-cand-1-cmdresponse.log
| | |-- polardb-x-study-pvzr-gms-cand-1-mysql.tar.gz
| | |-- polardb-x-study-pvzr-gms-cand-1.yaml
| | |-- polardb-x-study-pvzr-gms-cand-1_describe.txt
| | |-- polardb-x-study-pvzr-gms-cand-1_engine.log
| | |-- polardb-x-study-pvzr-gms-cand-1_exporter.log
| | |-- polardb-x-study-pvzr-gms-cand-1_prober.log
| | |-- polardb-x-study-pvzr-gms-log-0-cmdresponse.log
| | |-- polardb-x-study-pvzr-gms-log-0-mysql.tar.gz
| | |-- polardb-x-study-pvzr-gms-log-0.yaml
| | |-- polardb-x-study-pvzr-gms-log-0_describe.txt
| | |-- polardb-x-study-pvzr-gms-log-0_engine.log
| | |-- polardb-x-study-pvzr-gms-log-0_exporter.log
| | `-- polardb-x-study-pvzr-gms-log-0_prober.log
| |-- PolarDBXCluster
| | |-- list.txt
| | `-- polardb-x-study.yaml
| |-- PolarDBXParameter
| | |-- e2e-test-param-rw.yaml
| | `-- list.txt
| |-- PolarDBXParameterTemplate
| | |-- e2e-test-param-template-rw.yaml
| | |-- list.txt
| | `-- product-80.yaml
| `-- XStore
| |-- list.txt
| |-- polardb-x-study-pvzr-dn-0.yaml
| `-- polardb-x-study-pvzr-gms.yaml
|-- diagnose_cn.sql
|-- diagnose_dn.sql
|-- noderesourcelist.txt
`-- polardbx-operator-system
|-- ConfigMap
| |-- list.txt
| |-- polardbx-controller-manager-config.yaml
| `-- polardbx-hpfs-config.yaml
|-- DaemonSet
| |-- list.txt
| |-- polardbx-hpfs.yaml
| `-- polardbx-tools-updater.yaml
|-- Deployment
| |-- list.txt
| |-- polardbx-clinic.yaml
| `-- polardbx-controller-manager.yaml
`-- Pod
|-- list.txt
|-- podlist.txt
|-- polardbx-clinic-86c58fcb9b-x2z6s.yaml
|-- polardbx-clinic-86c58fcb9b-x2z6s_describe.txt
|-- polardbx-clinic-86c58fcb9b-x2z6s_polardbx-clinic.log
|-- polardbx-controller-manager-78c5ff6cf8-c5z56.yaml
|-- polardbx-controller-manager-78c5ff6cf8-c5z56_describe.txt
|-- polardbx-controller-manager-78c5ff6cf8-c5z56_polardbx-operator.log
|-- polardbx-hpfs-j4k5n.yaml
|-- polardbx-hpfs-j4k5n_describe.txt
|-- polardbx-hpfs-j4k5n_hpfs.log
|-- polardbx-hpfs-ls847.yaml
|-- polardbx-hpfs-ls847_describe.txt
|-- polardbx-hpfs-ls847_hpfs.log
|-- polardbx-hpfs-md55t.yaml
|-- polardbx-hpfs-md55t_describe.txt
|-- polardbx-hpfs-md55t_hpfs.log
|-- polardbx-hpfs-mms6j.yaml
|-- polardbx-hpfs-mms6j_describe.txt
|-- polardbx-hpfs-mms6j_hpfs.log
|-- polardbx-hpfs-mt6xq.yaml
|-- polardbx-hpfs-mt6xq_describe.txt
|-- polardbx-hpfs-mt6xq_hpfs.log
|-- polardbx-hpfs-tx7nz.yaml
|-- polardbx-hpfs-tx7nz_describe.txt
|-- polardbx-hpfs-tx7nz_hpfs.log
|-- polardbx-hpfs-wc4ms.yaml
|-- polardbx-hpfs-wc4ms_describe.txt
|-- polardbx-hpfs-wc4ms_hpfs.log
|-- polardbx-tools-updater-4kjfh.yaml
|-- polardbx-tools-updater-4kjfh_describe.txt
|-- polardbx-tools-updater-4kjfh_updater.log
|-- polardbx-tools-updater-7nw9s.yaml
|-- polardbx-tools-updater-7nw9s_describe.txt
|-- polardbx-tools-updater-7nw9s_updater.log
|-- polardbx-tools-updater-g2ltb.yaml
|-- polardbx-tools-updater-g2ltb_describe.txt
|-- polardbx-tools-updater-g2ltb_updater.log
|-- polardbx-tools-updater-gpmmw.yaml
|-- polardbx-tools-updater-gpmmw_describe.txt
|-- polardbx-tools-updater-gpmmw_updater.log
|-- polardbx-tools-updater-tkbmb.yaml
|-- polardbx-tools-updater-tkbmb_describe.txt
|-- polardbx-tools-updater-tkbmb_updater.log
|-- polardbx-tools-updater-vrtxm.yaml
|-- polardbx-tools-updater-vrtxm_describe.txt
|-- polardbx-tools-updater-vrtxm_updater.log
|-- polardbx-tools-updater-zmtxf.yaml
|-- polardbx-tools-updater-zmtxf_describe.txt
`-- polardbx-tools-updater-zmtxf_updater.log