Мониторинг в реальном времени, метрики и журналы доступа для Azure CDN

Azure CDN от Майкрософт позволяет вести мониторинг ресурсов приведенными ниже способами для устранения неполадок, отслеживания и отладки проблем.

  • Необработанные журналы содержат подробные сведения о каждом запросе, получаемом CDN. Необработанные журналы отличаются от журналов действий. Журналы действий позволяют анализировать операции, выполненные с ресурсами Azure.
  • Доступны четыре ключевые метрики в CDN, включая коэффициент попаданий байт в кэш, число запросов, размер ответа и общую задержку. Кроме того, можно использовать различные измерения для разбиения метрик.
  • С помощью функции оповещений клиенты могут настраивать оповещения для ключевых метрик.
  • Существуют дополнительные метрики, которые позволяют клиентам использовать Azure Log Analytics для включения дополнительных значимых метрик. Мы также предоставляем примеры запросов для ряда других метрик в Azure Log Analytics.

Важно!

Компонент необработанных журналов HTTP доступен только в Azure CDN корпорации Майкрософт.

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.

Вход в Azure

Войдите на портал Azure по адресу https://portal.azure.com.

Настройка на портале Azure

Чтобы настроить необработанные журналы для Azure CDN из профиля Майкрософт, выполните следующие действия:

  1. В меню портала Azure выберите элементы Все ресурсы>><профиль_CDN>.

  2. В разделе Мониторинг выберите элемент Параметры диагностики.

  3. Щелкните команду Добавить параметр диагностики.

    Добавление параметра диагностики для профиля CDN.

    Важно!

    Необработанные журналы доступны только на уровне профиля. Агрегированные журналы кодов состояний HTTP доступны на уровне конечной точки.

  4. В разделе Параметры диагностики введите значение в поле Имя параметра диагностики.

  5. Выберите вариант AzureCdnAccessLog и задайте срок хранения в днях.

  6. Выберите элемент Сведения о назначении. Доступны следующие варианты назначения:

    • Отправить в Log Analytics.
      • Выберите подписку и рабочую область Log Analytics.
    • Архивировать в учетной записи хранения.
      • Выберите подписку и учетную запись хранения.
    • Передать в концентратор событий.
      • Выберите подписку, пространство имен концентратора событий, имя концентратора событий (необязательно) и имя политики концентратора событий.

    Настройка места назначения для параметров журнала.

  7. Щелкните Сохранить.

Настройка с помощью Azure PowerShell

Используйте команду Set-AzDiagnosticSetting, чтобы настроить параметр диагностики для необработанных журналов.

Период хранения определяется в команде с помощью параметра -RetentionInDays.

Примечание

Для взаимодействия с Azure рекомендуется использовать модуль PowerShell Azure Az. Чтобы приступить к работе, изучите статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

Включение журналов диагностики в учетной записи хранения

  1. Войдите в Azure PowerShell.

    Connect-AzAccount 
    
  2. Чтобы включить журналы диагностики в учетной записи хранения, введите следующие команды: заменив переменные собственными значениями:

    ## Variables for the commands ##
    $rsg = <your-resource-group-name>
    $cdnprofile = <your-cdn-profile-name>
    $cdnendpoint = <your-cdn-endpoint-name>
    $storageacct = <your-storage-account-name>
    $diagname = <your-diagnostic-setting-name>
    $days = '30'
    
    $cdn = Get-AzCdnProfile -ResourceGroupName $rsg -ProfileName $cdnprofile
    
    $storage = Get-AzStorageAccount -ResourceGroupName $rsg -Name $storageacct
    
    Set-AzDiagnosticSetting -Name $diagname -ResourceId $cdn.id -StorageAccountId $storage.id -Enabled $true -Category AzureCdnAccessLog -RetentionEnabled 1 -RetentionInDays $days
    

Включение журналов диагностики для рабочей области Log Analytics

  1. Войдите в Azure PowerShell.

    Connect-AzAccount 
    
  2. Чтобы включить журналы диагностики для рабочей области Log Analytics, введите следующие команды. Замените переменные собственными значениями:

    ## Variables for the commands ##
    $rsg = <your-resource-group-name>
    $cdnprofile = <your-cdn-profile-name>
    $cdnendpoint = <your-cdn-endpoint-name>
    $workspacename = <your-log-analytics-workspace-name>
    $diagname = <your-diagnostic-setting-name>
    $days = '30'
    
    $cdn = Get-AzCdnEndpoint -ResourceGroupName $rsg -ProfileName $cdnprofile -EndpointName $cdnendpoint
    
    $workspace = Get-AzOperationalInsightsWorkspace -ResourceGroupName $rsg -Name $workspacename
    
    Set-AzDiagnosticSetting -Name $diagname -ResourceId $cdn.id -WorkspaceId $workspace.ResourceId -Enabled $true -Category AzureCdnAccessLog -RetentionEnabled 1 -RetentionInDays $days
    

Включение журналов диагностики для пространства имен Центра событий

  1. Войдите в Azure PowerShell.

    Connect-AzAccount 
    
  2. Чтобы включить журналы диагностики для пространства имен Центра событий, введите следующие команды. Замените переменные собственными значениями:

    ## Variables for the commands ##
    $rsg = <your-resource-group-name>
    $cdnprofile = <your-cdn-profile-name>
    $cdnendpoint = <your-cdn-endpoint-name>
    $evthubnamespace = <your-event-hub-namespace-name>
    $diagname = <your-diagnostic-setting-name>
    
    $cdn = Get-AzCdnEndpoint -ResourceGroupName $rsg -ProfileName $cdnprofile -EndpointName $cdnendpoint
    
    $eventhub = Get-AzEventHubNamespace -ResourceGroupName $rsg -Name $eventhubname
    
    Set-AzDiagnosticSetting -Name $diagname -ResourceId $cdn.id -EventHubName $eventhub.id -Enabled $true -Category AzureCdnAccessLog -RetentionEnabled 1 -RetentionInDays $days
    

Свойства необработанных журналов

Сейчас Azure CDN из службы Майкрософт предоставляет необработанные журналы. Необработанные журналы содержат сведения о каждом запросе к API со следующей схемой:

Свойство Описание
BackendHostname Если запрос пересылается в серверную часть, это поле представляет имя узла серверной части. Это поле будет пустым, если запрос перенаправляется или пересылается в региональный кэш (если для правила маршрутизации включено кэширование).
CacheStatus В сценариях кэширования в этом поле определяются попадание или промахи кэша в точке POP
ClientIp IP-адрес отправившего запрос клиента. Если в запросе был указан заголовок X-Forwarded-For, то IP-адрес клиента выбирается из него.
ClientPort IP-порт клиента, отправившего запрос.
HttpMethod Метод HTTP, используемый для запроса.
HttpStatusCode Код состояния HTTP, полученный от прокси-сервера. Если для запроса к источнику истекло время ожидания, для HttpStatusCode будет задано значение 0.
HttpStatusDetails Итоговое состояние запроса. Пояснения к этому строковому значению есть в ссылочной таблице "Состояние".
HttpVersion Тип запроса или подключения.
POP Короткое имя пограничного сервера, который стал местом назначения запроса.
RequestBytes Размер сообщения с HTTP-запросом в байтах, включая заголовки и текст запроса.
RequestUri URI полученного запроса.
ResponseBytes Количество байтов, отправленных внутренним сервером в качестве ответа.
RoutingRuleName Имя правила маршрутизации, которому соответствует запрос.
RulesEngineMatchNames Имена правил, которым соответствует запрос.
SecurityProtocol Версия протокола TLS/SSL, которая использовалась в запросе. Содержит значение NULL, если шифрование не использовалось.
SentToOriginShield
(устарело)* См. примечания об устаревании в следующем разделе.
Если установлено значение true, значит, ответ на запрос был получен из кэша защиты источника, а не из граничной точки присутствия. Защитой источника называется родительский кэш, который предназначен для повышения коэффициента попаданий в кэш.
isReceivedFromClient Значение "True" означает, что запрос поступил от клиента. Значение "False" означает, что запрос не поступил на пограничный сервер (дочернюю точку POP), и ответ получен из системы безопасности источника (родительской точки POP).
TimeTaken Время в секундах, прошедшее с поступления первого байта запроса в Front Door, до отправки последнего байта ответа.
TrackingReference Это уникальная эталонная строка, которая идентифицирует обслуженный Front Door запрос. Она же отправляется клиенту в заголовке X-Azure-Ref. Эта строка нужна для поиска в журналах доступа сведений о конкретном запросе.
UserAgent Тип браузера, используемый клиентом.
ErrorInfo Это поле содержит сведения о конкретном типе ошибки для сужения области устранения неполадок.
Возможные значения:
NoError — указывает,что ошибки не найдены.
CertificateError — общая ошибка сертификата SSL.
CertificateNameCheckFailed — имя узла в SSL-сертификате недействительно или не совпадает.
ClientDisconnected — сбой запроса из-за проблем с сетевым подключением клиента.
UnspecifiedClientError — общая ошибка на стороне клиента.
InvalidRequest — недопустимый запрос. Причиной может быть неправильно составленный заголовок, тело запроса или URL-адрес.
DNSFailure — сбой DNS.
DNSNameNotResolved — не удалось разрешить имя или адрес сервера.
OriginConnectionAborted — подключение к источнику было внезапно остановлено.
OriginConnectionAborted — общая ошибка подключения к источнику.
OriginConnectionRefused — не удалось установить подключение к источнику.
OriginError — общая ошибка на стороне источника.
OriginError — источник вернул недопустимый или нераспознанный ответ.
OriginTimeout — истек срок ожидания ответа от источника.
ResponseHeaderTooBig — источник вернул слишком длинный заголовок ответа.
RestrictedIP — запрос был заблокирован по причине ограничения IP-адреса.
SSLHandshakeError — не удалось установить подключение к источнику по причине сбоя рукопожатия SSL.
UnspecifiedError — произошла ошибка, которая не включена в эту таблицу.
TimeToFirstByte Время в миллисекундах, прошедшее с момента получения запроса сетью Microsoft CDN до момента отправки первого байта клиенту. Время измеряется только на стороне Майкрософт. Данные на стороне клиента не измеряются.

