Transférer les journaux de diagnostic Azure Automation vers Azure Monitor

Azure Automation peut envoyer un état de tâche du Runbook et des flux de tâches à votre espace de travail Log Analytics. Ce processus ne passe pas par la liaison d’un espace de travail, est complètement indépendant et vous permet d’effectuer des investigations simples. Les journaux et les flux de travaux sont visibles sur le portail Azure ou avec PowerShell pour les travaux individuels. Avec les journaux Azure Monitor de votre compte Automation, vous pouvez :

  • Obtenir des insights sur l’état de vos travaux Automation.
  • Déclencher un e-mail ou une alerte en fonction du statut de votre travail de runbook (par exemple, échec ou état suspendu).
  • Écrire des requêtes avancées sur plusieurs flux de travaux.
  • Mettre en corrélation des travaux sur différents comptes Automation.
  • Utiliser des vues et des requêtes de recherche personnalisées pour visualiser les résultats de vos runbooks, l’état des travaux des runbooks et d’autres indicateurs ou métriques via un tableau de bord Azure.
  • Obtenir les journaux d’audit relatifs aux comptes Automation, aux runbooks et à d’autres opérations de création, de modification et de suppression de ressources.

Avec les journaux Azure Monitor, vous pouvez regrouper les journaux de différentes ressources dans un même espace de travail, où ils peuvent être analysés avec des requêtes de façon à récupérer, regrouper et analyser rapidement les données collectées. Vous pouvez créer et tester des requêtes à l’aide de Log Analytics sur le portail Azure, avant d’analyser directement les données à l’aide de ces outils ou d’enregistrer les requêtes pour les utiliser avec des règles de visualisation ou d’alerte.

Azure Monitor utilise une version du langage de requête Kusto (KQL) utilisée par Azure Data Explorer et qui convient pour les requêtes de journaux simples. Il propose aussi des fonctionnalités avancées comme les agrégations, les jointures et l’analytique intelligente. Il existe plusieurs leçons pour vous aider à apprendre le langage de requête.

Paramètres de diagnostic Azure Automation

Vous pouvez transférer les journaux de plateforme et les données de métriques suivants en profitant de la prise en charge des paramètres de diagnostic Automation :

Types de données Description
Journaux d’activité de travail État du travail de runbook dans le compte Automation.
Flux de travail État des flux de travaux dans le runbook défini dans le compte Automation.
DSCNodeStatus État du nœud DSC.
AuditEvent Tous les journaux de ressources qui enregistrent les interactions des clients avec les données ou les paramètres du service Azure Automation.
Métriques Nombre total de travaux, nombre total d’exécutions automatiques de mise à jour, de déploiement, nombre total d’exécutions de déploiement de mises à jour.

Configurer les paramètres de diagnostic sur le portail Azure

