收集诊断信息

通过运行收集程序来收集必要的信息, 方便问题诊断。

运行环境要求

  • Linux操作系统.
  • 可通过kubectl访问对应的kubernetes集群.
  • 可运行的命令:bash、kubectl、tar、touch、sed等.

收集日志

以下介绍两种方式用于收集日志。

方法一: 下载并执行诊断脚本

  1. 选择或者创建一个工作目录,比如选择工作目录路径为``, 执行如下命令:
mkdir -p {{工作目录路径}}
export WORKSPACE={{工作目录路径}}
  1. 下载诊断脚本:
curl -L "https://polardbx-opensource.oss-cn-hangzhou.aliyuncs.com/scripts/diagnose.sh" -o  diagnose.sh
  1. 确定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}}
  1. 运行脚本
sh diagnose.sh -n $PXC_INSTANCE_NAMESPACE -m $PXC_OPERATOR_NAMESPACE -w $WORKSPACE
  1. 运行结果

工作目录下,会出现一个名称以polardbx_diagnose_开头的文件夹,文件名后缀部分为格式为yyyyMMddHHmmss的日期时间。

脚本运行结束后,会在工作目录下生成一个名为polardbx-diagnose.tar.gz的文件(可将该压缩包交给相关人员进行问题诊断),该文件包含了诊断所需的所有日志,是polardbx_diagnose_开头的文件夹的压缩包。

方法二: 在诊断Pod内执行脚本

如果安装的polardbx-operator版本不低于v1.6.0,则可以使用 Clinic Pod,该Pod内已经满足脚本的运行条件,通过如下命令获取Pod名称

  1. 进入诊断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
  1. 确定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}}
  1. 运行脚本
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 下的文件不会自动清理,请视磁盘容量进行手动清理。

  1. 下载日志到本地

以便于问题诊断或者上传到别处,可通过 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

results matching ""

    No results matching ""