KQL-запросы и управление Azure Data Explorer: логи, телеметрия и time series на больших объёмах данных. Оптимизация запросов и fallback к CLI при таймаутах.
npx -y skills add microsoft/azure-skills --skill azure-kusto --agent claude-codeВыполнение KQL-запросов и управление ресурсами Azure Data Explorer для быстрой масштабируемой аналитики больших данных на основе логов, телеметрии и временных рядов.
Azure Data Explorer (Kusto) — быстрый высокомасштабируемый сервис исследования данных, оптимизированный для логов и телеметрии. Обеспечивает время отклика менее секунды на миллиардах записей с помощью Kusto Query Language (KQL).
Ключевые возможности:
Events
| where Timestamp > ago(1h)
| take 100
Применение: быстрая инспекция данных, получение последних событий.
Events
| summarize count() by EventType, bin(Timestamp, 1h)
| order by count_ desc
Применение: подсчёт событий, анализ распределения, top-N запросы.
Telemetry
| where Timestamp > ago(24h)
| summarize avg(ResponseTime), percentiles(ResponseTime, 50, 95, 99) by bin(Timestamp, 5m)
| render timechart
Применение: мониторинг производительности, анализ трендов, обнаружение аномалий.
Events
| where EventType == "Error"
| join kind=inner (
Logs
| where Severity == "Critical"
) on CorrelationId
| project Timestamp, EventType, LogMessage, Severity
Применение: анализ первопричин, отслеживание коррелированных событий.
Инструмент: kusto_table_schema_get. Применение: понимание модели данных, планирование запросов.
Оптимизация производительности:
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(): агрегации| Инструмент | Назначение |
|---|---|
kusto_cluster_list | Список кластеров Azure Data Explorer в подписке |
kusto_database_list | Список баз данных в конкретном Kusto-кластере |
kusto_query | Выполнение KQL-запросов к базе данных Kusto |
kusto_table_schema_get | Получение схемы конкретной таблицы |
# Список кластеров
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 сек в зависимости от метода инициализации |