Поделиться через


Устранение неполадок с журналами ресурсов

В этом руководстве представлен обзор журналов ресурсов Azure Web PubSub и советов по использованию журналов для устранения неполадок. Журналы можно использовать для идентификации проблем, отслеживания подключений, трассировки сообщений, трассировки HTTP-запросов и анализа.

Что такое журналы ресурсов?

Существует три типа журналов ресурсов:

  • Журналы подключения предоставляют подробные сведения о подключениях концентратора Azure Web PubSub. Они могут включать основные сведения, такие как идентификатор пользователя и идентификатор подключения, или сведения о событии, такие как подключение и отключение.
  • Журналы обмена сообщениями предоставляют сведения о трассировке для сообщений концентратора, отправляемых или полученных через службу Azure Web PubSub, например идентификатор трассировки или тип сообщения.
  • Журналы HTTP-запросов предоставляют сведения о трассировке HTTP-запросов в службу Azure Web PubSub, например метод HTTP или код состояния. Как правило, HTTP-запрос записывается при поступлении или выходе из службы.

Запись журналов ресурсов с помощью средства динамической трассировки

Средство динамической трассировки в службе Azure Web PubSub может собирать журналы ресурсов в режиме реального времени, что полезно для устранения неполадок в среде разработки. Средство динамической трассировки может записывать журналы подключения, журналы обмена сообщениями и журналы HTTP-запросов.

При использовании средства динамической трассировки следует учитывать следующие факторы:

  • Журналы ресурсов в режиме реального времени, которые фиксирует средство динамической трассировки, выставляются как сообщения (исходящий трафик).
  • Экземпляр уровня "Бесплатный" службы Azure Web PubSub имеет ежедневное ограничение в 20 000 сообщений (исходящий трафик). Вы можете неожиданно достичь ежедневного ограничения с помощью динамической трассировки.
  • В настоящее время средство динамической трассировки не поддерживает авторизацию Microsoft Entra. Ключи доступа необходимо включить для использования динамической трассировки. В разделе "Параметры" выберите "Ключи" и включите ключ доступа.

Запуск средства динамической трассировки

При включении ключа доступа используйте маркер доступа для проверки подлинности средства динамической трассировки. В противном случае для проверки подлинности средства динамической трассировки используется идентификатор Microsoft Entra. Чтобы узнать, включен ли ключ доступа, перейдите в область "Ключи" в экземпляре Служба Azure SignalR в портал Azure.

Открытие динамической трассировки при включении ключа доступа

  1. Перейдите к портал Azure и области Служба SignalR.

  2. В меню службы в разделе "Мониторинг" выберите параметры динамической трассировки.

  3. Выберите включить динамическую трассировку.

  4. Выберите кнопку Сохранить. Это занимает некоторое время, чтобы изменения вступили в силу.

  5. После завершения обновления выберите "Открыть средство динамической трассировки".

    Снимок экрана: открытие средства динамической трассировки.

Откройте средство динамической трассировки при отключении ключа доступа

Назначение разрешения API средства динамической трассировки для себя

  1. Перейдите к портал Azure и области Служба SignalR.

  2. Выберите Управление доступом (IAM).

  3. Нажмите кнопку +Добавить и выберите назначение ролей.

  4. На вкладке ролей функции задания выберите роль владельца Служба SignalR и нажмите кнопку "Далее".

  5. В области "Элементы" нажмите кнопку +Выбрать участников.

  6. Выполните поиск и выбор элементов, а затем нажмите кнопку " Выбрать".

  7. Выберите "Проверить и назначить " и подождите уведомления о завершении.

Включение средства динамической трассировки

  1. Перейдите к портал Azure и области Служба SignalR.

  2. В меню службы в разделе "Мониторинг" выберите параметры динамической трассировки.

  3. Выберите включить динамическую трассировку.

  4. Выберите кнопку Сохранить. Это занимает некоторое время, чтобы изменения вступили в силу.

  5. После завершения обновления выберите "Открыть средство динамической трассировки".

    Снимок экрана: открытие средства динамической трассировки.

Войдите в систему с помощью учетной записи Майкрософт

  1. Средство динамической трассировки приводит к открытию окна входа Майкрософт. Если окно не откроется, разрешите всплывающие окна в параметрах браузера.

  2. Дождитесь появления готовности в строке состояния.

Запись журналов ресурсов

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

  • Запись начинает записывать журналы ресурсов в режиме реального времени из Azure Web PubSub.
  • Очистить захваченные журналы ресурсов в режиме реального времени.
  • Фильтр журнала фильтрует захваченные журналы ресурсов в режиме реального времени с помощью одного определенного ключевого слова. Общие разделители, такие как пробел, запятая и точка с запятой, рассматриваются как часть ключевого слова.
  • Состояние показывает, подключено ли средство динамической трассировки или отключено с конкретным экземпляром.

