12.3. 日志和调试工具
本节论述了可用于故障排除的日志和调试工具。
12.3.1. 查看迁移计划资源 复制链接链接已复制到粘贴板!
您可以使用 MTC web 控制台和命令行界面(CLI)查看迁移计划资源来监控正在运行的迁移或排除迁移失败的问题。
流程
- 在 MTC web 控制台中点 Migration Plans。
- 点迁移计划旁边的 Migrations 编号来查看 Migrations 页面。
- 点击迁移以查看迁移详情。
扩展 迁移资源,以在树视图中查看迁移资源及其状态。
注意要对失败的迁移进行故障排除,请从失败的高级别资源开始,然后向下级资源组成资源树。
点击资源
旁边的 Options 菜单并选择以下选项之一:
复制
oc describe
命令将命令复制到您的剪贴板。登录相关集群,然后运行命令。
资源的条件和事件以 YAML 格式显示。
复制
oc logs
命令将命令复制到您的剪贴板。登录相关集群,然后运行命令。
如果资源支持日志过滤,则会显示过滤的日志。
View JSON 在 Web 浏览器中以 JSON 格式显示资源数据。
其数据与
oc get <resource>
命令的输出结果相同。
12.3.2. 查看迁移计划日志 复制链接链接已复制到粘贴板!
您可以查看迁移计划的聚合日志。您可以使用 MTC web 控制台将命令复制到剪贴板中,然后从命令行界面(CLI)运行命令。
该命令显示以下 pod 的过滤日志:
-
Migration Controller
-
Velero
-
Restic
-
Rsync
-
Stunnel
-
容器镜像仓库(Registry)
流程
- 在 MTC web 控制台中点 Migration Plans。
- 点迁移计划旁边的 Migrations 号。
- 单击 View logs。
-
点击 Copy 图标将
oc logs
命令复制到您的剪贴板。 登录到相关的集群并在 CLI 中输入命令。
此时会显示迁移计划的聚合日志。
12.3.3. 使用迁移日志读取器 复制链接链接已复制到粘贴板!
您可以使用迁移日志读取器显示所有迁移日志的过滤视图。
流程
获取
mig-log-reader
pod:oc -n openshift-migration get pods | grep log
$ oc -n openshift-migration get pods | grep log
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令显示单个迁移日志:
oc -n openshift-migration logs -f <mig-log-reader-pod> -c color
$ oc -n openshift-migration logs -f <mig-log-reader-pod> -c color
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
-c plain
选项显示没有颜色的日志。
12.3.4. 访问性能指标 复制链接链接已复制到粘贴板!
MigrationController
自定义资源 (CR) 记录指标数据,并将它们拉取到集群监控存储中。您可以使用 Prometheus Query Language (PromQL) 来诊断迁移性能问题,以此查询指标数据。当 Migration Controller pod 重启时,会重置所有指标。
您可以使用 OpenShift Container Platform Web 控制台访问性能指标并运行查询。
流程
-
在 OpenShift Container Platform web 控制台中点 Observe
Metrics。 输入 PromQL 查询,选择一个要显示的时间窗口,然后单击 Run Queries。
如果您的 Web 浏览器没有显示所有结果,请使用 Prometheus 控制台。
12.3.4.1. 提供的指标 复制链接链接已复制到粘贴板!
MigrationController
自定义资源 (CR) 提供了 MigMigration
CR 计数及其 API 请求的指标。
12.3.4.1.1. cam_app_workload_migrations 复制链接链接已复制到粘贴板!
此指标是一段时间内的 MigMigration
CR 计数。它可用于与 mtc_client_request_count
和 mtc_client_request_elapsed
指标一起查看,以整理迁移状态变化的 API 请求信息。此指标包含在 Telemetry 中。
可查询的标签名称 | 标签值示例 | 标签描述 |
---|---|---|
status |
|
|
type | stage, final |
|
12.3.4.1.2. mtc_client_request_count 复制链接链接已复制到粘贴板!
此指标是 MigrationController
发布的 Kubernetes API 请求的累积计数。它不包含在 Telemetry 中。
可查询的标签名称 | 标签值示例 | 标签描述 |
---|---|---|
cluster |
| 针对发出请求的集群 |
component |
| 发出请求的子控制器 API |
function |
| 发出请求的功能 |
kind |
| 为 Kubernetes 发出的请求类型 |
12.3.4.1.3. mtc_client_request_elapsed 复制链接链接已复制到粘贴板!
这个指标是 MigrationController
发布的 Kubernetes API 请求的累积延迟,以毫秒为单位。它不包含在 Telemetry 中。
可查询的标签名称 | 标签值示例 | 标签描述 |
---|---|---|
cluster |
| 针对发出请求的集群 |
component |
| 发出请求的子控制器 API |
function |
| 发出请求的功能 |
kind |
| 为请求发布的 Kubernetes 资源 |
12.3.4.1.4. 有用的查询 复制链接链接已复制到粘贴板!
表格中列出了可用于监控性能的一些有用查询。
查询 | 描述 |
---|---|
| 发布的 API 请求数,按请求类型排序 |
| 发出的 API 请求总数 |
| API 请求延迟,根据请求类型排序 |
| API 请求的总延迟 |
| API 请求的平均延迟 |
| API 请求的平均延迟,按请求类型排序 |
| 运行的迁移计数,乘以 100 可更轻松查看请求数 |
12.3.5. 使用 must-gather 工具 复制链接链接已复制到粘贴板!
您可以使用 must-gather
工具来收集 MTC 自定义资源的日志、指标和相关信息。
must-gather
数据必须附加到所有客户案例。
您可以收集一小时或 24 小时内的数据,并使用 Prometheus 控制台查看数据。
先决条件
-
您必须使用具有
cluster-admin
角色的用户登录到 OpenShift Container Platform 集群。 -
已安装 OpenShift CLI (
oc
)。
流程
-
进入存储
must-gather
数据的目录。 为以下数据收集选项之一运行
oc adm must-gather
命令:要收集过去几小时内的数据,请使用以下命令:
oc adm must-gather --image=registry.redhat.io/rhmtc/openshift-migration-must-gather-rhel8:v1.7
$ oc adm must-gather --image=registry.redhat.io/rhmtc/openshift-migration-must-gather-rhel8:v1.7
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令将数据保存为
must-gather/must-gather.tar.gz
文件。您可以将此文件上传到红帽客户门户网站中的支持问题单中。要收集过去 24 小时的数据,请使用以下命令:
oc adm must-gather --image=registry.redhat.io/rhmtc/openshift-migration-must-gather-rhel8:v1.7 -- /usr/bin/gather_metrics_dump
$ oc adm must-gather --image=registry.redhat.io/rhmtc/openshift-migration-must-gather-rhel8:v1.7 -- /usr/bin/gather_metrics_dump
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此操作可能需要很长时间。这个命令将数据保存为
must-gather/metrics/prom_data.tar.gz
文件。
12.3.6. 使用 Velero CLI 工具调试 Velero 资源 复制链接链接已复制到粘贴板!
您可以调试 Backup
和 Restore
自定义资源(CR)并使用 Velero CLI 工具检索日志。
Velero CLI 工具比 OpenShift CLI 工具提供更详细的信息。
语法
使用 oc exec
命令运行 Velero CLI 命令:
oc -n openshift-migration exec deployment/velero -c velero -- ./velero \ <backup_restore_cr> <command> <cr_name>
$ oc -n openshift-migration exec deployment/velero -c velero -- ./velero \
<backup_restore_cr> <command> <cr_name>
Example
oc -n openshift-migration exec deployment/velero -c velero -- ./velero \ backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
$ oc -n openshift-migration exec deployment/velero -c velero -- ./velero \
backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
帮助选项
使用 velero --help
列出所有 Velero CLI 命令:
oc -n openshift-migration exec deployment/velero -c velero -- ./velero \ --help
$ oc -n openshift-migration exec deployment/velero -c velero -- ./velero \
--help
describe 命令
使用 velero describe
命令检索与 Backup
或 Restore
CR 关联的警告和错误概述:
oc -n openshift-migration exec deployment/velero -c velero -- ./velero \ <backup_restore_cr> describe <cr_name>
$ oc -n openshift-migration exec deployment/velero -c velero -- ./velero \
<backup_restore_cr> describe <cr_name>
Example
oc -n openshift-migration exec deployment/velero -c velero -- ./velero \ backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
$ oc -n openshift-migration exec deployment/velero -c velero -- ./velero \
backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
velero describe
请求的输出中会显示以下类型的恢复错误和警告:
-
Velero
: 与 Velero 本身操作相关的信息列表,例如:与连接到云相关的信息,读取备份文件等 -
集群
:与备份和恢复集群范围的资源相关的消息列表 -
命名空间
:与备份或恢复存储在命名空间中资源相关的消息列表
这些类别中的一个或多个错误会导致 Restore
操作接收 PartiallyFailed
而不是 Completed
状态。警告不会造成完成状态的更改。
-
对于特定于资源的错误,即
Cluster
和Namespaces
错误,restore describe --details
输出包含一个资源列表,其中列出了 Velero 在恢复中成功的所有资源。对于具有此类错误的任何资源,请检查资源是否实际位于集群中。 如果存在
Velero
错误,但没有特定于资源的错误,在describe
命令的输出中没有完成恢复,且没有恢复工作负载中的实际问题,但仔细验证恢复后应用程序。例如,如果输出包含
PodVolumeRestore
或节点代理相关的错误,请检查PodVolumeRestores
和DataDownloads
的状态。如果其中任何失败或仍在运行,则卷数据可能已被完全恢复。
logs 命令
使用 velero logs
命令检索 Backup
或 Restore
CR 的日志:
oc -n openshift-migration exec deployment/velero -c velero -- ./velero \ <backup_restore_cr> logs <cr_name>
$ oc -n openshift-migration exec deployment/velero -c velero -- ./velero \
<backup_restore_cr> logs <cr_name>
Example
oc -n openshift-migration exec deployment/velero -c velero -- ./velero \ restore logs ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf
$ oc -n openshift-migration exec deployment/velero -c velero -- ./velero \
restore logs ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf
12.3.7. 调试部分迁移失败 复制链接链接已复制到粘贴板!
您可以使用 Velero CLI 检查 Restore
自定义资源(CR)日志来调试部分迁移失败警告消息。
当 Velero 遇到没有导致迁移失败的问题时,会导致迁移部分失败。例如,缺少自定义资源定义(CRD),或者源集群和目标集群的 CRD 版本之间存在冲突,则迁移会完成,但不会在目标集群上创建 CR。
Velero 将问题作为部分失败记录,然后处理 备份
CR 中的其他对象。
流程
检查
MigMigration
CR 的状态:oc get migmigration <migmigration> -o yaml
$ oc get migmigration <migmigration> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Velero
describe
命令检查Restore
CR 的状态:$ oc -n {namespace} exec deployment/velero -c velero -- ./velero \ restore describe <restore>
$ oc -n {namespace} exec deployment/velero -c velero -- ./velero \ restore describe <restore>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Velero
logs
命令检查Restore
CR 日志:$ oc -n {namespace} exec deployment/velero -c velero -- ./velero \ restore logs <restore>
$ oc -n {namespace} exec deployment/velero -c velero -- ./velero \ restore logs <restore>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
time="2021-01-26T20:48:37Z" level=info msg="Attempting to restore migration-example: migration-example" logSource="pkg/restore/restore.go:1107" restore=openshift-migration/ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf time="2021-01-26T20:48:37Z" level=info msg="error restoring migration-example: the server could not find the requested resource" logSource="pkg/restore/restore.go:1170" restore=openshift-migration/ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf
time="2021-01-26T20:48:37Z" level=info msg="Attempting to restore migration-example: migration-example" logSource="pkg/restore/restore.go:1107" restore=openshift-migration/ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf time="2021-01-26T20:48:37Z" level=info msg="error restoring migration-example: the server could not find the requested resource" logSource="pkg/restore/restore.go:1170" restore=openshift-migration/ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Restore
CR 会记录日志错误消息,the server could not find the requested resource
,代表迁移部分失败的原因。
12.3.8. 使用 MTC 自定义资源进行故障排除 复制链接链接已复制到粘贴板!
您可以检查以下 MTC 自定义资源(CR)来排除迁移失败的问题:
-
MigCluster
-
MigStorage
-
MigPlan
BackupStorageLocation
BackupStorageLocation
CR 包含一个migrationcontroller
标签,用于标识创建 CR 的 MTC 实例:labels: migrationcontroller: ebe13bee-c803-47d0-a9e9-83f380328b93
labels: migrationcontroller: ebe13bee-c803-47d0-a9e9-83f380328b93
Copy to Clipboard Copied! Toggle word wrap Toggle overflow VolumeSnapshotLocation
VolumeSnapshotLocation
CR 包含一个migrationcontroller
标签,用于标识创建 CR 的 MTC 实例:labels: migrationcontroller: ebe13bee-c803-47d0-a9e9-83f380328b93
labels: migrationcontroller: ebe13bee-c803-47d0-a9e9-83f380328b93
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
MigMigration
Backup
在目标集群中,MTC 将迁移的持久性卷(PV)的重新声明策略设置为
Retain
。Backup
CR 包含openshift.io/orig-reclaim-policy
注解,用于指示原始重新声明策略。您可以手动恢复迁移 PV 的重新声明策略。-
恢复
流程
列出
openshift-migration
命名空间中的MigMigration
CR:oc get migmigration -n openshift-migration
$ oc get migmigration -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME AGE 88435fe0-c9f8-11e9-85e6-5d593ce65e10 6m42s
NAME AGE 88435fe0-c9f8-11e9-85e6-5d593ce65e10 6m42s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
MigMigration
CR:oc describe migmigration 88435fe0-c9f8-11e9-85e6-5d593ce65e10 -n openshift-migration
$ oc describe migmigration 88435fe0-c9f8-11e9-85e6-5d593ce65e10 -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出结果类似以下示例。
MigMigration
示例输出
Velero
备份 CR #2 示例输出来描述 PV 数据
Velero
恢复 CR #2 示例输出来描述 Kubernetes 资源