Примечание

Журналы будут доступны для запросов в профиле Log Analytics. Пример запроса будет иметь следующий вид: AzureDiagnostics | where Category == "AzureCdnAccessLog"

Свойство "Отправлено на защиту источника" больше не поддерживается

Свойство необработанного журнала isSentToOriginShield больше не поддерживается и заменено новым полем isReceivedFromClient. Используйте новое поле, если вы уже используете нерекомендуемое.

Необработанные журналы включают в себя журналы, созданные на пограничном сервере CDN (дочерней точке POPOP) и в системе безопасности сервера-источника. Система безопасности сервера-источника ссылается на родительские узлы, которые стратегически расположены по всему миру. Эти узлы обмениваются данными с серверами-источниками и снижают нагрузку на эти серверы.

Для каждого запроса, который перемещается на защиту источника, существуют две записи журнала.

  • Одна для граничных узлов
  • Одна для защиты источника.

Чтобы отличить, пришел ли трафик или ответ через граничный узел или защиту источника, можно использовать поле isReceivedFromClient и получить таким образом верные данные.

Если значение false, то это означает, что запрос ответил от точки защиты источника к граничным узлам. Этот подход эффективен для сравнения необработанных журналов с данными о выставлении счетов. Плата не взимается за исходящий трафик с защиты источника на граничные узлы. Плата взимается за исходящий трафик от граничных узлов к клиентам.

Пример запроса Kusto для исключения журналов, созданных на защите источника в Log Analytics.

AzureDiagnostics 
| where OperationName == "Microsoft.Cdn/Profiles/AccessLog/Write" and Category == "AzureCdnAccessLog"  
| where isReceivedFromClient == true

Важно!

Функциональность необработанных журналов HTTP автоматически становится доступной для всех профилей, созданных или обновленных после 25 февраля 2020 года. Для ранее созданных профилей CDN следует обновить конечную точку CDN после настройки ведения журнала. Например, можно открыть раздел в географической фильтрации для конечных точек CDN и заблокировать любую страну или регион, которая не важна для вашей работы, а затем нажать кнопку "Сохранить".

Метрики

