12.3. Journaux et outils de débogage


Cette section décrit les journaux et outils de débogage que vous pouvez utiliser dans le cadre de la résolution des problèmes.

12.3.1. Affichage des ressources du plan de migration

Vous pouvez afficher les ressources du plan de migration pour surveiller une migration en cours ou pour résoudre un échec de migration en utilisant la console Web MTC et l’interface de ligne de commande (CLI).

Procédure

  1. Dans la console Web MTC, cliquez sur Migration Plans.
  2. Cliquez sur le numéro Migrations en regard d’un plan de migration pour afficher la page Migrations.
  3. Cliquez sur une migration pour en afficher les détails (Migration details).
  4. Développez Migration resources pour afficher les ressources de migration et leur état dans une arborescence.

    Note

    Pour résoudre un échec de migration, commencez par une ressource de haut niveau qui a échoué, puis descendez dans l’arborescence vers les ressources de niveau inférieur.

  5. Cliquez sur le menu Options kebab à côté d'une ressource et sélectionnez l'une des options suivantes :

    • La commande Copy oc describe copie la commande dans votre presse-papiers.

      • Connectez-vous au cluster concerné, puis exécutez la commande.

        Les conditions et les événements de la ressource sont affichés au format YAML.

    • La commande Copy oc logs copie la commande dans votre presse-papiers.

      • Connectez-vous au cluster concerné, puis exécutez la commande.

        Si la ressource prend en charge le filtrage des journaux, un journal filtré est affiché.

    • View JSON affiche les données de la ressource au format JSON dans un navigateur Web.

      Les données sont les mêmes que celles de la sortie de la commande oc get <resource>.

12.3.2. Consultation d’un journal de plan de migration

Vous pouvez consulter un journal agrégé pour un plan de migration. Utilisez la console Web MTC pour copier une commande dans le presse-papiers, puis exécutez la commande à partir de l’interface de ligne de commande (CLI).

La commande affiche les journaux filtrés des pods suivants :

  • Migration Controller
  • Velero
  • Restic
  • Rsync
  • Stunnel
  • Registry

Procédure

  1. Dans la console Web MTC, cliquez sur Migration Plans.
  2. Cliquez sur le numéro Migrations en regard d’un plan de migration.
  3. Cliquez sur View logs.
  4. Cliquez sur l’icône Copier pour copier la commande oc logs dans votre presse-papiers.
  5. Connectez-vous au cluster concerné et saisissez la commande dans la CLI.

    Le journal agrégé relatif au plan de migration est affiché.

12.3.3. Utilisation du lecteur de journaux de migration

Vous pouvez utiliser le lecteur de journaux de migration pour afficher une vue unique et filtrée de l’ensemble des journaux de migration.

Procédure

  1. Procurez-vous le pod mig-log-reader :

    $ oc -n openshift-migration get pods | grep log
    Copy to Clipboard Toggle word wrap
  2. Saisissez la commande suivante pour afficher un seul journal de migration :

    $ oc -n openshift-migration logs -f <mig-log-reader-pod> -c color 
    1
    Copy to Clipboard Toggle word wrap
    1
    L’option -c plain affiche le journal sans couleurs.

12.3.4. Accès aux métriques de performance

La ressource personnalisée (CR) MigrationController enregistre les métriques et les transfère dans le stockage de surveillance sur le cluster. Vous pouvez interroger les métriques en utilisant le langage PromQL (Prometheus Query Language) pour diagnostiquer les problèmes de performance de la migration. Toutes les métriques sont réinitialisées au redémarrage du pod Migration Controller.

Vous pouvez accéder aux métriques de performance et exécuter des requêtes en utilisant la console Web OpenShift Container Platform.

Procédure

  1. Dans la console Web OpenShift Container Platform, cliquez sur Observe Metrics.
  2. Saisissez une requête PromQL, sélectionnez une fenêtre temporelle à afficher, puis cliquez sur Run Queries.

    Si votre navigateur Web n’affiche pas tous les résultats, utilisez la console Prometheus.

12.3.4.1. Métriques fournies

La ressource personnalisée (CR) MigrationController fournit des métriques pour le compte CR MigMigration et pour ses demandes API.

12.3.4.1.1. cam_app_workload_migrations

