Surveiller les journaux dans Azure Container Apps avec Log Analytics

Azure Container Apps est intégré à Azure Monitor Log Analytics pour surveiller et analyser les journaux de votre application conteneur. Lorsqu’il est sélectionné comme solution de monitoring des journaux, votre environnement Container Apps inclut un espace de travail Log Analytics qui fournit un emplacement commun pour stocker les données des journaux du système et des applications de toutes les applications de conteneurs s’exécutant dans l’environnement.

Les entrées de journal sont accessibles en interrogeant des tables Log Analytics via le Portail Microsoft Azure ou un interpréteur de commandes à l’aide d’Azure CLI.

Il existe deux types de journaux d’activité pour Container Apps.

  • Les journaux de console, émis par votre application.
  • Les journaux système émis par le service Container Apps.

Journaux système

Le service Container Apps fournit des messages de journal système au niveau de l’application conteneur. Les journaux système émettent les messages suivants :

Source Type Message
Dapr Info Création réussie du composant darp<component-name>avec l’étendue <dapr-component-scope >
Dapr Info Mise à jour du composant dapr <component-name> réussie avec l’étendue <type-de-composant>
Dapr Erreur Erreur lors de la création du composant darp <component-name>
Montages de volumes Info Volume <volume-name> monté avec succès pour la révision<étendue-de-la-révision>
Montages de volumes Erreur Erreur de montage du volume <volume-name>
Liaison de domaine Info Domaine <domain> lié avec succès au conteneur d’application <nom-du-conteneur-d’application>
Authentification Info Authentification activée sur l’application. Création d’une configuration d’authentification
Authentification Info Configuration d’authentification créée avec succès
Poids du trafic Info Définition d’un poids de trafic de <pourcentage>% pour la révision<revision-name\>
Approvisionnement de révision Info Création d’une nouvelle révision : <revision-name>
Approvisionnement de révision Info <Nom de révision> provisionné avec succès
Approvisionnement de révision Info Désactivation des anciennes révisions depuis « ActiveRevisionsMode=Single »
Approvisionnement de révision Erreur Erreur d’approvisionnement de révision<revision-name>. ErrorCode : <[ErrImagePull]|[ Délai d’expiration]| [ContainerCrashing]>

Les données du journal système sont accessibles en interrogeant la ContainerAppSystemLogs_CL table. Les colonnes spécifiques de Container Apps les plus utilisées dans la table sont les suivantes :

Colonne Description
ContainerAppName_s Nom de l’application conteneur
EnvironmentName_s Nom de l’environnement Container Apps
Log_s Message de journal
RevisionName_s Nom de la révision

Journaux de la console

Les journaux de console proviennent des messages de conteneursstderretstdout de votre application de conteneur et des sidecars Dapr. Vous pouvez afficher les journaux de console en interrogeant la ContainerAppConsoleLogs_CL table.

Conseil

L’instrumentation de votre code avec des messages de journal bien définis peut vous aider à comprendre comment votre code fonctionne et pour déboguer les problèmes. Pour en savoir plus sur les meilleures pratiques, consultez Conception pour les opérations.

Les colonnes spécifiques Container Apps les plus couramment utilisées dans ContainerAppConsoleLogs_CL sont les suivantes :

Colonne Description
ContainerAppName_s Nom de l’application conteneur
ContainerGroupName_g Nom du réplica
ContainerId_s Identificateur du conteneur
ContainerImage_s Nom d'image du conteneur
EnvironmentName_s Nom de l’environnement Container Apps
Log_s Message de journal
RevisionName_s Nom de la révision

Journal des requêtes avec Log Analytics

Log Analytics est un outil du portail Azure que vous pouvez utiliser pour afficher et analyser les données de journaux. Avec Log Analytics, vous pouvez écrire des requêtes Kusto, puis trier, filtrer et visualiser les résultats dans des graphiques pour repérer les tendances et identifier les problèmes. Vous pouvez travailler de manière interactive avec les résultats de la requête ou les utiliser avec d’autres fonctionnalités comme les alertes, les tableaux de bord et les classeurs.

Portail Azure

Pour démarrer Log Analytics, sélectionnez Journaux dans le menu de la barre latérale de la page de votre application conteneur. Vous pouvez également démarrer Log Analytics à partir de Moniteur>Journaux.

Vous pouvez interroger les journaux à l’aide des tables répertoriées dans l’onglet Tables de catégorie CustomLogs. Les tables de cette catégorie sont les ContainerAppSystemlogs_CL tables et ContainerAppConsoleLogs_CL les tables.

Capture d’écran des tables de journal personnalisées Log Analytics.

Voici un exemple de requête Kusto qui affiche les entrées de journal de la console pour l’application conteneur nommée album-api.

ContainerAppConsoleLogs_CL
| where ContainerAppName_s == 'album-api'
| project Time=TimeGenerated, AppName=ContainerAppName_s, Revision=RevisionName_s, Container=ContainerName_s, Message=Log_s
| take 100

Voici un exemple de requête Kusto qui affiche les entrées de journal du système pour l’application conteneur nommée album-api.

ContainerAppSystemLogs_CL
| where ContainerAppName_s == 'album-api'
| project Time=TimeGenerated, EnvName=EnvironmentName_s, AppName=ContainerAppName_s, Revision=RevisionName_s, Message=Log_s
| take 100

Pour plus d’informations sur Log Analytics et les requêtes de journal, consultez le tutoriel Log Analytics.

Azure CLI/PowerShell

Vous pouvez interroger les journaux Container Apps en utilisant Azure CLI.

Ces exemples de requêtes Azure CLI génèrent une table contenant des enregistrements de journal pour l’album-api du nom de l’application conteneur. Les colonnes de la table sont spécifiées par les paramètres après l’opérateur project. La variable$WORKSPACE_CUSTOMER_ID contient le GUID de l’espace de travail Log Analytics.

Cet exemple interroge la tableContainerAppConsoleLogs_CL :

az monitor log-analytics query --workspace $WORKSPACE_CUSTOMER_ID --analytics-query "ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'album-api' | project Time=TimeGenerated, AppName=ContainerAppName_s, Revision=RevisionName_s, Container=ContainerName_s, Message=Log_s, LogLevel_s | take 5" --out table

Cet exemple interroge la tableContainerAppSystemLogs_CL :

az monitor log-analytics query --workspace $WORKSPACE_CUSTOMER_ID --analytics-query "ContainerAppSystemLogs_CL | where ContainerAppName_s == 'album-api' | project Time=TimeGenerated, AppName=ContainerAppName_s, Revision=RevisionName_s, Message=Log_s, LogLevel_s | take 5" --out table

Étapes suivantes