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

Обзор

В Azure доступны встроенные средства диагностики для отладки приложения Службы приложений. Из этой статьи вы узнаете, как включить ведение журналов диагностики и добавить инструментирование в свое приложение, а также как получить доступ к данным журналов Azure.

В этой статье используется портал Azure и Azure CLI для работы с журналами диагностики. Дополнительные сведения о работе с журналами диагностики с использованием Visual Studio см. в статье Устранение неполадок Azure в Visual Studio.

Примечание

В дополнение к инструкциям по ведению журнала, приведенным в данной статье, есть новая встроенная функция ведения журнала с помощью Azure Monitoring. Дополнительные сведения об этой функции см. в разделе Отправка журналов в Azure Monitor.

Type Платформа Расположение Описание
Ведение журнала приложения Windows, Linux Файловая система Служба приложений и (или) BLOB-объекты службы хранилища Azure Записывает в журнал сообщения, создаваемые кодом вашего приложения. Сообщения могут создаваться с помощью выбранной веб-платформы или из кода приложения непосредственно на основе стандартного шаблона ведения журнала на вашем языке. Каждому сообщению назначается одна из следующих категорий: Критический, Ошибка, Предупреждение, Информация, Отладка и Трассировка. Можно выбрать, какой уровень детализации будет протоколироваться, задав степень серьезности при включении ведения журнала приложения.
Ведение журнала веб-сервера. Windows Файловая система Службы приложений или BLOB-объекты службы хранилища Azure Необработанные данные HTTP-запросов в расширенном формате файла журнала W3C. Каждое сообщение журнала содержит такие данные, как метод HTTP, универсальный код ресурса (URI), IP-адрес клиента, порт клиента, агент пользователя, код отклика и т. д.
Подробные сообщения об ошибках Windows Файловая система Службы приложений Копии htm-страниц ошибок, которые были бы отправлены в браузер клиента. По соображениям безопасности подробные страницы ошибок не должны отправляться клиентам в рабочей среде, но Служба приложений может сохранять страницу ошибки при каждом возникновении ошибки приложения с кодом HTTP 400 или выше. Страница может содержать сведения, которые помогут определить причину, по которой сервер вернул код ошибки.
трассировка неудачно завершенных запросов. Windows Файловая система Службы приложений Подробные сведения о невыполненных запросах, включая трассировку компонентов IIS, использованных для обработки запроса, и время, потраченное для каждого компонента. Это полезно, если вы хотите повысить производительность веб-сайта или определить конкретную ошибку HTTP. Одна папка создается для каждого невыполненного запроса, содержащего XML-файл журнала, и таблица стилей XSL для просмотра файла журнала.
Ведение журнала развертывания Windows, Linux Файловая система Службы приложений Регистрируется при публикации содержимого в приложении. Ведение журнала развертывания происходит автоматически, нет никаких настраиваемых параметров для этого вида журнала. Он поможет определить причину, если развертывание завершится сбоем. Например, если выполняется пользовательский сценарий развертывания, то по журналу развертывания можно выяснить, почему сценарий завершился ошибкой.

Примечание

Служба приложений предусматривает специализированное интерактивное средство диагностики, помогающее устранять неполадки в приложении. Дополнительные сведения см. в статье Обзор диагностики Службы приложений Azure.

Кроме того, для улучшения ведения журнала и мониторинга приложений можно использовать другие службы Azure, например Azure Monitor.

Включение ведения журналов (Windows)

Чтобы включить ведение журнала приложений для приложений Windows на портале Azure, перейдите к своему приложению и выберите Журналы Службы приложений.

Выберите Вкл. в параметре Ведение журнала приложений (файловая система) или Ведение журнала приложений (большие двоичные объекты) либо для обоих этих параметров.

Параметр Файловая система предназначен для временных целей отладки и отключается автоматически через 12 часов. Параметр Большие двоичные объекты предназначен для долгосрочного ведения журнала, а для записи журналов требуется контейнер хранилища больших двоичных объектов. Параметр Большие двоичные объекты также включает в сообщения журнала дополнительные сведения, например идентификатор исходного экземпляра виртуальной машины сообщения журнала (InstanceId), идентификатор потока (Tid) и более детализированную метку времени (EventTickCount).

Примечание

Если учетная запись службы хранилища Azure защищена правилами брандмауэра, см. раздел Рекомендации по работе с сетью.

Примечание

