azure-kusto

Interrogez et analysez des données dans Azure Data Explorer (Kusto/ADX) en utilisant KQL pour l'analyse de logs, la télémétrie et l'analyse de séries temporelles. QUAND : requêtes KQL, requêtes de base de données Kusto, Azure Data Explorer, clusters ADX, analyse de logs, données de séries temporelles, télémétrie IoT, détection d'anomalies.

npx skills add https://github.com/microsoft/skills --skill azure-kusto

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

  1. Découvrir les ressources : Lister les clusters et bases de données disponibles dans l'abonnement
  2. Explorer le schéma : Récupérer les structures de table pour comprendre le modèle de données
  3. Interroger les données : Exécuter des requêtes KQL pour l'analyse, filtrage et agrégation
  4. 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 where avant les jointures et agrégations
  • Limitez la taille des résultats : Utilisez take ou limit pour 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 summarize pour les agrégations au lieu de count() seul
  • Utilisez bin() pour le regroupement temporel dans les séries temporelles
  • Utilisez project pour sélectionner seulement les colonnes nécessaires
  • Utilisez extend pour ajouter des champs calculés

🟡 Fonctions courantes :

  • ago(timespan) : Temps relatif (ago(1h), ago(7d))
  • between(start .. end) : Filtrage de plage
  • startswith(), contains(), matches regex : Filtrage de chaîne
  • parse, extract : Extraire des valeurs de chaînes
  • percentiles(), avg(), sum(), max(), min() : Agrégations

Bonnes pratiques

  • Incluez toujours des filtres de plage temporelle pour optimiser les performances de requête
  • Utilisez take ou limit pour les requêtes exploratoires afin d'éviter de grands jeux de résultats
  • Exploitez summarize pour 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 Azure
  • cluster : Nom du cluster Kusto (ex. « mycluster »)
  • database : Nom de la base de données
  • query : 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

Skills similaires