Azure CDN от Майкрософт интегрирована в Azure Monitor и публикует четыре метрики CDN для помощи при отслеживании, устранении неполадок и отладке проблем.

Метрики отображаются на диаграммах и доступны через PowerShell, CLI и API. Метрики CDN являются бесплатными.

Azure CDN от Майкрософт делает измерения и отправляет метрики с интервалом в 60 секунд. Для отображения метрик на портале может потребоваться до 3 минут.

Дополнительные сведения см. в статье Обзор метрик в Microsoft Azure.

Метрики, поддерживаемые Azure CDN от Майкрософт

metrics Описание Измерения
Коэффициент попаданий байт в кэш * Процент исходящего трафика из кэша CDN по отношению ко всему исходящему трафику. Конечная точка
RequestCount Число клиентских запросов, обслуженных CDN. Конечная точка
Страна клиента.
Регион клиента.
Состояние HTTP.
Группа состояния HTTP.
ResponseSize Число байт, отправленных клиентам в качестве ответов с пограничного сервера CDN. Конечная точка
Страна клиента.
Регион клиента.
Состояние HTTP.
Группа состояния HTTP.
TotalLatency Общее время, прошедшее с получения сетью CDN запроса клиента, до отправки последнего байта ответа из сети CDN клиенту. Конечная точка
Страна клиента.
Регион клиента.
Состояние HTTP.
Группа состояния HTTP.

Примечание

Если для запроса к источнику истекло время ожидания, для HttpStatusCode будет задано значение 0.

*Коэффициент попаданий байт в кэш = (объем исходящего трафика с граничного узла — объем исходящего трафика с сервера-источника)/объем исходящего трафика с граничного узла

Сценарии, исключенные из вычисления коэффициента попаданий байт в кэш

  • Явная настройка директивы Cache-Control без кэша с помощью обработчика правил или поведения кэширования строки запроса.
  • Явная настройка директивы Cache-Control без хранилища или частного кэша.

Конфигурация метрик

  1. В меню портала Azure выберите элементы Все ресурсы>><профиль_CDN>.

  2. В разделе Мониторинг выберите Метрики.

    Метрики для профиля CDN.

  3. Выберите Добавить метрику, выберите добавляемую метрику:

    Выбор и добавление метрики для профиля CDN.

  4. Выберите Добавить фильтр, чтобы добавить фильтр:

    Применение фильтра к метрике.

  5. Выберите Применить разделение, чтобы увидеть тенденцию по различным измерениям:

    Примените разделения к метрике.

  6. Выберите Новая диаграмма, чтобы добавить новую диаграмму:

    Добавление новой диаграммы в представление метрики.

видны узлы

Чтобы настроить оповещения для Microsoft CDN, выберите Мониторинг>>Оповещения.

Выберите Новое правило генерации оповещений для метрик, перечисленных в разделе "Метрики".

Настройка оповещений для конечной точки CDN.

За оповещения будет взиматься плата на основе цен на Azure Monitor. Дополнительные сведения см. в статье об оповещениях Azure Monitor.

Дополнительные метрики

Дополнительные метрики можно включить с помощью Log Analytics Azure и необработанных журналов за дополнительную плату.

  1. Выполните описанные выше действия по включению диагностики для отправки необработанного журнала в Log Analytics.

  2. Выберите созданную рабочую область Log Analytics:

    Выбор рабочей области Log Analytics

  3. В рабочей области Log Analytics в разделе Общие выберите Журналы. Затем выберите Начало работы:

    Рабочая область Log Analytics.

  4. Выберите Профили CDN. Выберите пример запроса для запуска или закройте экран примера, чтобы ввести пользовательский запрос:

    Экран примера запроса.

    Выполнение запроса.

  5. Чтобы просмотреть данные по диаграммам, выберите Диаграмма. Щелкните Закрепить на панели мониторинга, чтобы закрепить диаграмму на панели мониторинга Azure:

    Закрепите диаграмму на панели мониторинга.

Next Steps

В рамках этой статьи вы включили поддержку необработанных журналов HTTP в службе Microsoft CDN.

Дополнительные сведения о Azure CDN и других службах Azure, упомянутых в этой статье, см. в следующих статьях: