Azure Data Explorer (Kusto) – Requêtes et analytique
Exécutez des requêtes KQL et gérez les ressources Azure Data Explorer pour une analytique big data rapide et scalable sur les données de logs, télémétrie et séries temporelles.
Déclencheurs d'activation du skill
Utilisez ce skill immédiatement quand l'utilisateur demande :
- « Interroge ma base de données Kusto pour [motif de données] »
- « Affiche-moi les événements de la dernière heure depuis Azure Data Explorer »
- « Analyse les logs de mon cluster ADX »
- « Exécute une requête KQL sur [base de données] »
- « Quelles tables se trouvent dans ma base de données Kusto ? »
- « Affiche-moi le schéma pour [table] »
- « Liste mes clusters Azure Data Explorer »
- « Agrège les données de télémétrie par [dimension] »
- « Crée un graphique de série temporelle à partir de mes logs »
Indicateurs clés :
- Mentions de « Kusto », « Azure Data Explorer », « ADX » ou « KQL »
- Demandes d'analytique de logs ou de télémétrie
- Exploration de données de séries temporelles
- Requêtes d'analytique de données IoT
- Tâches SIEM ou analytique de sécurité
- Demandes d'agrégation de données sur de grands jeux de données
- Requêtes de monitoring de performance ou APM
Aperçu
Ce skill permet d'interroger et de gérer Azure Data Explorer (Kusto), un service d'exploration de données rapide et hautement scalable optimisé pour les données de logs et télémétrie. Azure Data Explorer offre des performances de requête inférieur à la seconde sur des milliards d'enregistrements grâce au Kusto Query Language (KQL).
Capacités clés :
- Exécution de requêtes : Exécutez des requêtes KQL sur des jeux de données massifs
- Exploration de schéma : Découvrez les tables, colonnes et types de données
- Gestion des ressources : Listez les clusters et les bases de données
- Analytique : Agrégations, séries temporelles, détection d'anomalies, machine learning
Flux de travail principal
- Découvrir les ressources : Lister les clusters et bases de données disponibles dans l'abonnement
- Explorer le schéma : Récupérer les structures de table pour comprendre le modèle de données
- Interroger les données : Exécuter des requêtes KQL pour l'analyse, filtrage et agrégation
- Analyser les résultats : Traiter la sortie de requête pour générer des insights et rapports
Motifs de requête
Motif 1 : Récupération basique de données
Récupérez les enregistrements récents d'une table avec un filtrage simple.
Exemple KQL :
Events
| where Timestamp > ago(1h)
| take 100
À utiliser pour : Inspection rapide de données, récupération d'événements récents
Motif 2 : Analyse d'agrégation
Résumez les données par dimensions pour générer des insights et rapports.
Exemple KQL :
Events
| summarize count() by EventType, bin(Timestamp, 1h)
| order by count_ desc
À utiliser pour : Comptage d'événements, analyse de distribution, requêtes top-N
Motif 3 : Analytique de séries temporelles
Analysez les données sur des fenêtres temporelles pour détecter les tendances et motifs.
Exemple KQL :
Telemetry
| where Timestamp > ago(24h)
| summarize avg(ResponseTime), percentiles(ResponseTime, 50, 95, 99) by bin(Timestamp, 5m)
| render timechart
À utiliser pour : Monitoring de performance, analyse de tendances, détection d'anomalies
Motif 4 : Jointure et corrélation
Combinez plusieurs tables pour une analyse cross-dataset.
Exemple KQL :
Events
| where EventType == "Error"
| join kind=inner (
Logs
| where Severity == "Critical"
) on CorrelationId
| project Timestamp, EventType, LogMessage, Severity
À utiliser pour : Analyse de cause racine, traçage d'événements corrélés
Motif 5 : Découverte de schéma
Explorez la structure de table avant d'interroger.
Outils : kusto_table_schema_get
À utiliser pour : Comprendre le modèle de données, planifier les requêtes
Champs de données clés
Lors de l'exécution de requêtes, motifs de champs courants :
- Timestamp : Heure de l'événement (datetime) - utilisez
ago(),between(),bin()pour le filtrage temporel - EventType/Category : Champ de classification pour le regroupement
- CorrelationId/SessionId : Pour tracer les événements connexes
- Severity/Level : Pour filtrer par importance
- Dimensions : Propriétés personnalisées pour le regroupement et le filtrage
Format des résultats
Les résultats de requête incluent :
- Colonnes : Noms de champs et types de données
- Lignes : Enregistrements de données correspondant à la requête
- Statistiques : Nombre de lignes, temps d'exécution, utilisation des ressources
- Visualisation : Indices de rendu de graphiques (timechart, barchart, etc.)
Bonnes pratiques KQL
🟢 Optimisées pour la performance :
- Filtrez tôt : Utilisez
whereavant les jointures et agrégations - Limitez la taille des résultats : Utilisez
takeoulimitpour réduire le transfert de données - Filtres temporels : Toujours filtrer par plage temporelle pour les données de séries temporelles
- Colonnes indexées : Filtrez d'abord sur les colonnes indexées
🔵 Motifs de requête :
- Utilisez
summarizepour les agrégations au lieu decount()seul - Utilisez
bin()pour le regroupement temporel dans les séries temporelles - Utilisez
projectpour sélectionner seulement les colonnes nécessaires - Utilisez
extendpour ajouter des champs calculés
🟡 Fonctions courantes :
ago(timespan): Temps relatif (ago(1h), ago(7d))between(start .. end): Filtrage de plagestartswith(),contains(),matches regex: Filtrage de chaîneparse,extract: Extraire des valeurs de chaînespercentiles(),avg(),sum(),max(),min(): Agrégations
Bonnes pratiques
- Incluez toujours des filtres de plage temporelle pour optimiser les performances de requête
- Utilisez
takeoulimitpour les requêtes exploratoires afin d'éviter de grands jeux de résultats - Exploitez
summarizepour les agrégations au lieu du traitement côté client - Stockez les requêtes fréquemment utilisées comme fonctions dans la base de données
- Utilisez des vues matérialisées pour les agrégations répétées
- Surveillez la performance des requêtes et la consommation de ressources
- Appliquez des politiques de rétention des données pour gérer les coûts de stockage
- Utilisez l'ingestion en streaming pour l'analytique temps réel (< 1 seconde de latence)
- Intégrez-vous avec Azure Monitor pour des insights opérationnels
Outils MCP utilisés
| Outil | Objectif |
|---|---|
kusto_cluster_list |
Lister tous les clusters Azure Data Explorer d'un abonnement |
kusto_database_list |
Lister toutes les bases de données d'un cluster Kusto spécifique |
kusto_query |
Exécuter des requêtes KQL sur une base de données Kusto |
kusto_table_schema_get |
Récupérer les informations de schéma pour une table spécifique |
Paramètres obligatoires :
subscription: ID ou nom d'affichage de l'abonnement Azurecluster: Nom du cluster Kusto (ex. « mycluster »)database: Nom de la base de donnéesquery: Chaîne de requête KQL (pour les opérations de requête)table: Nom de la table (pour les opérations de schéma)
Paramètres optionnels :
resource-group: Nom du groupe de ressources (pour les opérations de listing)tenant: ID de tenant Azure AD
Stratégie de secours : Commandes Azure CLI
Si les outils MCP Kusto échouent, dépassent le timeout ou ne sont pas disponibles, utilisez les commandes Azure CLI comme secours.
Référence des commandes CLI
| Opération | Commande Azure CLI |
|---|---|
| Lister les clusters | az kusto cluster list --resource-group <rg-name> |
| Lister les bases de données | az kusto database list --cluster-name <cluster> --resource-group <rg-name> |
| Afficher le cluster | az kusto cluster show --name <cluster> --resource-group <rg-name> |
| Afficher la base de données | az kusto database show --cluster-name <cluster> --database-name <db> --resource-group <rg-name> |
Requête KQL via Azure CLI
Pour les requêtes, utilisez l'API REST Kusto ou l'URL du cluster directement :
az rest --method post \
--url "https://<cluster>.<region>.kusto.windows.net/v1/rest/query" \
--body "{ \"db\": \"<database>\", \"csl\": \"<kql-query>\" }"
Quand utiliser le secours
Basculez vers Azure CLI quand :
- L'outil MCP retourne une erreur de timeout (requêtes > 60 secondes)
- L'outil MCP retourne « service unavailable » ou des erreurs de connexion
- Échecs d'authentification avec les outils MCP
- Réponse vide alors que la base de données contient des données
Problèmes courants
- Accès refusé : Vérifiez les permissions de base de données (rôle Viewer minimum pour les requêtes)
- Timeout de requête : Optimisez la requête avec des filtres temporels, réduisez le jeu de résultats ou augmentez le timeout
- Erreur de syntaxe : Validez la syntaxe KQL - problèmes courants : pipes manquants, opérateurs incorrects
- Résultats vides : Vérifiez les filtres de plage temporelle (peut être trop restrictif), vérifiez le nom de la table
- Cluster non trouvé : Vérifiez le format du nom du cluster (excluez le suffixe « .kusto.windows.net »)
- Utilisation CPU élevée : Requête trop large - ajoutez des filtres, réduisez la plage temporelle, limitez les agrégations
- Retard d'ingestion : Les données en streaming peuvent avoir un délai de 1-30 secondes selon la méthode d'ingestion
Cas d'usage
- Analytique de logs : Logs d'application, logs système, logs d'audit
- Analytique IoT : Données de capteurs, télémétrie d'appareils, monitoring temps réel
- Analytique de sécurité : Données SIEM, détection de menaces, corrélation d'événements de sécurité
- APM : Métriques de performance d'application, comportement utilisateur, suivi des erreurs
- Business Intelligence : Analyse de flux de clics, analytique utilisateur, KPIs opérationnels