Vous pouvez configurer les paramètres de diagnostic sur le portail Azure à partir du menu pour la ressource de compte Automation.

  1. Dans le menu du compte Automation, sous Supervision, sélectionnez Paramètres de diagnostic.

    Screenshot showing selection of diagnostic setting option.

  2. Cliquez sur Ajouter le paramètre de diagnostic.

    Screenshot showing selection of add diagnostic setting.

  3. Entrez un nom de paramètre dans le champ Nom du paramètre de diagnostic s’il n’en contient pas déjà un.

    Vous pouvez aussi afficher toutes les catégories de journaux et de métriques.

    Screenshot showing all categories of logs and metrics.

    • Journaux et métriques à router : pour les journaux, choisissez un groupe de catégories ou cochez la case de chaque catégorie de données que vous souhaitez envoyer aux destinations spécifiées. Choisissez AllMetrics si vous souhaitez stocker les métriques dans des journaux Azure Monitor.

    • Détails de la destination : activez la case à cocher pour chaque destination. Suivant la sélection de chaque zone, les options s’affichent pour vous permettre d’ajouter des informations supplémentaires.

      Screenshot showing selections in destination details section.

      • Log Analytics : entrez l’ID d’abonnement et le nom de l’espace de travail. Si vous n’avez pas d’espace de travail, vous devez en créer un avant de continuer.

      • Event Hubs : spécifiez les critères suivants :

        • Abonnement : il s’agit du même abonnement que celui du hub d’événements.
        • Espace de noms Event Hub : créez un hub d’événements si vous n’en avez pas encore un.
        • Nom du hub d’événements (facultatif) : si vous ne spécifiez pas de nom, un hub d’événements est créé pour chaque catégorie de journal. Si vous envoyez plusieurs catégories, spécifiez un nom pour limiter le nombre de hubs d’événements créés. Pour plus de détails, voir Quotas et limites d’Azure Event Hubs.
        • Nom de la stratégie du hub d’événements (facultatif) : une stratégie définit les autorisations dont dispose le mécanisme de streaming. Consultez Fonctionnalités Event Hubs.
      • Stockage : choisissez l’abonnement, le compte de stockage et la stratégie de rétention. Screenshot showing the storage account.

      • Intégration de partenaire : vous devez d’abord installer une intégration de partenaire dans votre abonnement. Les options de configuration varient selon le partenaire. Pour plus d’informations, consultez Intégration Azure Monitor.

  4. Cliquez sur Enregistrer.

Après quelques instants, le nouveau paramètre apparaît dans la liste des paramètres de cette ressource, et les journaux sont envoyés aux destinations spécifiées au fur et à mesure de la génération de nouvelles données d’événement. Un délai de 15 minutes peut être nécessaire avant que l’événement émis s’affiche dans l’espace de travail Log Analytics.

Interroger les journaux

Pour interroger les journaux générés :

  1. Dans votre compte Automation, sous Surveillance, sélectionnez Journaux.

  2. Sous Toutes les requêtes, sélectionnez Travaux Automation.

    Screenshot showing how to navigate to select Automation jobs.

  3. Sélectionnez la requête que vous souhaitez exécuter, puis cliquez sur Exécuter.

  4. Pour exécuter une requête personnalisée, fermez la fenêtre Requêtes, collez votre requête personnalisée dans la fenêtre Nouvelle requête, puis cliquez sur Exécuter.

    La sortie de la requête s’affiche dans le volet Résultats.

  5. Cliquez sur Nouvelle règle d’alerte pour configurer une alerte Azure Monitor pour cette requête.

    Screenshot showing how to query logs.

Enregistrements de journaux Azure Monitor

Les diagnostics Azure Automation créent les types d’enregistrements suivants dans les journaux Azure Monitor, étiquetés AzureDiagnostics. Les tableaux figurant dans les sections ci-dessous présentent des exemples d’enregistrements générés par Azure Automation ainsi que les types de données qui s’affichent dans les résultats de recherche dans les journaux.

Journaux de tâches

Propriété Description
TimeGenerated Date et heure d’exécution du travail du runbook.
RunbookName_s Nom/noms du runbook.
Caller_s Appelant qui a initié l’opération. Les valeurs possibles sont une adresse de messagerie ou un système pour les travaux planifiés.
Tenant_g GUID (identificateur global unique) qui identifie le locataire pour l’appelant.
JobId_g GUID identifiant le travail du runbook.
ResultType État du travail du runbook. Les valeurs possibles sont les suivantes :
- Nouveau
Créé
Démarré
Arrêté
Interrompu
Échec
- Terminé
Catégorie Classification du type de données. Pour Automation, la valeur est JobLogs.
NomOpération Type d’opération exécutée dans Azure. Pour Automation, la valeur est Job.
Ressource Nom du compte Automation
SourceSystem Système utilisé par les journaux d'activité Azure Monitor pour collecter les données. La valeur est toujours Azure pour les diagnostics Azure.
ResultDescription État du résultat du travail du runbook. Les valeurs possibles sont les suivantes :
- Job is started
- Job Failed
- Job Completed
CorrelationId GUID de corrélation du travail du runbook.
ResourceId ID de ressource de compte Azure Automation du runbook.
SubscriptionId GUID d’abonnement Azure pour le compte Automation.
ResourceGroup Nom du groupe de ressources du compte Automation.
ResourceProvider Nom du fournisseur de ressources. La valeur est MICROSOFT.AUTOMATION.
ResourceType Type de ressource. La valeur est AUTOMATIONACCOUNTS.

Flux de tâches

Propriété Description
TimeGenerated Date et heure auxquels le travail du runbook s’est exécuté.
RunbookName_s Nom du runbook.
Caller_s Appelant qui a initié l’opération. Les valeurs possibles sont une adresse de messagerie ou un système pour les travaux planifiés.
StreamType_s Type de flux de travaux. Les valeurs possibles sont les suivantes :
progress
Sortie
- Avertissement
error
DEBUG
- Verbose
Tenant_g GUID identifiant le locataire pour l’appelant.
JobId_g GUID identifiant le travail du runbook.
ResultType L’état du travail du runbook. Les valeurs possibles sont les suivantes :
- In Progress
Catégorie Classification du type de données. Pour Automation, la valeur est JobStreams.
NomOpération Type d’opération exécutée dans Azure. Pour Automation, la valeur est Job.
Ressource Nom du compte Automation.
SourceSystem Système utilisé par les journaux d'activité Azure Monitor pour collecter les données. La valeur est toujours Azure pour les diagnostics Azure.
ResultDescription Description incluant le flux de sortie du runbook.
CorrelationId GUID de corrélation du travail du runbook.
ResourceId ID de ressource de compte Azure Automation du runbook.
SubscriptionId GUID d’abonnement Azure pour le compte Automation.
ResourceGroup Nom du groupe de ressources du compte Automation.
ResourceProvider Fournisseur de ressources. La valeur est MICROSOFT.AUTOMATION.
ResourceType Type de ressource. La valeur est AUTOMATIONACCOUNTS.

Événements d'audit

Propriété Description
TenantID GUID identifiant le locataire pour l’appelant.
TimeGenerated (UTC) Date et heure d’exécution du travail du runbook.
Catégorie AuditEvent
ResourceGroup Nom du groupe de ressources du compte Automation.
ID d’abonnement GUID d’abonnement Azure pour le compte Automation.
ResourceProvider MICROSOFT.AUTOMATION
Ressource Nom du compte Automation
ResourceType AUTOMATIONACCOUNTS
NomOpération Les valeurs possibles sont Update, Create, Delete.
ResultType État du travail du runbook. La valeur possible est : Completed.
CorrelationId GUID de corrélation du travail du runbook.
ResultDescription État du résultat du travail du runbook. Les valeurs possibles sont Update, Create, Delete.
Tenant_g GUID identifiant le locataire pour l’appelant.
SourceSystem Système utilisé par les journaux Azure Monitor pour collecter les données. La valeur est toujours Azure pour les diagnostics Azure.
clientInfo_IpAddress_s {nettoyé}
clientInfo_PrincipalName_s {nettoyé}
clientInfo_TenantId_g ID de locataire du client.
clientInfo_Issuer_s
clientInfo_ObjectId_g ID d’objet du client.
clientInfo_AppId_g ID d’application du client.
clientInfo_ClientRequestId_g ID de demande du client
targetResources_Resource_s Compte, Travail, Informations d’identification, Connexions, Variables, Runbook.
Type AzureDiagnostics
_ResourceId ID de ressource de compte Azure Automation du runbook.

Afficher les journaux Automation dans les journaux Azure Monitor

Après avoir commencé à envoyer vos flux de travail journaux Automation aux journaux d’activité d’Azure Monitor, nous allons voir comment les utiliser dans les journaux d’activité d’Azure Monitor.

Pour afficher les journaux d’activité, exécutez la requête suivante :kusto AzureDiagnostics | where ResourceProvider == "MICROSOFT.AUTOMATION"