Сейчас в хранилище BLOB-объектов можно записывать только журналы приложения .NET. Журналы приложений Java, PHP, Node.js, Python могут сохраняться только в файловой системе Службы приложений (без изменения кода для записи журналов во внешнее хранилище).

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

  1. На вкладке Настройка установите значение Выключено для соответствующего компонента ведения журнала. Сохраните вашу настройку.
  2. Снова включите ведение журнала для большого двоичного объекта учетной записи хранения. Сохраните вашу настройку.

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

Level Включенные категории
Отключено None
Ошибка "Ошибка", "Критические"
Предупреждение "Предупреждение", "Ошибка", "Критические"
Информация "Информация", "Предупреждение", "Ошибка", "Критические"
Verbose "Трассировка", "Отладка", "Информация", "Предупреждение", "Ошибка", "Критические" (все категории)

По завершении нажмите Сохранить.

Примечание

При занесении журналов в большие двоичные объекты политика хранения более не применяется, если вы удаляете приложение, но сохраняете журналы в больших двоичных объектах. Дополнительные сведения см. в разделе Затраты, которые могут быть начислены после удаления ресурса.

Включить ведение журнала приложений (Linux или контейнер)

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

В поле Ведение журнала приложений выберите Файловая система.

В поле Квота (МБ) укажите квоту диска для журналов приложений. В поле Срок хранения (в днях) укажите количество дней, в течение которых должны храниться журналы.

По завершении нажмите Сохранить.

Включение ведения журналов веб-сервера

Чтобы включить ведение журнала для приложений Windows на портале Azure, перейдите к своему приложению и выберите Журналы Службы приложений.

В поле Ведение журнала веб-сервера выберите Хранилище, чтобы журналы сохранялись в хранилище больших двоичных объектов, либо Файловая система, чтобы они сохранялись в файловой системе Службы приложений.

Примечание

Если учетная запись службы хранилища Azure защищена правилами брандмауэра, см. раздел Рекомендации по работе с сетью.

В поле Срок хранения (в днях) укажите количество дней, в течение которых должны храниться журналы.

Примечание

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

  1. На вкладке Настройка установите значение Выключено для соответствующего компонента ведения журнала. Сохраните вашу настройку.
  2. Снова включите ведение журнала для большого двоичного объекта учетной записи хранения. Сохраните вашу настройку.

По завершении нажмите Сохранить.

Примечание

При занесении журналов в большие двоичные объекты политика хранения более не применяется, если вы удаляете приложение, но сохраняете журналы в больших двоичных объектах. Дополнительные сведения см. в разделе Затраты, которые могут быть начислены после удаления ресурса.

Подробные сообщения об ошибках

Чтобы страница ошибки или трассировка неуспешных запросов сохранялись для приложений Windows, на портале Azure перейдите к своему приложению и выберите Журналы Службы приложений.

В разделе Подробный журнал ошибок или Трассировка неуспешных запросов выберите Вкл. , а затем нажмите кнопку Сохранить.

Оба типа журналов хранятся в файловой системе Службы приложений. Сохраняется до 50 ошибок (файлы и папки). Если количество HTML-файлов превысит 50, самые старые файлы ошибок автоматически удаляются.

Функция трассировки неудачно завершенных запросов по умолчанию фиксирует в журнале запросы, которые завершились ошибкой с кодом состояния HTTP в диапазоне от 400 до 600. Чтобы задать настраиваемые правила, можно переопределить раздел <traceFailedRequests> файле web.config.

Добавление сообщений журнала в код

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

Журналы потоковой передачи

Прежде чем выполнять потоковую передачу журналов в режиме реального времени, включите нужный тип журнала. Выполняется потоковая передача всей информации, записываемой в файлы с расширениями .txt, .log или .htm, которые сохраняются в каталоге /LogFiles (d:/home/logfiles).

Примечание

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

На портале Azure

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

Cloud Shell

Чтобы выполнялась потоковая передача журналов в Cloud Shell, выполните следующую команду:

Важно!

Эта команда может не работать с веб-приложениями, размещенными в плане службы приложений Linux.

az webapp log tail --name appname --resource-group myResourceGroup

Чтобы отфильтровать определенные типы журналов, например HTTP, используйте параметр --Provider. Пример:

az webapp log tail --name appname --resource-group myResourceGroup --provider http

Локальный терминал

Чтобы потоковая передача журналов выполнялась на локальную консоль, установите Azure CLI и войдите в свою учетную запись. После входа следуйте инструкциям для Cloud Shell

Файлы журнала доступа