Cette métrique est un décompte des CR MigMigration au fil du temps. Il est utile de la consulter en même temps que les métriques mtc_client_request_count et mtc_client_request_elapsed pour assembler les informations sur les demandes API aux changements d’état de migration. Cette métrique est incluse dans Telemetry.

Expand
Tableau 12.1. Métrique cam_app_workload_migrations
Nom de l’étiquette utilisable dans une requêteExemples de valeurs d’étiquetteDescription de l’étiquette

status

running, idle, failed, completed

État de la CR MigMigration

type

stage, final

Type de la CR MigMigration

12.3.4.1.2. mtc_client_request_count

Cette métrique est un nombre cumulé des demandes API Kubernetes émises par MigrationController. Elle n’est pas incluse dans Telemetry.

Expand
Tableau 12.2. Métrique mtc_client_request_count
Nom de l’étiquette utilisable dans une requêteExemples de valeurs d’étiquetteDescription de l’étiquette

cluster

https://migcluster-url:443

Cluster sur lequel la demande a été émise

component

MigPlan, MigCluster

API du sous-contrôleur qui a émis la demande

function

(*ReconcileMigPlan).Reconcile

Fonction à partir de laquelle la demande a été émise

kind

SecretList, Deployment

Type Kubernetes pour lequel la demande a été émise

12.3.4.1.3. mtc_client_request_elapsed

Cette métrique est une latence cumulée, en millisecondes, des demandes API Kubernetes émises par MigrationController. Elle n’est pas incluse dans Telemetry.

Expand
Tableau 12.3. Métrique mtc_client_request_elapsed
Nom de l’étiquette utilisable dans une requêteExemples de valeurs d’étiquetteDescription de l’étiquette

cluster

https://cluster-url.com:443

Cluster sur lequel la demande a été émise

component

migplan, migcluster

API du sous-contrôleur qui a émis la demande

function

(*ReconcileMigPlan).Reconcile

Fonction à partir de laquelle la demande a été émise

kind

SecretList, Deployment

Ressource Kubernetes pour laquelle la demande a été émise

12.3.4.1.4. Requêtes utiles

Le tableau ci-dessous présente quelques requêtes utiles qui peuvent être utilisées pour surveiller les performances.

Expand
Tableau 12.4. Requêtes utiles
RequêteDescription

mtc_client_request_count

Nombre de demandes API émises, triées par type

sum(mtc_client_request_count)

Nombre total de demandes API émises

mtc_client_request_elapsed

Latence des demandes API, classées par type

sum(mtc_client_request_elapsed)

Latence totale des demandes API

sum(mtc_client_request_elapsed) / sum(mtc_client_request_count)

Latence moyenne des demandes API

mtc_client_request_elapsed / mtc_client_request_count

Latence moyenne des demandes API, triées par type

cam_app_workload_migrations{status="running"} * 100

Nombre de migrations en cours, multiplié par 100 pour une visualisation plus facile parallèlement au nombre de demandes

12.3.5. Utilisation de l’outil must-gather

Vous pouvez collecter des journaux, des métriques et des informations sur les ressources MTC personnalisées en utilisant l’outil must-gather.

Les données must-gather doivent être jointes à tous les dossiers client.

Vous pouvez collecter des données sur une période d’une heure ou de 24 heures et les visualiser à l’aide de la console Prometheus.

Conditions préalables

  • Vous devez être connecté au cluster OpenShift Container Platform en tant qu’utilisateur avec le rôle cluster-admin.
  • Il faut que la CLI OpenShift (oc) soit installée.

Procédure

  1. Accédez au répertoire dans lequel vous souhaitez stocker les données must-gather.
  2. Exécutez la commande oc adm must-gather pour l’une des options de collecte de données suivantes :

    • Pour collecter les données relatives à l’heure écoulée :

      $ oc adm must-gather --image=registry.redhat.io/rhmtc/openshift-migration-must-gather-rhel8:v1.7
      Copy to Clipboard Toggle word wrap

      Les données sont enregistrées en tant que must-gather/must-gather.tar.gz. Vous pouvez envoyer ce fichier dans un dossier d’assistance sur le Portail Client de Red Hat.

    • Pour collecter les données des dernières 24 heures :

      $ oc adm must-gather --image=registry.redhat.io/rhmtc/openshift-migration-must-gather-rhel8:v1.7 \
        -- /usr/bin/gather_metrics_dump
      Copy to Clipboard Toggle word wrap

      Cette opération peut prendre beaucoup de temps. Les données sont enregistrées sous le nom must-gather/metrics/prom_data.tar.gz.