Exemples de requêtes pour les journaux de travaux et les flux de travaux

Rechercher tous les travaux qui se sont terminés avec une erreur

En plus des scénarios tels que l’émission d’alertes en cas d’échecs, vous pouvez identifier un travail de runbook qui rencontre une erreur sans fin d’exécution. Dans ce cas, PowerShell génère un flux d’erreur, mais les erreurs sans fin d’exécution ne provoquent la suspension ou l’échec du travail.

  1. Dans votre espace de travail Log Analytics, cliquez sur Journaux.
  2. Dans le champ de requête de la requête, tapez :
    AzureDiagnostics | where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobStreams" and StreamType_s == "Error" | summarize AggregatedValue = count () by JobId_g. 
    
  3. Cliquez sur Rechercher.

Afficher les flux de travail pour un travail

Lorsque vous déboguez un travail, vous pouvez également examiner les flux de travaux. La requête ci-dessous montre tous les flux pour un seul travail avec le GUID 2ebd22ea-e05e-4eb9-9d76-d73cbd4356e0 :

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobStreams" and JobId_g == "2ebd22ea-e05e-4eb9-9d76-d73cbd4356e0"
| sort by TimeGenerated asc
| project ResultDescription

Afficher l’état de travail historique

Vous pouvez enfin souhaiter visualiser l’historique de vos travaux dans le temps. Vous pouvez utiliser cette requête pour rechercher l’état de vos travaux au fil du temps.

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobLogs" and ResultType != "started"
| summarize AggregatedValue = count() by ResultType, bin(TimeGenerated, 1h)

Log Analytics Historical Job Status Chart

Rechercher les journaux signalant des erreurs dans les travaux Automation

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" 
| where StreamType_s == "Error" 
| project TimeGenerated, Category, JobId_g, OperationName, RunbookName_s, ResultDescription, _ResourceId 

Rechercher les travaux Azure Automation terminés

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobLogs" and ResultType == "Completed" 
| project TimeGenerated, RunbookName_s, ResultType, _ResourceId, JobId_g

Rechercher les travaux Azure Automation en échec, interrompus ou arrêtés

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobLogs" and (ResultType == "Failed" or ResultType == "Stopped" or ResultType == "Suspended") 
| project TimeGenerated, RunbookName_s, ResultType, _ResourceId, JobId_g 

Répertorier tous les runbooks et travaux qui se sont terminés avec succès avec des erreurs

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobStreams" and StreamType_s == "Error" 
| project TimeGenerated, RunbookName_s, StreamType_s, _ResourceId, ResultDescription, JobId_g 

Envoyer un e-mail en cas d’échec ou de suspension d’un travail de runbook

Les étapes suivantes expliquent comment configurer des alertes par e-mail dans Azure Monitor pour être averti en cas de problème avec un travail de runbook.

Pour créer une règle d’alerte, créez une recherche dans les journaux pour les enregistrements de travail de runbook qui doivent appeler l’alerte comme décrit dans Interroger les journaux. Cliquez sur +Nouvelle règle d’alerte pour configurer la règle d’alerte.

  1. Dans votre compte Automation, sous Surveillance, sélectionnez Journaux.

  2. Créez une requête de recherche dans les journaux pour votre alerte en entrant un critère de recherche dans le champ de requête.

    AzureDiagnostics | where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobLogs" and (ResultType == "Failed" or ResultType == "Suspended")   
    

    Vous pouvez également regrouper le nom du runbook à l’aide de :

    AzureDiagnostics | where ResourceProvider == "MICROSOFT.AUTOMATION" and     Category == "JobLogs" and (ResultType == "Failed" or ResultType == "Suspended") | summarize AggregatedValue = count() by RunbookName_s 
    
  3. Pour ouvrir l’écran Créer une règle d’alerte, cliquez sur +Nouvelle règle d’alerte en haut de la page. Pour plus d’informations sur les options de configuration des alertes, consultez Alertes de journaux dans Azure.

