Azure monitor Logs : tracer des informations spécifiques avec une logic app

Camille Schneider
Publié par Camille
Catégorie : Azure
29/03/2019

Azure Monitor Logs (anciennement Log Analytics) est une brique fondamentale du service Azure Monitor. Azure Monitor Logs permet le stockage et l’analyse de traces émises par différents composants. De plus, nativement, les ressources Azure que vous pouvez utiliser dans vos souscriptions Azure sont capables d’injecter des informations dans la base de Logs.

Source de donnees Azure Monitor Logs

A la différence des métriques, les logs Azure Monitor peuvent être des informations de différents types (date, chaîne de caractères…) . Elles sont organisées sous forme d’enregistrements (plusieurs colonnes). Il est intéressant de noter que la base de Logs peut être enrichie par des traces spécifiques à vos besoins (par exemple en utilisant les API de collecte de logs, comme le montre le diagramme précédent). C’est là l’objet de mon article : comment injecter des informations dans Logs Analytics via mes Logic Apps.

 

Créer son workspace Log Analytics

Vous devez disposer d’un workspace Log Anlaytics pour gérer vos Logs. Pour créer votre workspace, ajoutez simplement une nouvelle ressource de type « Log Analytics » depuis le portail Azure.

creer workspace log analytics

Vous devez ensuite spécifier :

  • un nom pour le workspace,
  • la souscription Azure où sera enregistrée votre ressource
  • un groupe de ressources (créez un nouveau groupe ou utilisez un groupe existant)
  • un datacenter
  • un niveau de tarification (version gratuite dans cet exemple)

Vous pouvez désormais ajouter des traces dans le service Azure Monitor Logs.

 

Liaison d’une logic app à un workspace log analytics

Pour que la Logic App soit capable d’émettre des traces il faut la lier à un workspace Log analytics. Cela peut se faire à la création de la Logic App comme le montre la capture ci-dessous

lier logic app et workspace log analytics

Ou encore depuis l’onglet Logs de la Logic App si la liaison n’a pas été ajoutée au moment de la création de la Logic App.

lier logic app et workspace log analytics depuis settings

 

Génération de Logs depuis une Logic App

La liaison à un workspace active automatiquement l’émission d’un grand nombre de traces :

  • Début d’exécution d’un run
  • Fin d’exécution d’un run
  • Début d’exécution d’une action…

Cependant, celles-ci sont relativement techniques, et il est parfois intéressant d’enregistrer des informations avec une connotation métier (ex : un numéro de commande qui pourra être utilisé pour rechercher les instances liées à cette commande).
A partir de n’importe quelle action d’une Logic App, il est possible de configurer les informations à insérer dans la base Log Analytics. Pour réaliser ce paramétrage, il suffit d’utiliser les 3 petits points en haut à droite de l’action et de cliquer sur « Settings ».

Dans l’exemple ci-dessous j’ai tracké deux propriétés. L’une d’elle, « Subject », dont le contenu est dynamique, correspond au sujet d’un email que j’ai reçu dans ma Logic App.

tracking proprietes depuis logic app

 

Requêter les données dans Log analytics

Pour rechercher des informations dans la base Log analytics, il faut utiliser le langage Kusto (https://docs.microsoft.com/fr-fr/azure/kusto/query/). C’est un langage de requête qui est assez simple à prendre en main et qui est relativement proche de SQL.

Dans l’exemple ci-dessous je recherche le runID de l’exécution de la Logic App dans lequel j’ai reçu un email dont le Subject était « log ».

requête log analytics

 

Ce qu’il faut savoir sur les traces

Gardez à l’esprit que :

  • au sein d’une action d’une Logic App, l’étape de trace n’intervient qu’à la fin de l’exécution de l’action
  • il existe des limitations quant aux données qu’il est possible de tracer dans une action de Logic App (par exemple, vous aurez accès à l’entrée/sortie de l’action sur laquelle vous tracer mais pas sur les précédentes)
  • si l’étape de log provoque une erreur d’exécution, alors l’action a le statut « en erreur » et probablement, la suite de votre worklow ne s’enchaînera pas comme vous l’aviez imaginé
  • si vous voulez utiliser une colonne en tant que prédicat d’une requête, celle-ci doit absolument exister : c’est-à-dire qu’un processus (par exemple une Logic App) au moins doit avoir tracé l’information à un moment donné