Groupe de conteneurs et journalisation des instances de conteneur avec les journaux d’activité Azure Monitor

Les espaces de travail Log Analytics fournissent un emplacement centralisé pour le stockage et l’interrogation des données de journaux, non seulement à partir de ressources Azure, mais également à partir de ressources locales et d’autres clouds. Azure Container Instances inclut une prise en charge intégrée de l’envoi des journaux et des données d’événements aux journaux Azure Monitor.

Pour envoyer des données de journal et des données d’événements d’un groupe de conteneurs aux journaux Azure Monitor, indiquez une clé et un ID d’espace de travail Log Analytics lors de la configuration du groupe de conteneurs.

Les sections suivantes décrivent comment créer un groupe de conteneurs dans lequel la journalisation est activée et comment interroger des journaux. Vous pouvez également mettre à jour un groupe de conteneurs avec un ID d’espace de travail et une clé d’espace de travail pour activer la journalisation.

Notes

Cet article a récemment été mis à jour pour utiliser le terme journaux d’activité Azure Monitor au lieu de Log Analytics. Les données de journal sont toujours stockées dans un espace de travail Log Analytics, et elles sont toujours collectées et analysées par le même service Log Analytics. Nous mettons la terminologie à jour pour mieux refléter le rôle des journaux d’activité dans Azure Monitor. Pour plus d'informations, consultez Modifications de la terminologie d'Azure Monitor.

Prérequis

Pour activer la journalisation dans vos instances de conteneur, vous avez besoin des éléments suivants :

Obtenir les informations d’identification de Log Analytics

Azure Container Instances doit disposer d’une autorisation pour envoyer des données à votre espace de travail Log Analytics. Pour accorder cette autorisation et activer la journalisation, vous devez fournir l’ID d’espace de travail Log Analytics et une de ses clés (principale ou secondaire) lorsque vous créez le groupe de conteneurs.

Pour obtenir l’ID et la clé primaire de l’espace de travail Log Analytics :

  1. Accédez à votre espace de travail Log Analytics dans le portail Azure
  2. Sous Paramètres, sélectionnez Gestion des agents
  3. Notez :
    • ID de l’espace de travail
    • Clé primaire

Créer un groupe de conteneurs

Maintenant que vous disposez de l’ID et de la clé primaire de l’espace de travail Log Analytics, vous êtes prêt à créer un groupe de conteneurs dans lequel la journalisation est activée.

Les exemples suivants montrent deux façons de créer un groupe de conteneurs qui consiste en un seul conteneur Fluentd : Azure CLI et Azure CLI avec un modèle YAML. Le conteneur Fluentd produit plusieurs lignes de sortie dans sa configuration par défaut. Cette sortie étant envoyée à votre espace de travail Log Analytics, elle convient parfaitement à l’affichage et à l’interrogation des journaux d’activité.

Déploiement avec l’interface de ligne de commande Azure

Pour procéder au déploiement avec Azure CLI, spécifiez les paramètres --log-analytics-workspace et --log-analytics-workspace-key dans la commande az container create. Avant d’exécuter la commande suivante, remplacez les deux valeurs de l’espace de travail par celles que vous avez obtenues à l’étape précédente (et mettez à jour le nom du groupe de ressources).

Notes

L’exemple suivant tire (pull) une image conteneur publique à partir de Docker Hub. Nous vous recommandons de configurer un secret d’extraction pour l’authentification à l’aide d’un compte Docker Hub au lieu de créer une demande de tirage anonyme. Pour une plus grande fiabilité lors de l’utilisation de contenu public, importez et gérez l’image dans un registre de conteneurs Azure privé. En savoir plus sur l’utilisation des images publiques.

az container create \
    --resource-group myResourceGroup \
    --name mycontainergroup001 \
    --image fluent/fluentd:v1.3-debian-1 \
    --log-analytics-workspace <WORKSPACE_ID> \
    --log-analytics-workspace-key <WORKSPACE_KEY>

Déployer avec YAML

Utilisez cette méthode si vous préférez déployer des groupes de conteneurs avec YAML. Le code YAML suivant définit un groupe de conteneurs à un seul conteneur. Copiez le code YAML dans un nouveau fichier, puis remplacez LOG_ANALYTICS_WORKSPACE_ID et LOG_ANALYTICS_WORKSPACE_KEY par les valeurs obtenues à l’étape précédente. Enregistrez le fichier sous le nom deploy-aci.yaml.

Notes

L’exemple suivant tire (pull) une image conteneur publique à partir de Docker Hub. Nous vous recommandons de configurer un secret d’extraction pour l’authentification à l’aide d’un compte Docker Hub au lieu de créer une demande de tirage anonyme. Pour une plus grande fiabilité lors de l’utilisation de contenu public, importez et gérez l’image dans un registre de conteneurs Azure privé. En savoir plus sur l’utilisation des images publiques.

apiVersion: 2019-12-01
location: eastus
name: mycontainergroup001
properties:
  containers:
  - name: mycontainer001
    properties:
      environmentVariables: []
      image: fluent/fluentd:v1.3-debian-1
      ports: []
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
  osType: Linux
  restartPolicy: Always
  diagnostics:
    logAnalytics:
      workspaceId: LOG_ANALYTICS_WORKSPACE_ID
      workspaceKey: LOG_ANALYTICS_WORKSPACE_KEY
tags: null
type: Microsoft.ContainerInstance/containerGroups

Ensuite, exécutez la commande suivante pour déployer le groupe de conteneurs. Remplacez myResourceGroup par un groupe de ressources de votre abonnement (ou créez d’abord un groupe de ressources nommé « myResourceGroup ») :

az container create --resource-group myResourceGroup --name mycontainergroup001 --file deploy-aci.yaml

Vous devriez recevoir une réponse à partir des détails du déploiement de conteneur Azure peu de temps après l’émission de la commande.

Afficher les journaux d’activité

Une fois le groupe de conteneurs déployé, l’affichage dans le Portail Azure des premières entrées de journal peut prendre plusieurs minutes (jusqu’à 10).

Pour voir les journaux du groupe de conteneurs dans la table ContainerInstanceLog_CL :

  1. Accédez à votre espace de travail Log Analytics dans le portail Azure
  2. Sous Général, sélectionnez Journaux.
  3. Tapez la requête suivante : ContainerInstanceLog_CL | limit 50
  4. Sélectionnez Exécuter.

Vous devez voir plusieurs résultats affichés par la requête. Si vous ne voyez aucun résultat dans un premier temps, patientez quelques minutes, puis sélectionnez le bouton Exécuter pour réexécuter la requête. Par défaut, les entrées de journal sont affichées au format Tableau. Vous pouvez ensuite développer une ligne pour afficher le contenu d’une entrée de journal.

Résultats de recherche dans les journaux dans le portail Azure

Afficher les événements

Vous pouvez également voir les événements des instances de conteneur dans le portail Azure. Les événements incluent l’heure où l’instance est créée et où elle démarre. Pour voir les données d’événements dans la table ContainerEvent_CL :

  1. Accédez à votre espace de travail Log Analytics dans le portail Azure
  2. Sous Général, sélectionnez Journaux.
  3. Tapez la requête suivante : ContainerEvent_CL | limit 50
  4. Sélectionnez Exécuter.

Vous devez voir plusieurs résultats affichés par la requête. Si vous ne voyez aucun résultat dans un premier temps, patientez quelques minutes, puis sélectionnez le bouton Exécuter pour réexécuter la requête. Par défaut, les entrées sont affichées au format Tableau. Vous pouvez ensuite développer une ligne pour voir le contenu d’une entrée individuelle.

Résultats de la recherche d’événements dans le portail Azure

Interroger les journaux d’activité d’un conteneur

Les journaux Azure Monitor incluent un langage de requête étendu permettant de tirer (pull) les informations des milliers de lignes que peuvent contenir les journaux.

La structure de base d’une requête est la table source (dans cet article, ContainerInstanceLog_CL ou ContainerEvent_CL) suivie d’une série d’opérateurs séparés par une barre verticale (|). Vous pouvez chaîner plusieurs opérateurs pour affiner les résultats et effectuer des fonctions avancées.

Pour voir des exemples de résultats de requête, collez la requête suivante dans la zone de texte de requête, puis sélectionnez le bouton Exécuter pour exécuter la requête. Cette requête affiche toutes les entrées de journal dont le champ « Message » contient le mot « Avertissement » :

ContainerInstanceLog_CL
| where Message contains "warn"