Visualisation des données de métrique à l’aide de la console Prometheus

Vous pouvez visualiser les données de métrique à l’aide de la console Prometheus.

Procédure

  1. Décompressez le fichier prom_data.tar.gz :

    $ tar -xvzf must-gather/metrics/prom_data.tar.gz
    Copy to Clipboard Toggle word wrap
  2. Créez une instance Prometheus locale :

    $ make prometheus-run
    Copy to Clipboard Toggle word wrap

    La commande produit l’URL Prometheus.

    Sortie

    Started Prometheus on http://localhost:9090
    Copy to Clipboard Toggle word wrap

  3. Démarrez un navigateur Web et accédez à l’URL pour afficher les données à l’aide de la console Web Prometheus.
  4. Après avoir consulté les données, supprimez l’instance Prometheus, ainsi que les données :

    $ make prometheus-cleanup
    Copy to Clipboard Toggle word wrap

Vous pouvez déboguer les ressources personnalisées (CR) Backup et Restore, et récupérer les journaux avec l’outil CLI Velero.

L’outil CLI Velero fournit des informations plus détaillées que l’outil CLI OpenShift.

Syntaxe

Utilisez la commande oc exec pour exécuter une commande CLI Velero :

$ oc -n openshift-migration exec deployment/velero -c velero -- ./velero \
  <backup_restore_cr> <command> <cr_name>
Copy to Clipboard Toggle word wrap

Exemple :

$ oc -n openshift-migration exec deployment/velero -c velero -- ./velero \
  backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
Copy to Clipboard Toggle word wrap

Option d’aide

Utilisez l’option velero --help pour répertorier toutes les commandes CLI de Velero :

$ oc -n openshift-migration exec deployment/velero -c velero -- ./velero \
  --help
Copy to Clipboard Toggle word wrap
Commande describe

Utilisez la commande velero describe pour récupérer un résumé des avertissements et des erreurs associés à une ressource personnalisée (CR) Backup ou Restore.

$ oc -n openshift-migration exec deployment/velero -c velero -- ./velero \
  <backup_restore_cr> describe <cr_name>
Copy to Clipboard Toggle word wrap

Exemple :

$ oc -n openshift-migration exec deployment/velero -c velero -- ./velero \
  backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
Copy to Clipboard Toggle word wrap

Commande logs

Utilisez la commande velero logs pour récupérer les journaux d’une ressource personnalisée (CR) Backup ou Restore.

$ oc -n openshift-migration exec deployment/velero -c velero -- ./velero \
  <backup_restore_cr> logs <cr_name>
Copy to Clipboard Toggle word wrap

Exemple :

$ oc -n openshift-migration exec deployment/velero -c velero -- ./velero \
  restore logs ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf
Copy to Clipboard Toggle word wrap

12.3.7. Résolution d’un échec de migration partiel

Vous pouvez déboguer un message d’avertissement concernant un échec de migration partiel en utilisant la CLI Velero afin d’examiner les journaux de ressources personnalisées (CR) Restore.

Un échec partiel se produit lorsque Velero rencontre un problème qui n’entraîne pas l’échec de la migration. Par exemple, s’il manque une définition de ressource personnalisée (CRD) ou s’il y a une différence entre les versions de CRD sur les clusters source et cible, la migration se termine, mais la ressource personnalisée n’est pas créée sur le cluster cible.

Velero enregistre le problème comme un échec partiel et traite ensuite le reste des objets dans la ressource personnalisée Backup.