Снимок экрана: запись журналов ресурсов с помощью средства динамической трассировки.

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

Имя Описание
Time Время события журнала
Уровень журнала Уровень событий журнала (Trace, или InformationalDebugWarning Error)
Имя события Имя операции для события
Сообщение Подробное сообщение о событии
Исключение Исключение среды выполнения службы Azure Web PubSub
Узел Определяемое пользователем имя концентратора
Идентификатор подключения Удостоверение подключения
Код пользователя Удостоверение пользователя
IP-адрес IP-адрес клиента
Шаблон маршрута Шаблон маршрута API
Метод HTTP Метод HTTP (POST, GETPUT илиDELETE)
URL-адрес Универсальный указатель ресурсов
Идентификатор трассировки Уникальный идентификатор вызова
Код состояния Код HTTP-ответа
Длительность Длительность между получением запроса и обработкой запроса
Заголовки Дополнительные сведения, передаваемые клиентом и сервером с HTTP-запросом или ответом

Запись журналов ресурсов с помощью Azure Monitor

Включение журналов ресурсов

В настоящее время Azure Web PubSub поддерживает интеграцию с служба хранилища Azure.

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

  2. На панели параметров диагностики экземпляра службы Azure Web PubSub нажмите кнопку +Добавить параметр диагностики.

    Снимок экрана: просмотр параметров диагностики и создание нового.

  3. В поле "Имя параметра диагностики" введите имя параметра.

  4. В разделе "Сведения о категории" выберите любую нужную категорию журнала.

  5. В сведениях о назначении выберите "Архив" в учетную запись хранения.

    Снимок экрана: настройка параметра диагностики.

  6. Нажмите кнопку "Сохранить", чтобы сохранить параметр диагностики.

    Примечание.

    Учетная запись хранения должна находиться в том же регионе, что и служба Azure Web PubSub.

Архивация в учетной записи хранения Azure

Журналы хранятся в учетной записи хранения, настроенной на панели параметров диагностики. Имя insights-logs-<CATEGORY_NAME> контейнера автоматически создается для хранения журналов ресурсов. Внутри контейнера журналы хранятся в файле resourceId=/SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/RESOURCEGROUPS/XXXX/PROVIDERS/MICROSOFT.SIGNALRSERVICE/SIGNALR/XXX/y=YYYY/m=MM/d=DD/h=HH/m=00/PT1H.json. Путь объединяется и resource ID Date Time. Файлы журнала разделены по часам (hour). Значение минуты всегда m=00равно.

Все журналы хранятся в формате JSON (нотация объектов JavaScript). Каждая запись содержит строковые поля, использующие формат, описанный в следующих разделах.

Строки JSON в архивных журналах включают элементы, перечисленные в следующих таблицах.

Формат

Имя Описание
time Время события журнала
level Уровень события журнала
resourceId Идентификатор ресурса экземпляра Служба Azure SignalR
location Расположение экземпляра Служба Azure SignalR
category Категория события журнала
operationName Имя операции для события
callerIpAddress IP-адрес сервера или клиента
properties Подробные свойства, связанные с этим событием журнала (см. следующую таблицу)

Таблица свойств

Имя Описание
collection Коллекция события журнала (ConnectionAuthorizationилиThrottling)
connectionId Удостоверение подключения
userId Удостоверение пользователя
message Подробное сообщение о событии журнала.
hub Определяемое пользователем имя концентратора
routeTemplate Шаблон маршрута API
httpMethod Метод HTTP (POST, GETPUT илиDELETE)
url Универсальный указатель ресурсов
traceId Уникальный идентификатор вызова
statusCode Код HTTP-ответа
duration Длительность времени между получением и обработкой запроса
headers Дополнительные сведения, передаваемые клиентом и сервером с HTTP-запросом или ответом

Следующий код является примером строки JSON в журнале архива:

{
  "properties": {
    "message": "Connection started",
    "collection": "Connection",
    "connectionId": "LW61bMG2VQLIMYIVBMmyXgb3c418200",
    "userId": null
  },
  "operationName": "ConnectionStarted",
  "category": "ConnectivityLogs",
  "level": "Informational",
  "callerIpAddress": "167.220.255.79",
  "resourceId": "/SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/RESOURCEGROUPS/MYGROUP/PROVIDERS/MICROSOFT.SIGNALRSERVICE/WEBPUBSUB/MYWEBPUBSUB",
  "time": "2021-09-17T05:25:05Z",
  "location": "westus"
}

Архивация в Azure Log Analytics