Des requêtes plus complexes sont également prises en charge. Par exemple, cette requête n’affiche que les entrées de journal pour le groupe de conteneurs « mycontainergroup001 » générées au cours de la dernière heure :

ContainerInstanceLog_CL
| where (ContainerGroup_s == "mycontainergroup001")
| where (TimeGenerated > ago(1h))

Schéma du journal

Remarque

Certaines des colonnes répertoriées dans le tableau suivant existent uniquement dans le cadre du schéma et aucune donnée n’est émise dans les journaux. Ces colonnes sont dénotées avec une description « Vide ».

ContainerInstanceLog_CL

Colonne Type Description
Computer string Vide
ContainerGroup_s string Nom du groupe de conteneurs associé à l’enregistrement
ContainerID_s string Identificateur unique pour le conteneur associé à l’enregistrement
ContainerImage_s string Nom de l’image de conteneur associée à l’enregistrement
Location_s string Emplacement de la ressource associée à l’enregistrement
Message string Le cas échéant, le message du conteneur
OSType_s string Nom du système d’exploitation sur lequel le conteneur est basé
RawData string Vide
ResourceGroup string Nom du groupe de ressources auquel l’enregistrement est associé
Source_s string Nom du composant de journalisation, « LoggingAgent »
SubscriptionId string Un identificateur unique de l’abonnement auquel l’enregistrement est associé
TimeGenerated DATETIME Horodatage lorsque l’événement a été généré par le service Azure traitant la demande correspondant à l’événement
Type string Le nom de la table
_ResourceId string Un identificateur unique de la ressource à laquelle l’enregistrement est associé
_SubscriptionId string Un identificateur unique de l’abonnement auquel l’enregistrement est associé

ContainerEvent_CL

Colonne Type Description
Computer string Vide
ContainerGroupInstanceId_g string Identificateur unique pour le groupe de conteneurs associé à l’enregistrement
ContainerGroup_s string Nom du groupe de conteneurs associé à l’enregistrement
ContainerName_s string Le nom du conteneur associé à l’enregistrement
Count_d real Nombre de fois où l’événement s’est produit depuis la dernière interrogation
FirstTimestamp_t DATETIME Horodatage de la première fois que l’événement s’est produit
Location_s string Emplacement de la ressource associée à l’enregistrement
Message string Le cas échéant, le message du conteneur
OSType_s string Nom du système d’exploitation sur lequel le conteneur est basé
RawData string Vide
Reason_s string L'état actuel du groupe de conteneurs
ResourceGroup string Le nom du groupe de ressources auquel l’enregistrement est associé
SubscriptionId string Un identificateur unique de l’abonnement auquel l’enregistrement est associé
TimeGenerated DATETIME Horodatage lorsque l’événement a été généré par le service Azure traitant la demande correspondant à l’événement
Type string Le nom de la table
_ResourceId string Un identificateur unique de la ressource à laquelle l’enregistrement est associé
_SubscriptionId string Un identificateur unique de l’abonnement auquel l’enregistrement est associé

Utilisation des paramètres de diagnostic

Les paramètres de diagnostic pour les groupes de conteneurs sont une fonctionnalité d’évaluation. Vous pouvez l’activer via les options relatives aux fonctionnalités d’évaluation dans le portail Azure. Une fois cette fonctionnalité activée pour un abonnement, vous pouvez appliquer les paramètres de diagnostic à un groupe de conteneurs. L’application des paramètres de diagnostic entraîne le redémarrage d’un groupe de conteneurs.

Par exemple, voici comment utiliser la commande New-AzDiagnosticSetting pour appliquer un objet de paramètres de diagnostic à un groupe de conteneurs.

$log = @()
$log += New-AzDiagnosticSettingLogSettingsObject -Enabled $true -Category ContainerInstanceLog -RetentionPolicyDay 7 -RetentionPolicyEnabled $true
 
New-AzDiagnosticSetting -Name test-setting -ResourceId <container-group-resource-id> -WorkspaceId <log-analytics-workspace-id> -Log $log

Étapes suivantes

Journaux d’activité Azure Monitor

Pour plus d’informations sur l’interrogation des journaux d’activité et la configuration d’alertes dans les journaux d’activité Azure Monitor, consultez :

Surveiller le processeur et la mémoire du conteneur

Pour plus d’informations sur la surveillance des ressources processeur et mémoire de l’instance de conteneur, consultez :