Collecter les journaux Cloud Service Mesh

Les sections suivantes expliquent comment collecter les différents journaux de Cloud Service Mesh pour résoudre les problèmes ou pour contacter l'assistance Google.

Collecter des journaux à l'aide de l'outil de signalement de bug

Cloud Service Mesh fournit un outil de signalement de bug automatisé qui collecte les journaux de diagnostic pertinents et vous permet de les associer à une demande d'assistance Google.

Avant de commencer, assurez-vous que le contexte kubeconfig de votre cluster est disponible dans votre fichier kubeconfig.

Démarrer la collecte des journaux

Plan de contrôle géré

  1. Téléchargez l'outil de dépannage.

  2. Exécutez l'outil de signalement de bug pour collecter les journaux:

    gcloud beta container fleet mesh debug bug-report \
       --membership=MEMBERSHIP_NAME \
       --location=MEMBERSHIP_LOCATION \
       --project=PROJECT_NAME
    

    Remplacez les éléments suivants :

    • MEMBERSHIP_NAME: nom de votre abonnement.
    • MEMBERSHIP_LOCATION: région de votre adhésion.
    • PROJECT_NAME : nom du projet

Plan de contrôle au sein du cluster

  1. Téléchargez l'outil de dépannage.

  2. Exécutez l'outil de signalement de bug pour collecter les journaux:

    istioctl bug-report

Importer votre archive de débogage

L'outil crée une archive des journaux et de la configuration de votre réseau maillé dans le répertoire de travail. Vous pouvez décompresser le fichier de l'archive et utiliser les guides de dépannage pour tenter de résoudre le problème vous-même. Toutefois, si vous disposez d'une formule d'assistance, vous pouvez contacter l'assistance Google Cloud qui vous indiquera les étapes supplémentaires à suivre pour importer votre archive de journaux de manière sécurisée.

Collecter manuellement les journaux Cloud Service Mesh

Cette section explique comment collecter manuellement tous les journaux pertinents plutôt que d'utiliser l'outil de signalement de bug de Cloud Service Mesh.

Journaux d'accès Envoy

Les journaux d'accès du proxy Envoy contiennent des informations détaillées utiles pour le dépannage. Cependant, vous devez les activer et définir le niveau de détail approprié.

Pour plus d'informations sur l'interprétation du contenu des journaux, consultez la page Interpréter les journaux Envoy.

Activer ou désactiver les journaux Envoy

Pour activer les journaux d'accès du proxy Envoy, configurez un fichier superposé pour Cloud Service Mesh dans le cluster ou un fichier ConfigMap pour Cloud Service Mesh géré.

Augmenter les détails de journalisation

Pour augmenter temporairement le niveau de détail des journaux, utilisez la commande suivante. Ce paramètre est annulé lors de la recréation du pod.

kubectl -n NAMESPACE debug --image istio/base --target istio-proxy -it POD_NAME -- curl -X POST http://localhost:15000/logging?level=debug

Pour rétablir le niveau de détail des journaux par défaut, utilisez la commande suivante:

kubectl -n NAMESPACE debug --image istio/base --target istio-proxy -it POD_NAME -- curl -X POST http://localhost:15000/logging?level=info

Écrire les journaux Envoy dans un dossier

Pour collecter les journaux d'accès du proxy Envoy et les stocker dans un dossier, exécutez la commande suivante :

kubectl logs -l app=APPLICATION_NAME -c istio-proxy > /FILE_PATH

Pour en savoir plus, consultez la section Obtenir les journaux d'accès Envoy.

Journaux Kubernetes

Kubernetes génère plusieurs journaux contenant des informations sur le comportement des composants Istio, tels que istiod, la passerelle d'entrée et les proxys. Vous pouvez consulter ces journaux pour rechercher des erreurs, ce qui peut restreindre la portée des causes possibles d'un problème.

(Plan de contrôle au sein du cluster uniquement) Enregistrez les journaux istiod à l'aide de la commande suivante:

kubectl -n istio-system logs $(kubectl -n istio-system get pods -lapp=istiod -oname) > ./LOGS_FOLDER/istiod.log

(Plan de contrôle au sein du cluster uniquement) Enregistrez les journaux de la passerelle d'entrée Istio à l'aide de la commande suivante:

kubectl -n istio-system logs $(kubectl -n istio-system get pods -lapp=istio-ingressgateway -oname) > /FILE_PATH

Enregistrez les journaux du proxy Istio à l'aide de la commande suivante :

kubectl -n WORKLOAD_NAMESPACE logs POD_NAME -c istio-proxy > ./LOGS_FOLDER/proxy.log

Fichier de vidage de configuration Kubernetes

Ces informations permettent aux utilisateurs ne disposant pas d'un accès direct au cluster d'afficher l'état de diverses ressources et d'identifier les éventuels problèmes de configuration. La commande suivante écrit la configuration Kubernetes dans un fichier YAML :

for ns in `kubectl get namespaces -o=jsonpath='{.items[*].metadata.name}'` ; do echo "===NAMESPACE===" $ns >> ./LOGS_FOLDER/kubernetes.yaml ;kubectl get -oyaml -n $ns deploy,statefulset,job,ingress,endpoints,configmap,event,secret,service,istio-io >> ./LOGS_FOLDER/kubernetes.yaml; done

Vidage de mémoire Envoy

Les vidages de mémoire Envoy ne sont généralement pas utiles pour les utilisateurs finaux. Toutefois, l'assistance Google peut vous demander de récupérer ces fichiers en suivant les étapes ci-dessous dans le cadre du processus de dépannage.

Pour configurer le noyau afin d'écrire des fichiers de vidage de mémoire Envoy dans un répertoire accessible en écriture :

  1. Ajoutez le libellé sidecar.istio.io/enableCoreDump=true à un pod.

  2. Redémarrez le pod pour activer les vidages de mémoire du noyau Envoy.

  3. Copiez le dump de mémoire hors du pod.

Configurer le proxy Envoy

La configuration détaillée du proxy Envoy contient des détails supplémentaires qui peuvent être utiles à des fins de dépannage. Vous pouvez collecter ces informations à l'aide de la commande suivante. Dans cet exemple, ENDPOINT est l'un des éléments suivants (affichés par ordre d'importance) :

  • /certs
  • /clusters
  • /listeners
  • /config_dump
  • /memory
  • /server_info
  • /stats/prometheus
  • /runtime
kubectl debug --image istio/base --target istio-proxy -itq POD_NAME -n NAMESPACE -- curl 127.0.0.1:15000/ENDPOINT > out.log