Procédure

  1. Vérifiez l’état d’une CR MigMigration :

    $ oc get migmigration <migmigration> -o yaml
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    status:
      conditions:
      - category: Warn
        durable: true
        lastTransitionTime: "2021-01-26T20:48:40Z"
        message: 'Final Restore openshift-migration/ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf: partially failed on destination cluster'
        status: "True"
        type: VeleroFinalRestorePartiallyFailed
      - category: Advisory
        durable: true
        lastTransitionTime: "2021-01-26T20:48:42Z"
        message: The migration has completed with warnings, please look at `Warn` conditions.
        reason: Completed
        status: "True"
        type: SucceededWithWarnings
    Copy to Clipboard Toggle word wrap

  2. Vérifiez l’état de la CR Restore en utilisant la commande Velero describe :

    $ oc -n {namespace} exec deployment/velero -c velero -- ./velero \
      restore describe <restore>
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    Phase:  PartiallyFailed (run 'velero restore logs ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf' for more information)
    
    Errors:
      Velero:     <none>
      Cluster:    <none>
      Namespaces:
        migration-example:  error restoring example.com/migration-example/migration-example: the server could not find the requested resource
    Copy to Clipboard Toggle word wrap

  3. Vérifiez les journaux de la CR Restore en utilisant la commande Velero logs :

    $ oc -n {namespace} exec deployment/velero -c velero -- ./velero \
      restore logs <restore>
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    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 Toggle word wrap

    Le message d’erreur du journal de la CR Restore (the server could not find the requested resource) indique la cause de l’échec partiel de la migration.

Vous pouvez vérifier les ressources personnalisées (CR) MTC ( Migration Toolkit for Containers) suivantes pour résoudre l’échec d’une migration :

  • MigCluster
  • MigStorage
  • MigPlan
  • BackupStorageLocation

    La CR BackupStorageLocation contient une étiquette migrationcontroller permettant d’identifier l’instance MTC qui a créé la CR :

        labels:
          migrationcontroller: ebe13bee-c803-47d0-a9e9-83f380328b93
    Copy to Clipboard Toggle word wrap
  • VolumeSnapshotLocation

    La CR VolumeSnapshotLocation contient une étiquette migrationcontroller permettant d’identifier l’instance MTC qui a créé la CR :

        labels:
          migrationcontroller: ebe13bee-c803-47d0-a9e9-83f380328b93
    Copy to Clipboard Toggle word wrap
  • MigMigration
  • Backup

    MTC définit la stratégie de récupération des volumes persistants (PV) migrés sur Retain sur le cluster cible. La CR Backup contient une annotation openshift.io/orig-reclaim-policy qui indique la stratégie de récupération d’origine. Vous pouvez restaurer manuellement la stratégie de récupération des PV migrés.

  • Restore

Procédure

  1. Répertoriez les CR MigMigration dans l’espace de nommage openshift-migration :

    $ oc get migmigration -n openshift-migration
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    NAME                                   AGE
    88435fe0-c9f8-11e9-85e6-5d593ce65e10   6m42s
    Copy to Clipboard Toggle word wrap

  2. Inspectez la CR MigMigration :

    $ oc describe migmigration 88435fe0-c9f8-11e9-85e6-5d593ce65e10 -n openshift-migration
    Copy to Clipboard Toggle word wrap

    La sortie est semblable aux exemples suivants.

Exemple de sortie MigMigration

name:         88435fe0-c9f8-11e9-85e6-5d593ce65e10
namespace:    openshift-migration
labels:       <none>
annotations:  touch: 3b48b543-b53e-4e44-9d34-33563f0f8147
apiVersion:  migration.openshift.io/v1alpha1
kind:         MigMigration
metadata:
  creationTimestamp:  2019-08-29T01:01:29Z
  generation:          20
  resourceVersion:    88179
  selfLink:           /apis/migration.openshift.io/v1alpha1/namespaces/openshift-migration/migmigrations/88435fe0-c9f8-11e9-85e6-5d593ce65e10
  uid:                 8886de4c-c9f8-11e9-95ad-0205fe66cbb6
spec:
  migPlanRef:
    name:        socks-shop-mig-plan
    namespace:   openshift-migration
  quiescePods:  true
  stage:         false
status:
  conditions:
    category:              Advisory
    durable:               True
    lastTransitionTime:  2019-08-29T01:03:40Z
    message:               The migration has completed successfully.
    reason:                Completed
    status:                True
    type:                  Succeeded
  phase:                   Completed
  startTimestamp:         2019-08-29T01:01:29Z
events:                    <none>
Copy to Clipboard Toggle word wrap

Exemple de sortie de la CR backup Velero n°2 qui décrit les données de volume persistant (PV)