Если выбран параметр службы хранилища Azure больших двоичных объектов, то для этого типа журнала требуется клиентское средство, которое работает со службой хранилища Azure. Дополнительные сведения см. на странице Клиентские средства службы хранилища Azure.

Для журналов, сохраняемых в файловой системе Службы приложений, самый простой способ — с помощью браузера загрузить ZIP-файл по адресу:

  • Контейнеры Linux / пользовательские контейнеры: https://<app-name>.scm.azurewebsites.net/api/logs/docker/zip
  • Приложения для Windows:https://<app-name>.scm.azurewebsites.net/api/dump

Для контейнеров Linux / пользовательских контейнеров ZIP-файл содержит журналы вывода консоли для узла и для контейнера Docker. Для масштабируемого приложения ZIP-файл содержит по одному набору журналов для каждого из экземпляров. В файловой системе Службы приложений эти файлы журналов являются содержимым каталога /home/LogFiles.

Для приложений Windows ZIP-файл включает содержимое каталога D:\Home\LogFiles в файловой системе Службы приложений. Он имеет следующую структуру:

Тип журнала Каталог Описание
Журналы приложений /LogFiles/Application/ Содержит один или несколько текстовых файлов. Формат сообщений журнала зависит от используемого поставщика ведения журнала.
Трассировка неуспешных запросов /LogFiles/W3SVC#########/ Содержит XML-файлы и XSL-файл. Отформатированные XML-файлы можно просмотреть в браузере.
Подробные журналы ошибок /LogFiles/DetailedErrors/ Содержит файлы ошибок HTM. HTM-файлы можно просмотреть в браузере.
Другим способом просмотра трассировок неудачных запросов является переход на страницу приложения на портале. В меню слева выберите Диагностика и устранение проблем, найдите Журналы трассировки неуспешных запросов, а затем щелкните значок, чтобы просмотреть и посмотреть нужную трассировку.
Журналы веб-сервера /LogFiles/http/RawLogs/ Эта папка содержит один или несколько текстовых файлов в расширенном формате журнала W3C. Эти сведения можно прочитать с помощью текстового редактора или служебной программы, например Log Parser.
Служба приложений не поддерживает поля s-computername, s-ip и cs-version.
Журналы развертывания /LogFiles/Git/ и /deployments/ В этой папке содержатся журналы, созданные внутренними процессами развертывания, а также журналы развертываний с применением Git.

Отправка журналов в Azure Monitor

С помощью новой интеграции Azure Monitor можно создать параметры диагностики для отправки журналов в учетные записи хранения, Центры событий и Log Analytics.

Параметры диагностики

Поддерживаемые типы журналов

В следующей таблице приведены поддерживаемые типы журналов и их описания.

Тип журнала Windows Контейнер Windows Linux Контейнер Linux Описание
AppServiceConsoleLogs Java SE & Tomcat Да Да Да Стандартный вывод и стандартные ошибки
AppServiceHTTPLogs Да Да Да Да Журналы веб-сервера
AppServiceEnvironmentPlatformLogs Да Н/Д Да Да Среда Службы приложений: масштабирование, изменение конфигурации и журналы состояния
AppServiceAuditLogs Да Да Да Да Действия входа через FTP и Kudu
AppServiceFileAuditLogs Да Да TBA TBA Изменения файлов, внесенные в содержимое сайта; доступно только для уровня "Премиум" и выше
AppServiceAppLogs ASP.NET, .NET Core, & Tomcat 1 ASP.NET & Tomcat 1 .NET Core, Java, SE & Tomcat Blessed Images 2 Java SE & Tomcat Blessed Images 2 Журналы приложений
AppServiceIPSecAuditLogs Да Да Да Да Запросы из правил IP-адресов
AppServicePlatformLogs TBA Да Да Да Журналы работы контейнера
AppServiceAntivirusScanAuditLogs 3 Да Да Да Да Журналы антивирусной проверки с помощью Microsoft Defender для облака; доступно только для уровня "Премиум"

1 Для приложений Tomcat добавьте TOMCAT_USE_STARTUP_BAT в параметры приложения и задайте значение false или 0. Необходимо использовать последнюю версию Tomcat и использовать java.util.logging.

2 Для приложений Java SE добавьте WEBSITE_AZMON_PREVIEW_ENABLED в параметры приложения и задайте значение true или 1.

3 Тип журнала AppServiceAntivirusScanAuditLogs по-прежнему доступен в предварительной версии

Рекомендации по работе с сетями

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

Дальнейшие действия