Чтобы отправить журналы в рабочую область Log Analytics, выполните следующие действия.

  1. На панели параметров диагностики в разделе "Сведения о назначении" выберите "Отправить в рабочую область Log Analytics".

  2. В поле Подписка выберите подписку, которую вы хотите использовать.

  3. Для назначения для журналов выберите рабочую область Log Analytics.

Чтобы просмотреть журналы ресурсов, выполните следующие действия.

  1. Выберите журналы в целевой рабочей области Log Analytics.

    Снимок экрана: элемент меню Log Analytics.

  2. Чтобы запросить журнал, введите WebPubSubConnectivityWebPubSubMessagingили WebPubSubHttpRequestвыберите диапазон времени. Дополнительные запросы см. в статье "Начало работы с Log Analytics" в Azure Monitor.

    Снимок экрана: запрос в Log Analytics.

Чтобы использовать пример запроса для службы SignalR, выполните следующие действия.

  1. Выберите журналы в целевой рабочей области Log Analytics.

  2. Выберите запросы , чтобы открыть обозреватель запросов.

  3. Выберите тип ресурса для группировки примеров запросов по типу ресурса.

  4. Выберите "Выполнить" , чтобы запустить скрипт.

    Снимок экрана: пример запроса в Log Analytics.

Столбцы журнала архива включают элементы, перечисленные в следующей таблице.

Имя Описание
TimeGenerated Время события журнала
Collection Коллекция события журнала (Connection, Authorizationи Throttling)
OperationName Имя операции для события
Location Расположение экземпляра Служба Azure SignalR
Level Уровень события журнала
CallerIpAddress IP-адрес сервера или клиента
Message Подробное сообщение о событии журнала.
UserId Удостоверение пользователя
ConnectionId Удостоверение подключения
ConnectionType Тип подключения (Serverподключение с стороны сервера и Clientподключение с клиентской стороны)
TransportType Тип транспорта соединения (Websockets, ServerSentEventsи LongPolling)

Устранение неполадок с журналами ресурсов

При обнаружении непредвиденных увеличений или уменьшения количества подключений можно устранить проблему с помощью журналов ресурсов. Возможные проблемы включают непредвиденные изменения количества подключений, достижение ограничений подключения и сбой авторизации.

Непредвиденные события отключения

Если подключение отключается, журналы ресурсов записывают событие отключения с ConnectionAborted или ConnectionEnded в operationName.

Разница между ConnectionAborted и ConnectionEnded заключается в том, что ConnectionEnded ожидаемое отключение, которое активируется клиентом или серверной стороной. В отличие от этого, ConnectionAborted обычно относится к событию, в котором соединение неожиданно удаляется, а причина отключения предоставляется в message.

В следующей таблице перечислены причины неожиданного отключения.

Причина Description
Число подключений достигло предела. Количество подключений достигает предела текущей ценовой категории. Рассмотрите возможность увеличения масштаба единицы обслуживания.
Перезагрузка службы, повторное подключение. Служба Azure Web PubSub перезагрузится. Необходимо реализовать собственный механизм повторного подключения или вручную повторно подключиться к службе Azure Web PubSub.
Временная внутренняя ошибка сервера. Временная ошибка возникает в службе Azure Web PubSub. Восстановление должно быть автоматическим.

Неожиданное увеличение подключений

Когда число клиентских подключений неожиданно увеличивается, выполните следующие действия. Сначала отфильтруйте лишние подключения и добавьте уникальный идентификатор тестового пользователя в тестовое подключение клиента. Затем проверьте журналы ресурсов. Если вы заметите, что несколько подключений клиента имеют один и тот же идентификатор тестового пользователя или IP-адрес, скорее всего, клиент создает больше подключений, чем ожидалось. Проверьте код клиента, чтобы найти источник дополнительных подключений.

Сбой авторизации

Если вы получите 401 Несанкционированный возврат для клиентских запросов, проверьте журналы ресурсов. Если вы найдете Failed to validate audience. Expected Audiences: <valid audience>. Actual Audiences: <actual audience>, это означает, что все аудитории в маркере доступа недопустимы. Попробуйте использовать допустимые аудитории, предлагаемые в журнале.

Регулирование

Если вы обнаружите, что не удается установить клиентские подключения к службе Azure Web PubSub, проверьте журналы ресурсов. Если вы видите Connection count reaches limit в журнале ресурсов, вы установили слишком много подключений к службе Azure Web PubSub и достигли ограничения количества подключений. Рекомендуется вертикально увеличить масштаб экземпляра службы Azure Web PubSub.

Если вы видите Message count reaches limit в журнале ресурсов и используете уровень "Бесплатный", это означает, что вы использовали квоту сообщений. Если вы хотите отправить больше сообщений, попробуйте изменить экземпляр службы Azure Web PubSub на уровень "Стандартный". Дополнительные сведения см. в разделе о ценах на Azure Web PubSub.