Par Samy ABTOUT, Data Engineer
Table des matières
- Problématique
- Solution
- Présentation
- Paramétrage
- Data visualisation
- Aller plus loin : Création d’alerte
Problématique
La gestion des données est aujourd’hui un enjeu majeur pour les entreprises. Nombreuses sont celles qui ont fait le choix de se doter d’un Data Lake afin de stocker leurs données de manière centralisée. En résulte alors une augmentation des flux d’alimentation accompagnés de leur solution de supervision.
Azure Data Factory (ADF) est l’outil principal d’extraction, d’ingestion et de transformation des données dans l’écosystème Microsoft Azure. Il propose également une interface de surveillance depuis l’onglet « Monitoring ». Cependant, celle-ci s’avère confuse et peu adaptée à de la supervision quotidienne, se limitant à lister chronologiquement l’ensemble des traitements exécutés.
Il est donc préférable de tirer parti d’outils de DataViz tel que Power BI, afin de restituer ces données au travers d’interfaces adaptées aux tâches de suivi et d’analyse.
Solution
Présentation
Les flux de traitements de données se décomposent généralement de la façon suivante :
- Un pipeline Azure Data Factory en charge de l’orchestration globale des traitements
- Plusieurs pipelines Azure Data Factory en charge de l’exécution d’activités de traitement
Des logs associés à l’exécution des pipelines et activités de traitements sont automatiquement générés à la volée dans ADF. Comme expliqué dans l’introduction, ces logs, visibles dans l’outil d’orchestration, sont utiles pour les développeurs lors du débogage pendant des phases de tests, mais ne sont pas adaptés pour de la supervision quotidienne.
Les informations exploitables depuis les logs, dans le cadre d’un suivi des traitements, sont multiples :
- Nom des sources de données
- Nom d’objets
- Statut de l’exécution des pipelines et activités
- Durée de traitement
- Messages d’erreurs liés à des activités de traitement
- Nom des fichiers rejetés, le cas échéant
Il est alors nécessaire d’exporter ces logs afin d’en faciliter l’utilisation.
Log Analytics est une solution Azure offrant la possibilité de collecter, d’analyser et de restituer les logs. Elle permet la centralisation des logs générés par des plateformes d’exécution telles qu’Azure Data Factory, et la mise à disposition de ceux-ci à destination d’outils de reporting pour de l’exploitation de données.
Paramétrage
Une configuration est nécessaire dans Azure Data Factory pour exporter les logs générés vers Log Analytics. Elle permet la connexion entre les deux outils et le filtrage des types de logs souhaités.
Pour cela, il faut se rendre dans le portail Azure :
- Aller dans la ressource Azure Data Factory
- Cliquer sur l’onglet Diagnostic settings (Paramètres de diagnostic)
- Cliquer sur Ajouter un paramètre de diagnostic
- La page des paramètres de diagnostic s’affiche :
- Nommer le paramètre de diagnostic
- Sélectionner les catégories de logs désirées
- Définir une destination pour le stockage des logs. Voici les quatre choix possibles :
- Envoyer les logs dans un magasin Azure Monitor Logs: Ceux-ci seront convertis au format journal.
- Définir la souscription et le Workspace Log Analytics
- Définir le type de table de destination :
- Azure diagnostics: tous les logs sont écrits dans une unique table nommée AzureDiagnostics
- Resource specific: chaque catégorie de logs possède une table de stockage distincte (logs de pipeline, d’activité, de déclenchement, etc…). Nous choisirons cette option qui facilite le requêtage des données.
- Envoyer les logs dans un magasin Azure Monitor Logs: Ceux-ci seront convertis au format journal.
-
- Archiver les logs dans un fichier sur un compte de stockage : Cette approche est intéressante à des fins d’audit, d’analyse statique ou de sauvegarde. Ce mode de stockage est moins onéreux que le stockage Log Analytics.
- Définir le compte de stockage de destination
- Les fichiers seront stockés dans un conteneur nommé en fonction de la catégorie de logs généré, préfixé de « insights-logs » (Ex : insights-logs-sandboxpipelineruns). Voici l’arborescence de stockage :
- Définir le compte de stockage de destination
- Archiver les logs dans un fichier sur un compte de stockage : Cette approche est intéressante à des fins d’audit, d’analyse statique ou de sauvegarde. Ce mode de stockage est moins onéreux que le stockage Log Analytics.
-
-
- Définir le temps de rétention des informations stockées dans le compte de stockage
-
-
- Envoyer les logs vers un Event Hub
- Définir l’EventHub de destination
- Envoyer les logs vers un Event Hub
-
- Envoyer les logs vers des solutions partenaires de Microsoft: Une trentaine d’outils d’observabilité partenaires sont disponibles, voici la description de trois d’entre eux :
- DataDog: Plateforme de supervision et d’analytique pour les applications à grande échelle.
- Elastic: Plateforme qui permet de créer des expériences de recherche modernes et d’optimiser la visibilité sur l’intégrité, les performances et la sécurité de votre infrastructure, des applications et des données.
- Grafana: Application Open Source qui permet de visualiser les données de métriques de façon chronologique
- Envoyer les logs vers des solutions partenaires de Microsoft: Une trentaine d’outils d’observabilité partenaires sont disponibles, voici la description de trois d’entre eux :
En ce qui concerne notre besoin de superviser les flux de traitements de données depuis Power BI, les redirections des logs vers Log Analytics ou un compte de stockage sont les solutions les plus adaptées à mettre en place.
La solution Log Analytics est la plus appropriée car elle permet le requêtage des logs via le langage Kusto. C’est un langage performant et facile à prendre en main car il possède une syntaxe proche du SQL, adapté à du requêtage de logs.
Enfin, il sera possible de mettre en place un système d’alertes depuis Log Analytics.
Data visualisation
Les informations liées à l’exécution des pipelines et des activités dans l’outil d’orchestration Azure Data Factory sont désormais redirigées vers Log Analytics et prêtes à être exploitées par Power BI.
Pour accéder aux logs générés, aller sur la ressource émettrice des logs (dans notre cas Azure Data Factory), et cliquer sur l’onglet Logs :
Depuis cette interface, il est possible de requêter le puit de logs via le langage Kusto. Voici un exemple de requête :
Après le développement des jeux de données en Kusto, il est possible d’exporter les requêtes en le langage M vers un fichier texte :
Il nous faut maintenant copier la requête exportée dans Power BI. Pour cela :
- Ouvrir Power BI Desktop et cliquer sur Transformer les données afin d’ouvrir Power Query :
- Ouvrir une requête vide :
- Aller dans l’éditeur avancé :
- Coller le contenu du fichier texte exporté
Le jeu de données est maintenant disponible dans Power Query.
Répéter les étapes 2, 3 et 4 pour chaque jeu de données à importer. Voici un exemple de hiérarchie entre jeux de données qui peut être effectuée :
- Dataset lié aux pipelines d’orchestration
- Dataset lié aux pipelines d’exécution
- Dataset lié aux activités
- Dataset lié aux pipelines d’exécution
Fermer et appliquer les changements sur Power Query. Afin de finaliser la création du modèle de données, il est nécessaire d’établir les liens entre les jeux de données :
Le modèle créé, il ne reste plus qu’à développer les visuels permettant de surveiller de manière efficiente les flux de traitements de données.
Aller plus loin : Création d’alerte
Nous venons de voir comment monitorer les flux de traitements de données. Il est également recommandé de mettre en place une stratégie d’alertes afin d’être immédiatement averti en cas de disfonctionnement dans la chaîne d’alimentation.
En fonction du degré de précision attendu par ces alertes, il est possible de distinguer deux types de notifications :
- Les alertes statiques, qui sont créées depuis la section Alerte de la ressource Azure Log Analytics
- Les alertes personnalisables, qui peuvent être configurées en HTML depuis Azure Data Factory et envoyées à une LogicApp via la restAPI qui se chargera du formatage et de l’envoi de mail
Dans un prochain article, nous explorerons plus précisément la création, la configuration et l’exploitation des notifications avec les systèmes d’alertes mentionnés précédemment afin d’optimiser la surveillance des flux de traitements de données.