Включение функции ведения журналов диагностики для приложений в Службе приложений Azure
Примечание.
Начиная с 1 июня 2024 г. все созданные Служба приложений приложения будут иметь возможность создать уникальное имя узла по умолчанию с помощью соглашения <app-name>-<random-hash>.<region>.azurewebsites.net
об именовании. Существующие имена приложений останутся неизменными.
Пример: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
Дополнительные сведения см. в разделе "Уникальное имя узла по умолчанию" для ресурса Служба приложений.
В этом видео показано, как включить ведение журнала диагностика для приложений.
Действия в видео также описаны в следующих разделах.
Обзор
В Azure доступны встроенные средства диагностики для отладки приложения Службы приложений. Из этой статьи вы узнаете, как включить ведение журналов диагностики и добавить инструментирование в свое приложение, а также как получить доступ к данным журналов Azure.
В этой статье используется портал Azure и Azure CLI для работы с журналами диагностики. Дополнительные сведения о работе с журналами диагностики с использованием Visual Studio см. в статье Устранение неполадок Azure в Visual Studio.
Примечание.
Помимо инструкций по ведению журнала в этой статье, вы также можете использовать встроенную функцию ведения журнала в Azure Monitor. Дополнительные сведения об этой функции см. в разделе Отправка журналов в Azure Monitor.
Тип | Платформа | Расположение хранилища журналов | Description |
---|---|---|---|
Ведение журнала приложения | 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
).
Примечание.
Сейчас в хранилище BLOB-объектов можно записывать только журналы приложения .NET. Журналы приложений Java, PHP, Node.js и Python можно хранить только в файловой системе Служба приложений (без изменений кода для записи журналов во внешнее хранилище).
Если вы создаете повторно ключи доступа учетной записи хранения, то необходимо сбросить соответствующую конфигурацию ведения журнала, чтобы использовались обновленные ключи. Для этого:
- На вкладке Настройка установите значение Выключено для соответствующего компонента ведения журнала. Сохраните вашу настройку.
- Снова включите ведение журнала для большого двоичного объекта учетной записи хранения. Сохраните вашу настройку.
Выберите Уровень или уровень детализации для записи в журнал. В следующей таблице приведены категории ведения журналов, входящие в каждый из уровней.
Уровень | Включенные категории |
---|---|
Отключен | нет |
Ошибка | "Ошибка", "Критические" |
Предупреждения | "Предупреждение", "Ошибка", "Критические" |
Информация | "Информация", "Предупреждение", "Ошибка", "Критические" |
Подробный | "Трассировка", "Отладка", "Информация", "Предупреждение", "Ошибка", "Критические" (все категории) |
После завершения выберите Сохранить.
Примечание.
При занесении журналов в большие двоичные объекты политика хранения более не применяется, если вы удаляете приложение, но сохраняете журналы в больших двоичных объектах. Дополнительные сведения см. в разделе Затраты, которые могут быть начислены после удаления ресурса.
Включить ведение журнала приложений (Linux или контейнер)
Чтобы включить ведение журнала приложений для приложений Linux или пользовательских контейнеров на портале Azure, перейдите к своему приложению и выберите Журналы Службы приложений.
В поле Ведение журнала приложений выберите Файловая система.
В поле Квота (МБ) укажите квоту диска для журналов приложений. В поле Срок хранения (в днях) укажите количество дней, в течение которых должны храниться журналы.
После завершения выберите Сохранить.
Включение ведения журналов веб-сервера
Чтобы включить ведение журнала для приложений Windows на портале Azure, перейдите к своему приложению и выберите Журналы Службы приложений.
В поле Ведение журнала веб-сервера выберите Хранилище, чтобы журналы сохранялись в хранилище больших двоичных объектов, либо Файловая система, чтобы они сохранялись в файловой системе Службы приложений.
В поле Срок хранения (в днях) укажите количество дней, в течение которых должны храниться журналы.
Примечание.
Если вы создаете повторно ключи доступа учетной записи хранения, то необходимо сбросить соответствующую конфигурацию ведения журнала, чтобы использовать обновленные ключи. Для этого:
- На вкладке Настройка установите значение Выключено для соответствующего компонента ведения журнала. Сохраните вашу настройку.
- Снова включите ведение журнала для большого двоичного объекта учетной записи хранения. Сохраните вашу настройку.
После завершения выберите Сохранить.
Примечание.
При занесении журналов в большие двоичные объекты политика хранения более не применяется, если вы удаляете приложение, но сохраняете журналы в больших двоичных объектах. Дополнительные сведения см. в разделе Затраты, которые могут быть начислены после удаления ресурса.
Подробные сообщения об ошибках
Чтобы страница ошибки или трассировка неуспешных запросов сохранялись для приложений Windows, на портале Azure перейдите к своему приложению и выберите Журналы Службы приложений.
В разделе "Подробное ведение журнала ошибок" или "Трассировка неудачных запросов" выберите "Вкл." и нажмите кнопку "Сохранить".
Оба типа журналов хранятся в файловой системе Службы приложений. Сохраняются до 50 ошибок (файлов или папок). Если количество HTML-файлов превысит 50, самые старые файлы ошибок автоматически удаляются.
Функция трассировки неудачно завершенных запросов по умолчанию фиксирует в журнале запросы, которые завершились ошибкой с кодом состояния HTTP в диапазоне от 400 до 600. Чтобы задать настраиваемые правила, можно переопределить раздел <traceFailedRequests>
файле web.config.
Добавление сообщений журнала в код
В коде приложения для отправки сообщений журнала в журналы приложений используются обычные средства ведения журнала. Например:
Приложения ASP.NET могут использовать класс System.Diagnostics.Trace для записи информации в журнал диагностики приложений. Например:
System.Diagnostics.Trace.TraceError("If you're seeing this, something bad happened");
По умолчанию ASP.NET Core использует поставщик ведения журналов Microsoft.Extensions.Logging.AzureAppServices. Дополнительные сведения см. в разделе о ведении журнала ASP.NET Core в Azure. Сведения о ведении журнала пакета SDK для веб-заданий см. в статье "Начало работы с пакетом SDK для веб-заданий Azure".
Приложения Python могут использовать пакет OpenCensus для отправки журналов в журнал диагностика приложения.
Журналы потоковой передачи
Прежде чем выполнять потоковую передачу журналов в режиме реального времени, включите нужный тип журнала. Все данные, записанные в выходные данные консоли или файлы, заканчивающиеся .txt, .log или .htm, которые хранятся в каталоге /home/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 и контейнера Docker. Для масштабируемого приложения ZIP-файл содержит по одному набору журналов для каждого из экземпляров. В файловой системе Службы приложений эти файлы журналов являются содержимым каталога /home/LogFiles. Журналы развертывания хранятся в /site/deployments/.
Для приложений Windows ZIP-файл включает содержимое каталога D:\Home\LogFiles в файловой системе Службы приложений. Он имеет следующую структуру:
Тип журнала | Directory | Description |
---|---|---|
Журналы приложений | /LogFiles/Application/ | Содержит один или несколько текстовых файлов. Формат сообщений журнала зависит от используемого поставщика ведения журнала. |
Трассировка неуспешных запросов | /LogFiles/W3SVC#########/ | Содержит XML-файлы и XSL-файл. Отформатированные XML-файлы можно просмотреть в браузере. |
Подробные журналы ошибок | /LogFiles/DetailedErrors/ | Содержит файлы ошибок HTM. HTM-файлы можно просмотреть в браузере. Другим способом просмотра трассировок неудачных запросов является переход на страницу приложения на портале. В меню слева выберите " Диагностика и решение проблем", найдите журналы трассировки неудачных запросов, а затем щелкните значок, чтобы просмотреть нужную трассировку. |
Журналы веб-сервера | /LogFiles/http/RawLogs/ | Эта папка содержит один или несколько текстовых файлов в расширенном формате журнала W3C. Эти файлы можно прочитать с помощью текстового редактора или служебной программы, такой как средство синтаксического анализа журналов. Служба приложений не поддерживает поля s-computername , s-ip и cs-version . |
Журналы развертывания | /LogFiles/Git/ и /deployments/ | Содержит журналы, созданные внутренними процессами развертывания, а также журналы для развертываний Git. |
Отправка журналов в Azure Monitor
Интеграция Azure Monitor позволяет создавать параметры диагностики для отправки журналов в учетные записи хранения, центры событий и Log Analytics. При добавлении параметра диагностики Служба приложений добавляет параметры приложения в приложение, которое активирует перезапуск приложения.
Поддерживаемые типы журналов
Список поддерживаемых типов журналов и их описания см. в разделе "Поддерживаемые журналы ресурсов" для Microsoft.Web.
Рекомендации по работе с сетями
Ограничения параметров диагностики см. в официальной документации по параметрам диагностики в отношении ограничений назначения.
Следующие шаги
- Запросы по журналам в Azure Monitor
- Мониторинг приложений в Службе приложений Azure
- Troubleshoot an app in Azure App Service using Visual Studio (Устранение неполадок приложения в Службе приложений Azure с помощью Visual Studio)
- Учебник. Выполнение нагрузочного теста для выявления узких мест производительности в веб-приложении