Основы Log Analytics и KQL
Загружайте диагностические журналы в рабочую область Log Analytics и пишите запросы на языке запросов Kusto для фильтрации, агрегирования и визуализации эксплуатационных данных.
«Основы Log Analytics и KQL» — бесплатный урок Azure Fundamentals на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Azure Fundamentals, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Azure Fundamentals содержит 4 уроков всего.
Что такое рабочая область Log Analytics
Рабочая область Log Analytics — это централизованное хранилище данных журналов и телеметрии в Azure Monitor. Когда Вы настраиваете параметры диагностики для ресурса Azure, структурированные журналы и метрики поступают в рабочую область. Затем Вы можете запрашивать эти данные с помощью языка запросов Kusto (KQL). Рабочая область имеет собственную политику хранения данных (по умолчанию 30 дней, максимум 730 дней) и средства управления доступом.
# Create a Log Analytics workspace
az monitor log-analytics workspace create \
--resource-group myRG \
--workspace-name myWorkspace \
--location eastus \
--retention-time 90Отправка журналов диагностики в рабочую область
Каждый ресурс Azure может создавать журналы диагностики — подробные записи таких операций, как вызовы API, события аутентификации и выполнение запросов. Вы включаете их через параметры диагностики ресурса, указывая в качестве назначения рабочую область Log Analytics. Распространённые категории журналов включают AuditEvent для Key Vault, AppServiceHTTPLogs для App Service и NetworkSecurityGroupFlowEvent для NSG.
# Enable diagnostic settings to send Key Vault logs to Log Analytics
az monitor diagnostic-settings create \
--name 'KVLogs' \
--resource /subscriptions/<sub>/resourceGroups/myRG/providers/Microsoft.KeyVault/vaults/myKV \
--workspace myWorkspace \
--logs '[{"category":"AuditEvent","enabled":true}]'Введение в синтаксис KQL
Язык запросов Kusto (KQL) — это язык запросов только для чтения, предназначенный для анализа данных журналов. Запрос KQL читается слева направо как конвейер: сначала указывается имя таблицы, затем данные передаются через операторы с помощью символа (|). Распространённые операторы включают where для фильтрации, project для выбора столбцов, summarize для агрегации и order by для сортировки. KQL чувствителен к регистру имён столбцов, но не ключевых слов.
// Basic KQL query structure
AzureActivity
| where TimeGenerated > ago(24h)
| where OperationNameValue == 'MICROSOFT.COMPUTE/VIRTUALMACHINES/DELETE'
| project TimeGenerated, Caller, ResourceGroup, Resource
| order by TimeGenerated descФильтрация с помощью оператора Where
Оператор where фильтрует строки с помощью логических выражений. Вы можете объединять условия с помощью and, or и not. Оператор has выполняет поиск слов в строках без учёта регистра с соблюдением границ слов, а contains выполняет поиск подстроки. Оператор in проверяет принадлежность к списку. Используйте ago(), чтобы задавать относительные диапазоны времени, например ago(1h) или ago(7d).
// Filter for failed HTTP requests in the last hour
AppRequests
| where TimeGenerated > ago(1h)
| where Success == false
| where ResultCode in (500, 502, 503)
| project TimeGenerated, Name, ResultCode, DurationMs
| order by DurationMs descАгрегация данных с помощью Summarize
Оператор summarize вычисляет агрегаты по строкам. Распространённые функции агрегации включают count(), sum(), avg(), max(), min() и dcount() для подсчёта уникальных значений. Вы можете группировать данные по одному или нескольким столбцам с помощью предложения by. Функция bin() округляет временные метки до интервалов для агрегации временных рядов.
// Count failed requests per hour per endpoint
AppRequests
| where TimeGenerated > ago(24h)
| where Success == false
| summarize FailureCount = count() by bin(TimeGenerated, 1h), Name
| order by TimeGenerated desc, FailureCount descОбъединение таблиц в KQL
KQL поддерживает join для сопоставления данных из нескольких таблиц. По умолчанию используется тип объединения innerunique, но можно указать inner, leftouter, rightouter или fullouter. Распространённый шаблон — объединение AzureActivity и AzureMetrics для сопоставления административных изменений со снижением производительности. Оператор lookup — более лёгкая альтернатива для дополнения строк данными из небольшой справочной таблицы.
// Correlate VM restarts with CPU spike events
AzureActivity
| where OperationNameValue has 'restart'
| join kind=leftouter (
AzureMetrics
| where MetricName == 'Percentage CPU'
| where Average > 90
) on ResourceId
| project TimeGenerated, Resource, AverageВизуализация результатов KQL
После написания запроса на портале Log Analytics Вы можете представить результаты в виде временной диаграммы, столбчатой диаграммы, круговой диаграммы или таблицы с помощью оператора render. Вы также можете закрепить результат любого запроса на панели мониторинга Azure или сохранить его как книгу. Команда render timechart преобразует запрос summarize временного ряда в интерактивную линейную диаграмму для анализа тенденций.
// Render a time chart of request counts per 5-minute interval
AppRequests
| where TimeGenerated > ago(4h)
| summarize RequestCount = count() by bin(TimeGenerated, 5m)
| render timechartОповещения о поиске в журналах
Оповещения о поиске в журналах выполняют запрос KQL по расписанию и срабатывают, когда результат соответствует условию, например когда количество результатов больше нуля или числовой столбец превышает порог. Они гибче оповещений по метрикам, поскольку позволяют запрашивать любые данные журналов из нескольких таблиц. Частоту проверки и временное окно можно настраивать независимо — например, выполнять проверку каждые 5 минут за последние 15 минут.
// Example log search alert condition: more than 5 exceptions in 15 min
AppExceptions
| where TimeGenerated > ago(15m)
| summarize ExceptionCount = count()
// Alert when ExceptionCount > 5Справочник распространённых таблиц журналов
Azure Monitor хранит журналы в хорошо известных таблицах. AzureActivity содержит записи об операциях на уровне подписки. SecurityEvent содержит журналы безопасности Windows с виртуальных машин, на которых установлен агент Log Analytics. Heartbeat показывает подключение агента (одна строка в минуту для каждой подключённой виртуальной машины). AppRequests, AppExceptions и AppDependencies поступают из Application Insights. Знание имён этих таблиц необходимо для написания эффективных операционных запросов.
Хранение данных в рабочей области и затраты
Цены Log Analytics состоят из двух компонентов: приём данных (за каждый принятый GB) и хранение данных (первые 30 дней бесплатны, после этого взимается плата за каждый GB в месяц сверх периода по умолчанию). Вы можете сократить затраты, фильтруя зашумленные категории журналов до их приёма, используя Basic Logs для больших объёмов малозначимых данных по сниженной цене и архивируя старые данные в Azure Data Explorer или холодное хранилище для длительного хранения в целях соблюдения требований.
Модели управления доступом к рабочей области
Рабочие области Log Analytics поддерживают две модели управления доступом. В режиме контекста рабочей области пользователь с доступом на чтение к рабочей области может выполнять запросы ко всем таблицам. В режиме контекста ресурса пользователь может запрашивать только журналы, созданные ресурсами, которые ему разрешено читать с помощью RBAC, — даже без явного доступа к рабочей области. Режим контекста ресурса рекомендуется для крупных организаций, где разные команды отвечают за разные ресурсы.
Быстрая проверка
Проверьте своё понимание концепций Microsoft Azure Fundamentals (AZ-900) из этого урока.
Итоги урока
В этом уроке Вы узнали, что рабочие области Log Analytics централизуют данные журналов диагностики из ресурсов Azure, операторы KQL, такие как where, summarize и render, позволяют фильтровать, агрегировать и визуализировать журналы, а оповещения о поиске в журналах запускают автоматические действия, когда результат запроса KQL соответствует заданному условию. Далее мы рассмотрим Application Insights для телеметрии на уровне приложения.
Часто задаваемые вопросы
Урок «Основы Log Analytics и KQL» бесплатный?
Да — полный текст урока «Основы Log Analytics и KQL» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Azure Fundamentals, подпишись на CoddyKit PRO. Курс Azure Fundamentals содержит 4 уроков всего.
Чему я научусь в уроке «Основы Log Analytics и KQL»?
Загружайте диагностические журналы в рабочую область Log Analytics и пишите запросы на языке запросов Kusto для фильтрации, агрегирования и визуализации эксплуатационных данных. Ты практикуешь Azure Fundamentals с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Azure Fundamentals?
Предыдущий опыт не требуется. Azure Fundamentals на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Основы Log Analytics и KQL»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Azure Fundamentals?
Да. Каждый урок Azure Fundamentals включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Метрики и оповещения Azure Monitor
- Основы Log Analytics и KQL
- Application Insights
- Панели мониторинга и книги Azure