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

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

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

Внимание

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

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

Вход в Azure

Войдите на портал Azure.

Настройка на портале 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 Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка 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 со следующей схемой:

Свойство Description
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 Длина времени от первого байта запроса в Azure Front Door до последнего байта ответа в секундах.
TrackingReference Уникальная ссылочная строка, которая определяет запрос, обслуживаемый Azure 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.
НеопределенныйError: произошла ошибка, которая не соответствовала ни одной из ошибок в таблице.
TimeToFirstByte Время в миллисекундах, прошедшее с момента получения запроса сетью Microsoft CDN до момента отправки первого байта клиенту. Время измеряется только на стороне Майкрософт. Данные на стороне клиента не измеряются.
Результат SSLMismatchedSNI — это код состояния, который означает успешный запрос с предупреждением о несоответствии между указанием имени сервера (SNI) и заголовком узла. Этот код состояния подразумевает интерфейс домена, метод, который нарушает условия обслуживания Azure Front Door. Запросы с SSLMismatchedSNI будут отклонены после 22 января 2024 г.
SNI Это поле указывает указание имени сервера (SNI), которое отправляется во время подтверждения TLS/SSL. Его можно использовать для идентификации точного SSLMismatchedSNI значения SNI, если был код состояния. Кроме того, его можно сравнить со значением узла в requestUri поле для обнаружения и устранения проблемы несоответствия.

Примечание.

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

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

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

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

Для каждого запроса, который отправляется на экран источника, есть две записи журнала:

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

Чтобы отличить, пришел ли трафик или ответ через граничный узел или систему защиты сервера-источника, можно использовать поле 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 от Майкрософт

Показатели Description Измерения
Коэффициент попаданий байт в кэш * Процент исходящего трафика из кэша 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.

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

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

  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, упомянутых в этой статье, см. в следующих статьях: