azure-kustoKQL-запросы к Azure Data Explorer
KQL-запросы и управление Azure Data Explorer: логи, телеметрия и time series на больших объёмах данных. Оптимизация запросов и fallback к CLI при таймаутах.
Установка
npx -y skills add microsoft/azure-skills --skill azure-kusto --agent claude-codeAzure Data Explorer (Kusto) — запросы и аналитика
Выполнение KQL-запросов и управление ресурсами Azure Data Explorer для быстрой масштабируемой аналитики больших данных на основе логов, телеметрии и временных рядов.
Когда использовать этот скилл
- «Запроси мою Kusto-базу на [паттерн данных]»
- «Покажи события за последний час из Azure Data Explorer»
- «Анализируй логи в моём ADX-кластере»
- «Выполни KQL-запрос к [базе данных]»
- «Какие таблицы есть в моей Kusto-базе?»
- «Покажи схему таблицы [table]»
- Запросы IoT-данных, SIEM-аналитика, мониторинг производительности
Обзор
Azure Data Explorer (Kusto) — быстрый высокомасштабируемый сервис исследования данных, оптимизированный для логов и телеметрии. Обеспечивает время отклика менее секунды на миллиардах записей с помощью Kusto Query Language (KQL).
Ключевые возможности:
- Выполнение запросов: KQL-запросы к массивным датасетам
- Исследование схемы: обнаружение таблиц, столбцов, типов данных
- Управление ресурсами: список кластеров и баз данных
- Аналитика: агрегации, временные ряды, обнаружение аномалий, машинное обучение
Паттерны запросов
Паттерн 1: Базовое получение данных
Events
| where Timestamp > ago(1h)
| take 100
Применение: быстрая инспекция данных, получение последних событий.
Паттерн 2: Агрегационный анализ
Events
| summarize count() by EventType, bin(Timestamp, 1h)
| order by count_ desc
Применение: подсчёт событий, анализ распределения, top-N запросы.
Паттерн 3: Аналитика временных рядов
Telemetry
| where Timestamp > ago(24h)
| summarize avg(ResponseTime), percentiles(ResponseTime, 50, 95, 99) by bin(Timestamp, 5m)
| render timechart
Применение: мониторинг производительности, анализ трендов, обнаружение аномалий.
Паттерн 4: JOIN и корреляция
Events
| where EventType == "Error"
| join kind=inner (
Logs
| where Severity == "Critical"
) on CorrelationId
| project Timestamp, EventType, LogMessage, Severity
Применение: анализ первопричин, отслеживание коррелированных событий.
Паттерн 5: Исследование схемы
Инструмент: kusto_table_schema_get. Применение: понимание модели данных, планирование запросов.
Лучшие практики KQL
Оптимизация производительности:
- Фильтруйте рано: используйте
whereдо join и агрегаций - Ограничивайте размер результатов: используйте
takeилиlimit - Временные фильтры: всегда фильтруйте по временному диапазону
- Индексированные столбцы: фильтруйте по ним в первую очередь
Паттерны запросов:
- Используйте
summarizeдля агрегаций - Используйте
bin()для разбивки по времени в временных рядах - Используйте
projectдля выбора только нужных столбцов - Используйте
extendдля добавления вычисляемых полей
Полезные функции:
ago(timespan): относительное время (ago(1h),ago(7d))between(start .. end): фильтрация диапазонаstartswith(),contains(),matches regex: фильтрация строкparse,extract: извлечение значений из строкpercentiles(),avg(),sum(),max(),min(): агрегации
MCP-инструменты
| Инструмент | Назначение |
|---|---|
kusto_cluster_list | Список кластеров Azure Data Explorer в подписке |
kusto_database_list | Список баз данных в конкретном Kusto-кластере |
kusto_query | Выполнение KQL-запросов к базе данных Kusto |
kusto_table_schema_get | Получение схемы конкретной таблицы |
Запасной вариант — Azure CLI
# Список кластеров
az kusto cluster list --resource-group <rg-name>
# Список баз данных
az kusto database list --cluster-name <cluster> --resource-group <rg-name>
# KQL-запрос через REST API
az rest --method post \
--url "https://<cluster>.<region>.kusto.windows.net/v1/rest/query" \
--body "{ \"db\": \"<database>\", \"csl\": \"<kql-query>\" }"
Распространённые проблемы
| Проблема | Причина / Решение |
|---|---|
| Access Denied | Проверьте разрешения базы данных (минимум роль Viewer для запросов) |
| Query Timeout | Оптимизируйте с временными фильтрами, уменьшите результирующий набор |
| Syntax Error | Проверьте KQL-синтаксис: пропущенные pipe, некорректные операторы |
| Пустые результаты | Проверьте временные фильтры (слишком ограничены), имя таблицы |
| Cluster Not Found | Формат имени кластера без суффикса «.kusto.windows.net» |
| Задержка инициализации | Потоковые данные могут иметь задержку 1–30 сек в зависимости от метода инициализации |
Сценарии использования
- Анализ логов: логи приложений, системные логи, аудит-логи
- IoT-аналитика: данные датчиков, телеметрия устройств, мониторинг в реальном времени
- Аналитика безопасности: SIEM-данные, обнаружение угроз, корреляция событий
- APM: метрики производительности, поведение пользователей, отслеживание ошибок
- Бизнес-аналитика: анализ кликстримов, операционные KPI
