Настройка диагностики для облачных служб Azure (расширенная поддержка) и виртуальных машин
Заметка
Эта статья относится к Azure Azure облачным службам (расширенная поддержка). Облачные службы (классическая версия) прекращены с 31 августа 2024 г. Дополнительные сведения см. в статье Модель развертывания облачных служб (классическая) будет выведена из эксплуатации 31 августа 2024 года. Для новых разработок мы рекомендуем использовать более новый тип службы, специально разработанный для ваших целей, как, например, служба приложений Azure, Azure Functionsили Azure Container Apps. Последний список доступных служб см. в каталоге продуктов Azure.
Если вам нужно устранить неполадки со службой облачной службы Azure (расширенная поддержка) или виртуальной машиной, вы можете использовать Visual Studio для более простой настройки системы диагностики Azure. Диагностика фиксирует системные данные и данные журнала на виртуальных машинах и экземплярах виртуальных машин, работающих в облачной службе. Данные диагностики передаются в выбранную учетную запись хранения. Дополнительные сведения о ведении журнала диагностики в Azure см. в статье Включение ведения журнала диагностики для веб-приложений в службе приложений Azure.
В этой статье показано, как включить и настроить диагностику Azure с помощью Visual Studio. Узнайте, как настроить диагностику на виртуальных машинах Azure, как выбрать типы данных диагностики для сбора и как просмотреть сведения после сбора.
Для настройки системы диагностики Azure можно использовать один из следующих вариантов:
Изменение параметров диагностики в диалоговом окне "Конфигурация диагностики " в Visual Studio. Параметры сохраняются в файле с именем diagnostics.wadcfgx. Вы также можете напрямую изменить файл конфигурации. При обновлении файла вручную изменения конфигурации вступают в силу при следующем развертывании облачной службы в Azure или запуске службы в эмуляторе.
Используйте Cloud Explorer или Server Explorer в Visual Studio 2019 или более ранней версии, чтобы изменить параметры диагностики для облачной службы или виртуальной машины, работающей.
Чтобы настроить диагностику Azure, измените параметры диагностики в диалоговом окне конфигурации диагностики в Visual Studio. Параметры сохраняются в файле с именем diagnostics.wadcfgx. Вы также можете напрямую изменить файл конфигурации. При обновлении файла вручную изменения конфигурации вступают в силу при следующем развертывании облачной службы в Azure или запуске службы в эмуляторе.
Предупреждение
В Visual Studio 2022 нерекомендуемый эмулятор службы хранилища Azure был заменен эмулятором Azurite при отладке проектов облачной службы. Этот эмулятор Azurite не совместим с плагином Azure Diagnostics, который обеспечивает поддержку диагностики Azure во время локального выполнения и тестирования. Если требуется подключаемый модуль для локальных сценариев выполнения и тестирования, можно либо обновить строку подключения в конфигурации локальной службы (.cscfg
) на учетную запись хранения Azure (см. управление строками подключения для учетных записей хранения), либо скачать предыдущий эмулятор службы хранилища Azure.
В выпуске Visual Studio 17.10 локальный подключаемый модуль диагностики Azure объявлен устаревшим и отключен по умолчанию, но его можно включить в этом выпуске. Подключаемый модуль был удален в Visual Studio 17.11. Этот подключаемый модуль использовался только с локальным эмулятором вычислений Azure, и его отключение никак не влияет на развернутые облачные службы, использующие расширение диагностики Azure. Чтобы активировать плагин диагностики в Visual Studio 17.10, добавьте следующий параметр свойства в любой элемент PropertyGroup
в файле проекта: <EnableEmulatorDiagnosticsPlugin>True</EnableEmulatorDiagnosticsPlugin>
.
Как Visual Studio определяет учетную запись хранения диагностики
- Если строка подключения диагностики указана в файле
.cscfg
, Visual Studio использует его для настройки расширения диагностики во время публикации и при создании XML-файлов общедоступной конфигурации во время упаковки. - Если строка подключения диагностики не указана в файле
.cscfg
, Visual Studio возвращается к использованию учетной записи хранения, указанной в файле.wadcfgx
, чтобы настроить расширение диагностики для публикации и создания XML-файлов общедоступной конфигурации во время упаковки. - Строка подключения диагностики в файле
.cscfg
имеет приоритет над учетной записью хранения в файле.wadcfgx
. Если строка подключения диагностики указана в файле.cscfg
, Visual Studio использует эту строку подключения и игнорирует учетную запись хранения в.wadcfgx
.
Что делает флажок "Обновить строки подключения для хранилища разработки..."?
Флажок для обновления строк подключения хранилища разработки для диагностики и кэширования с учетными данными учетной записи хранения Microsoft Azure при публикации в Microsoft Azure обеспечивает удобный способ обновления строк подключения учетной записи разработки с учетной записью хранения Azure, которую вы укажете во время публикации. При публикации проекта в Azure Visual Studio автоматически обновляет строку подключения диагностики с учетной записью хранения, указанной в мастере публикации. Однако если в качестве строки подключения к диагностике указана реальная учетная запись хранения, эта учетная запись используется.
Включение диагностики на виртуальных машинах Azure
В Visual Studio можно собирать диагностические данные для виртуальных машин Azure.
Включение диагностики на виртуальных машинах Azure
В обозревателе серверов выберите узел Azure и подключитесь к подписке Azure, если вы еще не подключены.
Разверните узел виртуальных машин. Вы можете создать новую виртуальную машину или выбрать существующий узел.
В контекстном меню для нужной виртуальной машины выберите Настроить. Откроется диалоговое окно конфигурации виртуальной машины.
виртуальной машины Azure
Если он еще не установлен, добавьте расширение диагностики агента Log Analytics. С помощью этого расширения можно собирать диагностические данные для виртуальной машины Azure. В разделе Установленные расширенияв раскрывающемся списке выберите доступное расширение, выберите Microsoft Monitoring Agent Diagnostics.
Заметка
Другие расширения диагностики доступны для виртуальных машин. Дополнительные сведения см. в разделе расширения и функции виртуальных машин для Windows.
Чтобы добавить расширение и открыть диалоговое окно конфигурации диагностики , выберите Добавить.
Чтобы указать учетную запись хранения, выберите Настроить, а затем выберите ОК.
Каждая вкладка (за исключением Общие и Каталоги журналов ) представляет собой источник данных для диагностики, которые можно собирать.
Вкладка по умолчанию Общиепредоставляет следующие параметры сбора диагностических данных: только ошибки, вся информацияи индивидуальный план. Параметр по умолчанию, ошибки только, занимает наименьший объем хранилища, так как он не передает предупреждения или трассировки сообщений. Параметр все сведения передает большую информацию и поэтому является самым дорогим вариантом с точки зрения хранения.
В этом примере выберите опцию 'Настраиваемый план', чтобы настроить собранные данные.
В поле квота диска в МБ указывает, сколько места необходимо выделить в учетной записи хранения для диагностических данных. Если требуется, можно изменить значение по умолчанию.
На каждой вкладке данных диагностики, которые вы хотите собрать, установите флажок "Включить передачу типа журнала <">.
Например, если вы хотите собирать журналы приложений, установите флажок Включить передачу журналов приложений на вкладке журналы приложений. Кроме того, укажите другие сведения, необходимые для каждого типа данных диагностики. Сведения о конфигурации для каждой вкладки см. в разделе Настройка источников диагностических данных далее в этой статье.
После включения сбора всех нужных данных диагностики нажмите кнопку ОК.
Сохраните обновленный проект.
Сообщение в окне журнала действий Microsoft Azure указывает, что виртуальная машина обновлена.
Настройка источников диагностических данных
После включения сбора диагностических данных можно выбрать точно то, какие источники данных требуется собирать, и какие данные собираются. В следующих разделах описываются вкладки в диалоговом окне конфигурации диагностики и то, что означает каждый параметр конфигурации.
Журналы приложений
Журналы приложений содержат сведения о диагностике, созданные веб-приложением. Если вы хотите записать журналы приложений, установите флажок Включить передачу журналов приложений. Чтобы увеличить или уменьшить интервал между передачей журналов приложений в учетную запись хранения, измените значение периода передачи (мин). Вы также можете изменить объем информации, записанной в журнале, задав значение уровня журнала. Например, выберите подробный, чтобы получить дополнительные сведения, или выберите критические для фиксации только критических ошибок. Если у вас есть конкретный поставщик диагностики, который выдает журналы приложений, вы можете записать эти журналы, добавив глобальный уникальный идентификатор (GUID) поставщика в поле GUID поставщика.
Дополнительные сведения о журналах приложений см. в статье Включение ведения журнала диагностики для веб-приложений в службе приложений Azure.
Журналы событий Windows
Чтобы записать журналы событий Windows, установите флажок Включить передачу журналов событий Windows. Чтобы увеличить или уменьшить интервал между передачей журналов событий в учетную запись хранения, измените значение периода передачи (мин). Установите флажки для типов событий, которые требуется отслеживать.
Если вы хотите указать пользовательский источник данных, введите его в текстовое поле имени источника данных <>, а затем выберите Добавить. Источник данных добавляется в файл diagnostics.cfcfg.
Счетчики производительности
Сведения о счетчике производительности помогут найти узкие места системы и точно настроить производительность системы и приложений. Дополнительные сведения см. в статье Создание и использование счетчиков производительности вприложения Azure. Чтобы записать счетчики производительности, установите флажок Включить передачу счетчиков производительности. Чтобы увеличить или уменьшить интервал между передачей журналов событий в учетную запись хранения, измените значение периода передачи (мин). Установите флажки для счетчиков производительности, которые требуется отслеживать.
счетчики производительности
Чтобы отслеживать счетчик производительности, который не указан, введите счетчик производительности с помощью предлагаемого синтаксиса. а затем выберите Добавить. Операционная система на виртуальной машине определяет, какие счетчики производительности можно отслеживать. Дополнительные сведения о синтаксисе см. в разделе Указание пути счетчика.
Журналы инфраструктуры
Журналы инфраструктуры содержат сведения о инфраструктуре диагностики Azure, модуле RemoteAccess и модуле RemoteForwarder. Чтобы собрать сведения о журналах инфраструктуры, установите флажок Включить передачу журналов инфраструктуры. Чтобы увеличить или уменьшить интервал между передачей журналов инфраструктуры в учетную запись хранения, измените значение периода передачи (мин).
журналы инфраструктуры диагностики
Дополнительные сведения см. в статье Сбор данных журнала с использованием средства диагностики Azure.
Каталоги логов
Каталоги журналов содержат данные, собранные из каталогов журналов для запросов служб IIS, неудачных запросов или папок, которые вы выбрали. Чтобы записать каталоги журналов, установите флажок Включить передачу каталогов журналов. Чтобы увеличить или уменьшить интервал между передачей журналов в учетную запись хранения, измените значение периода передачи (мин).
Установите флажки журналов, которые требуется собрать, например, журналы IIS и журналы неудачных запросов . Имена контейнеров хранилища по умолчанию предоставляются, но их можно изменить.
Журналы можно записывать из любой папки. Укажите путь в журнале из раздела "Абсолютный каталог", а затем выберите Добавить каталог. Журналы записываются в указанные контейнеры.
каталоги журналов
Журналы ETW
Если вы используете трассировку событий для Windows (ETW) (ETW) и хотите записать журналы ETW, установите флажок Включить передачу журналов ETW. Чтобы увеличить или уменьшить интервал между передачей журналов в вашей учетной записи хранения, измените значение периода передачи (мин) .
События записываются из указанных источников событий и манифестов событий. Чтобы указать источник событий, в разделе источников событий введите название, а затем выберите Добавить источник событий. Аналогичным образом можно указать манифест события в разделе Манифесты событий, а затем выбрать Добавить манифест события.
Платформа ETW поддерживается в ASP.NET через классы в пространстве имен System.Diagnostics.aspx. Пространство имен Microsoft.WindowsAzure.Diagnostics, наследующее и расширяющее стандартные классы System.Diagnostics.aspx, позволяет использовать System.Diagnostics.aspx в качестве платформы ведения журнала в среде Azure. Дополнительные сведения см. в статье Управление ведением журнала и трассировкой в Microsoft Azure и Включение диагностики в облачных службах Azure (расширенная поддержка) и виртуальных машинах.
Аварийные дампы
Чтобы получить сведения о сбоях экземпляра роли, установите флажок Включить передачу аварийных дампов. (Так как ASP.NET обрабатывает большинство исключений, это обычно полезно только для рабочих ролей.) Чтобы увеличить или уменьшить процент дискового пространства, используемого под аварийные дампы, измените значение квоты директории (%) на. Вы можете изменить контейнер хранилища, в котором хранятся аварийные дампы, и выбрать, требуется ли записать полный или мини дамп.
Отслеживаемые процессы перечислены на следующем снимке экрана. Установите флажки для процессов, которые требуется записать. Чтобы добавить другой процесс в список, введите имя процесса и выберите Добавить процесс.
Дополнительные сведения см. в статье Управление ведением журнала и трассировкой в Microsoft Azure.
Просмотр диагностических данных
После сбора диагностических данных для облачной службы или виртуальной машины его можно просмотреть.
Просмотр данных диагностики облачной службы
Разверните облачную службу как обычно, а затем запустите ее.
Данные диагностики можно просмотреть в отчете, который создает Visual Studio, или в таблицах в учетной записи хранения. Чтобы просмотреть данные в отчете, откройте Cloud Explorer или Server Explorer, откройте контекстное меню узла для нужной роли, а затем выберите Просмотреть диагностические данные.
Появится отчет, показывающий доступные данные.
Если последние данные не отображаются, может потребоваться дождаться истечения периода передачи.
Чтобы немедленно обновить данные, выберите ссылку Обновить. Чтобы данные обновлялись автоматически, выберите интервал в раскрывающемся списке Auto-Refresh. Чтобы экспортировать данные об ошибках, нажмите кнопку экспорта в CSV-, чтобы создать файл значения, разделенный запятыми, который можно открыть на листе Excel.
В Cloud Explorer или Server Explorer откройте учетную запись хранения, связанную с развертыванием.
Откройте таблицы диагностики в средстве просмотра таблиц и просмотрите собранные данные. Для журналов IIS и пользовательских журналов вы можете открыть контейнер BLOB. В следующей таблице перечислены таблицы или контейнеры BLOB, содержащие данные для различных файлов журнала. Помимо данных для этого файла журнала, записи таблицы содержат EventTickCount, DeploymentId, Рольи RoleInstance, чтобы помочь определить, какая виртуальная машина и роль сгенерировали данные, а также когда.
Диагностические данные Описание Местоположение Журналы приложений Логи, которые ваш код создает путем вызова методов класса System.Diagnostics.Trace. WADLogsTable Журналы событий Данные из журналов событий Windows на виртуальных машинах. Windows хранит сведения в этих журналах, но приложения и службы также используют журналы для создания отчетов об ошибках или сведениях журнала. WADWindowsEventLogsTable Счетчики производительности Вы можете собирать данные на любом счетчике производительности, доступном на виртуальной машине. Операционная система предоставляет счетчики производительности, которые включают в себя множество статистических данных, таких как использование памяти и время процессора. ТаблицаСчетчиковПроизводительностиWAD Журналы инфраструктуры Журналы, созданные самой диагностической инфраструктурой. WADDiagnosticInfrastructureLogsTable Журналы IIS Журналы, записывающие веб-запросы. Если облачная служба получает значительный объем трафика, эти журналы могут быть длинными. Рекомендуется собирать и хранить эти данные только в том случае, если это необходимо. Журналы неудачных запросов можно найти в контейнере BLOB под именем wad-IIS-failedreqlogs, по пути, относящемуся к этому развертыванию, роли и экземпляру. Вы можете найти полные журналы в wad-IIS-logfiles. Записи для каждого файла создаются в таблице WADDirectory. Аварийные дампы Предоставляет двоичные образы процесса облачной службы (обычно рабочая роль). контейнер BLOB-объектов wad-crush-dumps Индивидуальные файлы журнала Журналы данных, которые вы предопределили. Вы можете указать в коде расположение пользовательских файлов журналов в учетной записи хранения. Например, можно указать пользовательский контейнер BLOB-объектов. Если данные любого типа усечены, попробуйте увеличить буфер для этого типа данных или сократить интервал между передачей данных из виртуальной машины в учетную запись хранения.
(Необязательно) Очистка данных из учетной записи хранения иногда позволяет сократить общие затраты на хранение.
При полном развертывании файл diagnostics.cscfg обновляется в Azure, и облачная служба учитывает любые изменения в конфигурации диагностики. Если вместо этого обновить существующее развертывание, cscfg-файл не обновляется в Azure. Вы по-прежнему можете изменить параметры диагностики, выполнив действия, описанные в следующем разделе. Для получения дополнительных сведений о выполнении полного развертывания и обновлении существующего развертывания см. в разделе «Мастер публикации приложений Azure» в документации .
Просмотр данных диагностики виртуальных машин
В контекстном меню виртуальной машины выберите просмотреть данные диагностики.
Откроется диалоговое окно сводки по диагностике .
Если последние данные не отображаются, может потребоваться дождаться истечения периода передачи.
Чтобы немедленно обновить данные, выберите ссылку Обновить. Чтобы данные обновлялись автоматически, выберите интервал в раскрывающемся списке Автообновление. Чтобы экспортировать данные об ошибках, нажмите кнопку экспорта в CSV-, чтобы создать файл значения, разделенный запятыми, который можно открыть на листе Excel.
Настройка диагностики облачной службы после развертывания
Если вы изучаете проблему с облачной службой, которая уже запущена, может потребоваться собрать данные, которые вы не указали, прежде чем первоначально развернуть роль. В этом случае можно начать сбор этих данных, изменив параметры в обозревателе серверов. Настроить диагностику можно либо для одной инстанции, либо для всех инстанций роли, в зависимости от того, открываете ли вы диалоговое окно "Конфигурация диагностики " из контекстного меню для инстанции или для роли. Если вы настроите узел роли, любые вносимые вами изменения применяются ко всем экземплярам. Если вы настраиваете узел экземпляра, все изменения, которые вы вносите, применяются только к этому экземпляру.
Настройка диагностики для работающей облачной службы
В обозревателе серверов разверните узел облачных служб, а затем разверните список узлов, чтобы найти роль или экземпляр (или оба), которые требуется исследовать.
диагностики
В контекстном меню для узла экземпляра или узла роли выберите Обновление настроек диагностики, а затем выберите диагностические параметры, которые хотите собрать.
Сведения о параметрах конфигурации см. в разделе Настройка источников данных диагностики в этой статье. Сведения о просмотре данных диагностики см. в разделе Просмотр данных диагностики в этой статье.
При изменении сбора данных в обозревателе серверов изменения остаются в силе, пока не будет полностью развернута облачная служба. Если вы используете параметры публикации по умолчанию, изменения не перезаписываются. Параметр публикации по умолчанию — обновить существующее развертывание, а не выполнить полное повторное развертывание. Чтобы гарантировать удаление параметров во время развертывания, перейдите на вкладку Дополнительные параметры в мастере публикации, а затем снимите флажок Обновление развертывания. При повторном развертывании без установленного флажка параметры будут возвращены к тем, которые указаны в файле
.wadcfgx
, как задано через редактор свойств для роли. При обновлении развертывания Azure сохраняет предыдущие параметры.
Устранение неполадок с облачными службами Azure (расширенная поддержка)
Если возникают проблемы с проектами облачной службы, например роль, которая зависает в состоянии "занят", многократно перезапускается или вызывает внутреннюю ошибку сервера, существуют средства и методы, которые можно использовать для диагностики и устранения проблемы. Конкретные примеры распространенных проблем и решений, а также общие сведения о понятиях и средствах, которые можно использовать для диагностики и исправления этих ошибок, см. в разделе Данные диагностики вычислительных ресурсов платформы Azure как услуги (PaaS).
Q & A
Что такое размер буфера и насколько он должен быть?
В каждом экземпляре виртуальной машины квоты ограничивают объем данных диагностики, которые могут храниться в локальной файловой системе. Кроме того, необходимо указать размер буфера для каждого типа доступных данных диагностики. Этот размер буфера действует как отдельная квота для этого типа данных. Чтобы определить общий объем квоты и оставшийся объем памяти, посмотрите в нижней части диалогового окна, где указана информация для типа данных диагностики. Если вы указываете большие буферы или большее количество типов данных, вы будете приближаться к общей квоте. Вы можете изменить общую квоту, изменив файл конфигурации diagnostics.wadcfgx. Данные диагностики хранятся в той же файловой системе, что и данные приложения. Если в приложении используется большое количество дискового пространства, не следует увеличивать общую квоту диагностики.
Что такое период передачи, и как долго это должно быть?
Период передачи — это время, которое истекает между записью данных. После каждого периода передачи данные перемещаются из локальной файловой системы на виртуальной машине в таблицы в учетной записи хранения. Если объем собранных данных превышает квоту до конца периода передачи, старые данные удаляются. Если данные теряются, так как данные превышают размер буфера или общую квоту, может потребоваться уменьшить период передачи.
В каком часовом поясе находятся метки времени?
Метки времени находятся в местном часовом поясе центра обработки данных, на котором размещена облачная служба. Используются следующие три столбца меток времени в таблицах журналов:
- PreciseTimeStamp: метка времени ETW этого события. То есть время, когда событие регистрируется из клиента.
- TIMESTAMP: Значение для PreciseTimeStamp округлено вниз до границы частоты отправки. Например, если частота отправки составляет 5 минут и время события 00:17:12, TIMESTAMP — 00:15:00.
- Метка времени: Время создания сущности в таблице Azure.
Как управлять затратами при сборе диагностических сведений?
Параметры по умолчанию (уровень журнала задан на Ошибка, а период передачи задан на 1 минуту) предназначены для минимизации затрат. Затраты на вычисления увеличиваются при сборе дополнительных диагностических данных или при уменьшении периода передачи. Не собираем больше данных, чем вам нужно, и не забудьте отключить сбор данных, если вам больше не нужно. Вы всегда можете включить его снова, даже во время выполнения, как описано ранее в этой статье.
Как собирать журналы неудачных запросов из IIS?
По умолчанию службы IIS не собирают журналы неудачных запросов. Вы можете настроить службы IIS для сбора журналов ошибочных запросов, изменив файл web.config в вашей веб-роли.
Я не получаю сведения о трассировке из методов RoleEntryPoint, например, OnStart. Что не так?
Методы RoleEntryPoint вызываются в контексте WAIISHost.exe, а не в IIS. Сведения о конфигурации в web.config, которые обычно обеспечивают трассировку, не применяются. Чтобы устранить эту проблему, добавьте файл .config в проект веб-роли и присвойте файлу имя для сопоставления выходной сборки, содержащей код RoleEntryPoint. В проекте веб-роли по умолчанию имя файла .config должно быть WAIISHost.exe.config. Добавьте в этот файл следующие строки:
<system.diagnostics>
<trace>
<listeners>
<add name "AzureDiagnostics" type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener">
<filter type="" />
</add>
</listeners>
</trace>
</system.diagnostics>
В окне свойств задайте параметр Copy to Output Directory на значение Copy always.
Связанное содержимое
Дополнительные сведения о ведении журнала диагностики в Azure см. в статье Включение диагностики в облачных службах Azure (расширенная поддержка) и виртуальных машинах и Включение ведения журнала диагностики для веб-приложений в службе приложений Azure.