apiVersion: velero.io/v1
kind: Backup
metadata:
  annotations:
    openshift.io/migrate-copy-phase: final
    openshift.io/migrate-quiesce-pods: "true"
    openshift.io/migration-registry: 172.30.105.179:5000
    openshift.io/migration-registry-dir: /socks-shop-mig-plan-registry-44dd3bd5-c9f8-11e9-95ad-0205fe66cbb6
    openshift.io/orig-reclaim-policy: delete
  creationTimestamp: "2019-08-29T01:03:15Z"
  generateName: 88435fe0-c9f8-11e9-85e6-5d593ce65e10-
  generation: 1
  labels:
    app.kubernetes.io/part-of: migration
    migmigration: 8886de4c-c9f8-11e9-95ad-0205fe66cbb6
    migration-stage-backup: 8886de4c-c9f8-11e9-95ad-0205fe66cbb6
    velero.io/storage-location: myrepo-vpzq9
  name: 88435fe0-c9f8-11e9-85e6-5d593ce65e10-59gb7
  namespace: openshift-migration
  resourceVersion: "87313"
  selfLink: /apis/velero.io/v1/namespaces/openshift-migration/backups/88435fe0-c9f8-11e9-85e6-5d593ce65e10-59gb7
  uid: c80dbbc0-c9f8-11e9-95ad-0205fe66cbb6
spec:
  excludedNamespaces: []
  excludedResources: []
  hooks:
    resources: []
  includeClusterResources: null
  includedNamespaces:
  - sock-shop
  includedResources:
  - persistentvolumes
  - persistentvolumeclaims
  - namespaces
  - imagestreams
  - imagestreamtags
  - secrets
  - configmaps
  - pods
  labelSelector:
    matchLabels:
      migration-included-stage-backup: 8886de4c-c9f8-11e9-95ad-0205fe66cbb6
  storageLocation: myrepo-vpzq9
  ttl: 720h0m0s
  volumeSnapshotLocations:
  - myrepo-wv6fx
status:
  completionTimestamp: "2019-08-29T01:02:36Z"
  errors: 0
  expiration: "2019-09-28T01:02:35Z"
  phase: Completed
  startTimestamp: "2019-08-29T01:02:35Z"
  validationErrors: null
  version: 1
  volumeSnapshotsAttempted: 0
  volumeSnapshotsCompleted: 0
  warnings: 0
Copy to Clipboard Toggle word wrap

Exemple de sortie de la CR restore Velero n°2 qui décrit les ressources Kubernetes

apiVersion: velero.io/v1
kind: Restore
metadata:
  annotations:
    openshift.io/migrate-copy-phase: final
    openshift.io/migrate-quiesce-pods: "true"
    openshift.io/migration-registry: 172.30.90.187:5000
    openshift.io/migration-registry-dir: /socks-shop-mig-plan-registry-36f54ca7-c925-11e9-825a-06fa9fb68c88
  creationTimestamp: "2019-08-28T00:09:49Z"
  generateName: e13a1b60-c927-11e9-9555-d129df7f3b96-
  generation: 3
  labels:
    app.kubernetes.io/part-of: migration
    migmigration: e18252c9-c927-11e9-825a-06fa9fb68c88
    migration-final-restore: e18252c9-c927-11e9-825a-06fa9fb68c88
  name: e13a1b60-c927-11e9-9555-d129df7f3b96-gb8nx
  namespace: openshift-migration
  resourceVersion: "82329"
  selfLink: /apis/velero.io/v1/namespaces/openshift-migration/restores/e13a1b60-c927-11e9-9555-d129df7f3b96-gb8nx
  uid: 26983ec0-c928-11e9-825a-06fa9fb68c88
spec:
  backupName: e13a1b60-c927-11e9-9555-d129df7f3b96-sz24f
  excludedNamespaces: null
  excludedResources:
  - nodes
  - events
  - events.events.k8s.io
  - backups.velero.io
  - restores.velero.io
  - resticrepositories.velero.io
  includedNamespaces: null
  includedResources: null
  namespaceMapping: null
  restorePVs: true
status:
  errors: 0
  failureReason: ""
  phase: Completed
  validationErrors: null
  warnings: 15
Copy to Clipboard Toggle word wrap

Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat