Surveiller les journaux du plan de données et du plan de contrôle dans Azure Kubernetes Application Network (aperçu)

Important

Les fonctionnalités d’évaluation AKS sont disponibles en libre-service et font l’objet d’un abonnement. Les versions d'essai sont fournies « en l’état » et « selon disponibilité », et elles sont exclues des contrats de niveau de service et de la garantie limitée. Les versions préliminaires AKS sont, dans la mesure du possible, partiellement couvertes par le service clientèle. Par conséquent, ces fonctionnalités ne sont pas destinées à une utilisation en production. Pour plus d’informations, consultez les articles de support suivants :

Azure Kubernetes Application Network fournit deux types de journalisation que vous pouvez configurer en fonction de vos exigences de supervision et de résolution des problèmes : les journaux du plan de données et les journaux du plan de contrôle.

  • Journaux du plan de données : Inclure les journaux des charges de travail des applications, applink-system des composants de l'espace de noms et des journaux d'accès du proxy Envoy.
  • Journaux du plan de contrôle : incluez les journaux Istiod des composants du plan de contrôle de l'Azure Kubernetes Application Network.

La journalisation du réseau d’applications Azure Kubernetes est désactivée par défaut. Cet article explique comment activer les deux types de journalisation et les afficher dans Azure Monitor.

Définir des variables d’environnement

  • Définissez des variables d’environnement pour votre flux de travail sélectionné à l’aide des commandes suivantes :

    # Set if specifying an existing or creating a new Log Analytics workspace
    export LAW_NAME=<log-analytics-workspace-name>
    
    # Set for resource group, location, and AKS cluster name
    export AKS_RG=<aks-resource-group>
    export LOCATION=<location>
    export CLUSTER_NAME=<aks-cluster-name>
    
    # Set for Azure Kubernetes Application Network member resource group, name, and member name
    export APPNET_RG=<appnet-resource-group>
    export APPNET_NAME=<appnet-name>
    export APPNET_MEMBER_NAME=<appnet-member-name>
    

Activer les journaux du plan de données

Les journaux du plan de données incluent les journaux de vos applications et charges de travail, ainsi que les charges de travail applink-system (Ztunnel et Istio CNI). Le module complémentaire Azure Container Insights est le moyen privilégié pour activer et visualiser les journaux de diagnostic pour la résolution des problèmes.

Lorsque vous activez les journaux du plan de données, vous avez la possibilité de spécifier un espace de travail Log Analytics existant, d’utiliser l’espace de travail par défaut pour votre groupe de ressources ou de créer un espace de travail.

Créer un espace de travail Log Analytics

  • Si vous créez un espace de travail Log Analytics, utilisez la az monitor log-analytics workspace create commande suivante :

    az monitor log-analytics workspace create \
        --resource-group $AKS_RG \
        --workspace-name $LAW_NAME \
        --location $LOCATION
    

Activer le module complémentaire Container Insights sur votre cluster AKS

  • Activez le module complémentaire Container Insights pour votre cluster membre Azure Kubernetes Application Network (omettant éventuellement l’ID d’espace de travail) à l’aide de la az aks enable-addons commande.

     az aks enable-addons \
      --addon monitoring \
      --name $CLUSTER_NAME \
      --resource-group $AKS_RG \
      --workspace-resource-id /subscriptions/$SUBSCRIPTION/resourcegroups/$AKS_RG/providers/microsoft.operationalinsights/workspaces/$LAW_NAME
    

Afficher les journaux de bord

  • Affichez les journaux en accédant à l’espace de travail Log Analytics et en exécutant la requête suivante :

    ContainerLogV2
    | where PodNamespace == "applink-system"
    

Journaux d’accès Envoy

Dans certains cas, vous devrez peut-être examiner les journaux d’accès Envoy lorsque le trafic est généré pour vos applications/charges de travail. Pour activer les journaux d’accès Envoy, utilisez l’API de télémétrie.

  1. Dans le fichier YAML ci-dessous, spécifiez l’espace de noms dans lequel vous souhaitez activer la journalisation des accès Envoy. Pour les journaux d’accès Envoy à l’échelle du maillage, supprimez l’espace de noms des métadonnées.

    cat <<EOF | kubectl apply -n default -f -
    apiVersion: telemetry.istio.io/v1
    kind: Telemetry
    metadata:
      name: mesh-logging-default
      namespace: default
    spec:
      accessLogging:
      - providers:
        - name: envoy
    EOF
    

    Les journaux d’accès Envoy seront disponibles dans l’espace de travail Log Analytics où le module complémentaire Container Insights a été activé.

  2. Affichez les journaux d’accès Envoy en accédant à l’espace de travail Log Analytics et en exécutant la requête suivante :

    ContainerLogV2
    | where TimeGenerated > ago(45m)
    | where PodName contains "gateway"
    | take 10
    

Activer les journaux du plan de contrôle

Pour activer les journaux du plan de contrôle, vous créez un paramètre de diagnostic et envoyez des journaux à l’espace de travail Log Analytics.

  1. Définissez une variable d’environnement pour le nom de votre paramètre de diagnostic à l’aide de la commande suivante :

    export DS_NAME=<diagnostic-settings-name>
    
  2. Créez un paramètre de diagnostic pour votre ressource membre Azure Kubernetes Application Network et spécifiez l’espace de travail Log Analytics comme destination à l’aide de la az monitor diagnostic-settings create commande.

    az monitor diagnostic-settings create \
    --resource /subscriptions/$SUBSCRIPTION/resourceGroups/$APPNET_RG/providers/Microsoft.AppLink/appLinks/$APPNET_NAME/appLinkMembers/$APPNET_MEMBER_NAME \
    --workspace /subscriptions/$SUBSCRIPTION/resourcegroups/$AKS_RG/providers/microsoft.operationalinsights/workspaces/$LAW_NAME \
    --logs "[{category:istiod,enabled:true}]" \
    --name $DS_NAME
    
  3. Une fois activé, accédez à l’espace de travail Log Analytics et exécutez la requête suivante :

    Note

    $appnet_member_resourceId doit être au format : /subscriptions/$subscription/resourceGroups/$appnet_rg/providers/microsoft.applink/applinks/$appnet_name/applinkmembers/$appnet_member_name.

    MeshControlPlane
    | where TimeGenerated > ago(1h)
    | where _ResourceId == $appnet_member_resourceId // appnet member resourceId
    

Tables de journal et schéma

Les tableaux suivants contiennent les journaux du réseau d’applications Azure Kubernetes dans votre espace de travail analytique des journaux d'activité :

Table de journal Description
ContainerLogV2 Contient les journaux d’activité de votre application/charge de travail
MeshControlPlane Contient des journaux Istiod

Schema

Pour rechercher le ContainerLogV2 schéma, consultez les colonnes ContainerLogV2.

MeshControlPlane est une table personnalisée avec le schéma suivant :

# Nom de colonne Type
0 Id de locataire ficelle
1 TimeGenerated datetime
2 Catégorie ficelle
3 Niveau ficelle
4 Message ficelle
5 Conteneur ficelle
6 PodName ficelle
7 SourceSystem ficelle
8 Type ficelle
9 _ResourceId (Identifiant de Ressource) ficelle

Exemples de requêtes

Filtrer les journaux par ID de ressource de cluster AKS

  • Filtrez les journaux en fonction de votre ID de ressource de cluster managé AKS dans la table ContainerLogV2 à l’aide de la requête suivante :

    ContainerLogV2
    | where TimeGenerated > ago(45m)
    | where _ResourceId == $aks_cluster_resource_id // managed cluster resourceId
    

Filtrer les journaux d’activité par ID de ressource membre du réseau d’applications Azure Kubernetes

  • Filtrez les journaux en fonction de votre ID de ressource membre Azure Kubernetes Application Network dans la table MeshControlPlane pour les journaux du plan de contrôle à l’aide de la requête suivante :

    MeshControlPlane
    | where TimeGenerated > ago(45m)
    | where Level == "ERROR"
    | where _ResourceId == $appnet_member_resourceId // appnet member resourceId
    

    La capture d’écran suivante montre un exemple des erreurs Istiod du réseau d’applications dans les journaux Azure Monitor :

    Capture d’écran d’exemple d’erreurs d’Application Network Istiod dans les journaux d’Azure Monitor.

Pour plus d’informations sur l’observabilité et la surveillance du réseau d’applications Azure Kubernetes, consultez les articles suivants :