Journaux d’audit de diagnostic Azure Automation

Vous pouvez maintenant aussi envoyer des journaux d’audit à l’espace de travail Azure Monitor. Cela permet aux entreprises de surveiller les activités de compte Automation clés pour la sécurité et la conformité. Lorsque vous êtes activé via les paramètres de Diagnostics Azure, vous pouvez collecter des données de télémétrie sur les opérations de création, de mise à jour et de suppression pour les runbooks Automation, les travaux et les ressources d’automatisation, comme la connexion, les informations d’identification, la variable et le certificat. Vous pouvez aussi configurer les alertes pour les conditions de journal d’audit dans le cadre de vos exigences en matière de supervision de la sécurité.

Différence entre les journaux d’activité et les journaux d’audit

Un journal d’activité est un journal de plateforme dans Azure qui fournit des insights sur les événements de niveau abonnement. Le journal d’activité du compte Automation comporte des informations sur les opérations de modification, de création ou de suppression qui concernent une ressource Automation. Cependant, le nom ou l’ID de la ressource n’y sont pas indiqués.

Les journaux d’audit des comptes Automation capturent le nom et l’ID de la ressource (variable, informations d’identification, connexion Automation, etc.), ainsi que le type de l’opération effectuée sur la ressource. Par ailleurs, Azure Automation élimine certains détails comme les données IP du client conformément à la conformité au règlement RGPD.

Les journaux d’activité affichent des détails comme l’adresse IP du client, car un journal d’activité est un journal de plateforme qui fournit des informations détaillées de diagnostic et d’audit pour les ressources Azure. Elles sont générées automatiquement pour les activités qui se produisent dans ARM et sont envoyées (push) au fournisseur de ressources de journal d’activité. Étant donné que les journaux d’activité font partie de la supervision Azure, certaines données du client sont affichées pour fournir des insights sur son activité.  

Exemples de requêtes pour les journaux d’audit

Requête destinée à afficher les journaux d’audit de ressources Automation

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "AuditEvent" 

Requête destinée à superviser les opération de mise à jour, de création ou de suppression de variable

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "AuditEvent" and targetResources_Resource_s == "Variable" 

Requête destinée à superviser les opérations de runbook (création, composition ou mise à jour)

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "AuditEvent" and targetResources_Resource_s contains "Runbook" 

Requête destinée à superviser les opérations de création, de mise à jour ou de suppression de certificat

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "AuditEvent" and targetResources_Resource_s contains "Certificate" 

Requête destinée à superviser les opérations de création, de mise à jour ou de suppression d’informations d’identification

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "AuditEvent" and targetResources_Resource_s contains "Credential" 

Filtrer la sortie de l’état du travail convertie en objet JSON

Récemment, nous avons modifié le comportement relatif à la façon dont les données du journal Automation sont écrites dans la table AzureDiagnostics du service Log Analytics, où elles ne décomposent plus les propriétés JSON en champs distincts. Si vous avez configuré votre runbook pour qu’il formate les objets du flux de sortie de format JSON sous forme de colonnes distinctes, vous devez reconfigurer vos requêtes pour analyser ce champ en tant qu’objet JSON afin d’accéder à ces propriétés. Pour ce faire, utilisez parsejson pour accéder à un élément JSON spécifique dans un chemin connu.

Par exemple, un runbook formate la propriété ResultDescription dans le flux de sortie au format JSON avec plusieurs champs. Pour rechercher les travaux qui sont à l’état d’échec, comme spécifié dans un champ appelé État, utilisez cet exemple de requête pour rechercher la propriété ResultDescription dont l’état est Échec :

AzureDiagnostics
| where Category == 'JobStreams'
| extend jsonResourceDescription = parse_json(ResultDescription)
| where jsonResourceDescription.Status == 'Failed'

Log Analytics Historical Job Stream JSON format

Étapes suivantes