Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Данная статья содержит сведения об устранении неполадок, относящихся к средствами диагностики Azure. Дополнительные сведения о диагностике см. в разделе "Диагностика Azure".
Логические компоненты
Компоненты:
- Средство запуска плагина диагностики (DiagnosticsPluginLauncher.exe): запускает плагин диагностики. Он служит процессом точки входа.
- Подключаемый модуль диагностики (DiagnosticsPlugin.exe): настраивает, запускает и управляет временем существования агента мониторинга. Это основной процесс, запущенный средством запуска.
- Агент мониторинга (процессы MonAgent*.exe): отслеживает, собирает и передает диагностические данные.
Пути к журналам и артефактам
Следующие пути приводят к некоторым важным журналам и артефактам. Мы ссылаемся на эту информацию в этой статье.
Oблачныe службы Azure2
| Артефакт | Путь |
|---|---|
| Файл конфигурации системы диагностики Azure | %SystemDrive%\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics<версии>\Config.txt |
| Файлы журналов | C:\Logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics<version>\ |
| Локальное хранилище данных диагностики | C:\Resources\Directory<CloudServiceDeploymentID>.<RoleName>.DiagnosticStore\WAD0107\Tables |
| Файл конфигурации агента мониторинга | C:\Resources\Directory<CloudServiceDeploymentID>.<RoleName>.DiagnosticStore\WAD0107\Configuration\MaConfig.xml |
| Пакет расширений системы диагностики Azure | %SystemDrive%\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics<version> |
| Путь к служебной программе сбора журналов | %SystemDrive%\Packages\GuestAgent\ |
| Файл журнала MonAgentHost | C:\Resources\Directory<CloudServiceDeploymentID>.<RoleName>.DiagnosticStore\WAD0107\Configuration\MonAgentHost.<seq_num>.log |
Виртуальные машины
| Артефакт | Путь |
|---|---|
| Файл конфигурации системы диагностики Azure | C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<version>\RuntimeSettings |
| Файлы журналов | C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<DiagnosticsVersion>\ |
| Локальное хранилище данных диагностики | C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<DiagnosticsVersion>\WAD0107\Tables |
| Файл конфигурации агента мониторинга | C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<DiagnosticsVersion>\WAD0107\Configuration\MaConfig.xml |
| Состояние файла | C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<version>\Status |
| Пакет расширений системы диагностики Azure | C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<DiagnosticsVersion> |
| Путь к служебной программе сбора журналов | C:\WindowsAzure\Logs\WaAppAgent.log |
| Файл журнала MonAgentHost | C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<DiagnosticsVersion>\WAD0107\Configuration\MonAgentHost.<seq_num>.log |
Данные метрик не отображаются на портале Azure
Диагностика предоставляет данные метрик, которые можно отобразить в портал Azure. Если у вас возникли проблемы с отображением данных на портале, проверьте WADMetrics\* таблицу в учетной записи хранения диагностики, чтобы узнать, есть ли соответствующие записи метрик и убедитесь, что поставщик ресурсов Microsoft.Insights зарегистрирован.
PartitionKey Здесь таблица представляет собой идентификатор ресурса, виртуальную машину или масштабируемый набор виртуальных машин.
RowKey — имя метрики. Оно также называется именем счетчика производительности.
Если идентификатор ресурса неверный, проверьте Конфигурацию диагностики>Метрики>ResourceId, чтобы убедиться, что идентификатор ресурса установлен правильно.
Если для конкретной метрики нет данных, проверьте конфигурации диагностики>счетчики производительности, чтобы узнать, включена ли метрика (счетчик производительности). Следующие счетчики включены по умолчанию.
- \Процессор(_общий объем ресурсов)% загруженности процессора
- \Память\доступные байты
- \ASP.NET приложения (Всего)\Запросы/сек
- \ASP.NET приложения(Всего)\Ошибки всего/Сек
- \ASP.NET\Запросы в очереди
- \ASP.NET\Запросы отклонены
- \Processor(w3wp)% время работы процессора
- \Process(w3wp)\Приватные байты
- \Process(WaIISHost)% время использования процессора
- \Process(WaIISHost)\Приватные байты
- \Process(WaWorkerHost)% Время процессора
- \Process(WaWorkerHost)\Закрытые байты
- \Память\Ошибки страниц/сек
- .NET CLR Memory(Global)% время в GC
- \LogicalDisk(C:)\Байты записи на диск/сек
- \LogicalDisk(C:)\Чтение байт с диска/сек
- \LogicalDisk(D:)\Байт записи на диск/сек
- \Логический диск(D:)\Чтение байт с диска/сек
Если конфигурация настроена правильно, но данные метрики все равно не отображаются, следуйте инструкциям ниже для устранения ошибок.
Диагностика Azure не запускается
Сведения о том, почему не удалось запустить диагностику, см. в файлах DiagnosticsPluginLauncher.log и DiagnosticsPlugin.log в расположении файлов журнала, предоставленном ранее.
Если эти журналы указывают Monitoring Agent not reporting success after launch, это означает, что произошел сбой запуска MonAgentHost.exe. Просмотрите журналы в расположении, указанном для MonAgentHost файла журнала в предыдущем разделе "Виртуальные машины".
В последней строке файлов журнала указан код выхода.
DiagnosticsPluginLauncher.exe Information: 0 : [4/16/2016 6:24:15 AM] DiagnosticPlugin exited with code 0
Если вы нашли отрицательный код выхода, см. таблицу кода выхода в разделе "Ссылки".
Данные диагностики не регистрируются в служба хранилища Azure
Определите, не отображаются ли данные или какие-либо данные отображаются.
Журналы инфраструктуры диагностики
Система диагностики регистрирует все ошибки в журналы инфраструктуры системы диагностики. Убедитесь, что вы включили запись журналов инфраструктуры диагностики в конфигурации. Затем можно быстро найти все соответствующие ошибки, отображаемые в таблице DiagnosticInfrastructureLogsTable, в настроенной учетной записи хранения.
Данные не отображаются
Самая распространенная причина того, что данные о событии вообще не отображается — неправильно заданные сведения об учетной записи хранения.
Решение. Исправьте файл конфигурации системы диагностики и переустановите систему диагностики.
Если учетная запись хранения настроена правильно, войдите на удалённый компьютер и убедитесь, что DiagnosticsPlugin.exe и MonAgentCore.exe запущены. Если они не выполняются, выполните действия, описанные в диагностика Azure не запускается.
Если процессы выполняются, перейдите к разделу "Регистрация данных выполняется локально?" и следуйте инструкциям.
Если по-прежнему возникла проблема, попробуйте выполнить следующее:
- Удалите агент.
- Удалите каталог C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics.
- Снова установите агент.
Отсутствует часть данных
Если вы получаете некоторые данные, но не все, это означает, что конвейер сбора и передачи данных настроен правильно. Следуйте указаниям из подразделов ниже, чтобы сузить список возможных проблем.
Настроен ли сбор?
Сбор определенных типов данных указывается в конфигурации системы диагностики. Проверьте конфигурацию , чтобы убедиться, что вы ищете только данные, настроенные для коллекции.
Создает ли узел данные?
-
Счетчики производительности: откройте
perfmonи проверьте счетчик. -
Журналы трассировки: осуществите доступ к виртуальной машине удаленно и добавьте
TextWriterTraceListenerв файл конфигурации приложения. Сведения о настройке прослушивателя текста см. в разделе "Создание и инициализация прослушивателей трассировки". Проверьте, имеет ли элемент<trace>значение<trace autoflush="true">. Если журналы трассировки не создаются, см. в разделе "Дополнительные сведения о отсутствующих журналах трассировки". - Трассировки событий для Windows (ETW): удаленный доступ к виртуальной машине и установка средства PerfView. В PerfView запустите Файл>Команду пользователя>Listen etwprovder1>etwprovider2 и т. д. Команда Listen чувствительна к регистру, и в списке поставщиков ETW, разделённом запятыми, не может быть пробелов. Если команда не удается выполнить, выберите Журнал в правом нижнем углу средства PerfView, чтобы увидеть, что пытались выполнить и каким был результат. Если входные данные правильны, откроется новое окно. Через несколько секунд вы увидите трассировки ETW.
- Журналы событий: удаленный доступ к виртуальной машине. Откройте Просмотр событий и убедитесь, что события существуют.
Сохраняются ли данные локально?
Проверьте, сохраняются ли данные локально. Данные хранятся локально в файлах *.tsf в локальном хранилище для диагностика данных. Различные типы журналов собираются в разных TSF-файлах. Их имена напоминают имена таблиц в службе хранилища Azure.
Например, счетчики производительности собираются в PerformanceCountersTable.tsf. Журналы событий собираются в WindowsEventLogsTable.tsf. Используйте инструкции в разделе "Извлечение локальных журналов ", чтобы открыть файлы локальной коллекции и убедиться, что они собираются на диске.
Если локальные журналы не сохраняются локально и узел создает данные, скорее всего проблема связана с конфигурацией. Тщательно проверьте настройки конфигурации.
Кроме того, просмотрите конфигурацию, созданную для monitoringAgent MaConfig.xml. Убедитесь, что есть раздел, описывающий соответствующий источник журнала. Затем убедитесь, что он не потерян в переводе между конфигурацией диагностики и конфигурацией агента мониторинга.
Передаются ли данные?
Если вы проверили, что данные записываются локально, но вы по-прежнему не видите его в учетной записи хранения, выполните следующие действия.
- Убедитесь, что вы предоставили правильную учетную запись хранения и не перевернули ключи для данной учетной записи хранения. Для Azure Облачные службы иногда пользователи не обновляются
useDevelopmentStorage=true. - Проверьте правильность указанной учетной записи хранения. Убедитесь, что у вас нет ограничений сети, запрещающих компонентам доступ к конечным точкам общедоступного хранилища. Один из способов сделать это заключается в удаленном доступе к компьютеру и попытаться записать что-то в ту же учетную запись хранения самостоятельно.
- Наконец, вы можете посмотреть, какие ошибки сообщаются агентом мониторинга. Агент мониторинга записывает журналы в maeventtable.tsf, который находится в локальном хранилище для диагностических данных. Следуйте инструкциям в разделе извлечения локальных журналов , чтобы открыть этот файл. Попытайтесь определить наличие
errors, указывающих на сбои при чтении в локальных файлах и записи в хранилище.
Сбор и архивирование журналов
Если вы думаете об обращении в службу поддержки, первое, что они могут попросить вас собрать журналы с компьютера. Вы можете сэкономить время, сделав это самостоятельно. Запустите служебную CollectGuestLogs.exe программу в пути к сбору журналов. В той же папке она создаст ZIP-файл со всеми соответствующими журналами Azure.
Таблицы данных диагностики не найдены
Таблицы в служба хранилища Azure, в которых хранятся события ETW, именуются с помощью следующего кода:
if (String.IsNullOrEmpty(eventDestination)) {
if (e == "DefaultEvents")
tableName = "WADDefault" + MD5(provider);
else
tableName = "WADEvent" + MD5(provider) + eventId;
}
else
tableName = "WAD" + eventDestination;
Приведем пример:
<EtwEventSourceProviderConfiguration provider="prov1">
<Event id="1" />
<Event id="2" eventDestination="dest1" />
<DefaultEvents />
</EtwEventSourceProviderConfiguration>
<EtwEventSourceProviderConfiguration provider="prov2">
<DefaultEvents eventDestination="dest2" />
</EtwEventSourceProviderConfiguration>
"EtwEventSourceProviderConfiguration": [
{
"provider": "prov1",
"Event": [
{
"id": 1
},
{
"id": 2,
"eventDestination": "dest1"
}
],
"DefaultEvents": {
"eventDestination": "DefaultEventDestination",
"sinks": ""
}
},
{
"provider": "prov2",
"DefaultEvents": {
"eventDestination": "dest2"
}
}
]
Этот код создает четыре таблицы:
| Мероприятие | Имя таблицы |
|---|---|
| provider="prov1" <Event id="1" /> | WADEvent+MD5("prov1")+"1" |
| provider="prov1" <Event id="2" eventDestination="dest1" /> | WADdest1 |
| provider="prov1" <СобытияПоУмолчанию /> | WADDefault+MD5("prov1") |
| provider="prov2" <DefaultEvents eventDestination="dest2" /> | WADdest2 |
Ссылки
Ознакомьтесь со следующими ссылками
Проверка конфигурации расширения диагностики
Самый простой способ проверить конфигурацию расширения — перейти в Обозреватель ресурсов Azure. Затем перейдите к виртуальной машине или облачной службе, где находится расширение диагностики (IaaSDiagnostics / PaaDiagnostics).
Кроме того, удаленный рабочий стол на компьютере и просмотрите файл конфигурации диагностики, описанный в разделе пути к артефактам журнала.
В любом случае найдите поле Microsoft.Azure.Diagnostics и xmlCfg или WadCfg .
Если выполняется поиск на виртуальной машине и поле WadCfg присутствует, это означает, что конфигурация находится в формате JSON. Если поле xmlCfg присутствует, это означает, что конфигурация находится в ФОРМАТЕ XML и закодирована в кодировке Base64. Необходимо декодировать его , чтобы увидеть XML-файл, загруженный диагностикой.
Для роли облачной службы, если выбрать конфигурацию на диске, данные закодированы в кодировке Base64. Необходимо декодировать его , чтобы увидеть XML-файл, загруженный диагностикой.
коды выхода Диагностика Azure подключаемых модулей
Подключаемый модуль возвращает следующие коды выхода:
| Код выхода | Описание |
|---|---|
| 0 | Успех. |
| -1 | Общая ошибка. |
| -2 | Невозможно загрузить RCF-файл. Эта внутренняя ошибка должна возникать только в том случае, если средство запуска подключаемого модуля гостевого агента вручную вызывается неправильно на виртуальной машине. |
| -3 | Не удается загрузить файл конфигурации диагностики. Решение. Это вызвано тем, что файл конфигурации не прошел проверку схемы. Следует предоставить файл конфигурации, соответствующий схеме. |
| -4 | Другой экземпляр системы диагностики агента мониторинга уже использует локальный каталог ресурсов. Решение. Укажите другое значение для LocalResourceDirectory. |
| -6 | Средство запуска подключаемого модуля гостевого агента попыталось запустить диагностику с недопустимой командной строкой. Эта внутренняя ошибка должна возникать только в том случае, если средство запуска подключаемого модуля гостевого агента вручную вызывается неправильно на виртуальной машине. |
| -10 | Подключаемый модуль диагностики завершился с необработанным исключением. |
| -11 | Гостевому агенту не удалось создать процесс, ответственный за запуск и мониторинг агента мониторинга. Решение. Убедитесь, что доступных системных ресурсов достаточно для запуска новых процессов. |
| –101 | Недопустимые аргументы при вызове подключаемого модуля диагностики. Эта внутренняя ошибка должна возникать только в том случае, если средство запуска подключаемого модуля гостевого агента вручную вызывается неправильно на виртуальной машине. |
| -102 | Процесс подключаемого модуля не может инициализировать себя. Решение. Убедитесь, что доступных системных ресурсов достаточно для запуска новых процессов. |
| 103 | Процесс подключаемого модуля не может инициализировать себя. В частности, не удается создать объект средства ведения журнала. Решение. Убедитесь, что доступных системных ресурсов достаточно для запуска новых процессов. |
| 104 | Не удалось загрузить RCF-файл, предоставленный гостевым агентом. Эта внутренняя ошибка должна возникать только в том случае, если средство запуска подключаемого модуля гостевого агента вручную вызывается неправильно на виртуальной машине. |
| -105 | Подключаемый модуль диагностики не может открыть файл конфигурации диагностики. Эта внутренняя ошибка должна возникать только в том случае, если подключаемый модуль диагностики вызывается неправильно на виртуальной машине. |
| –106 | Не удается прочитать файл конфигурации диагностики. Это вызвано тем, что файл конфигурации не прошел проверку схемы. |
| -107 | Недопустимая передача каталога ресурсов в агент мониторинга. Эта внутренняя ошибка может возникать, только если агент мониторинга вызван вручную, неправильно и на виртуальной машине. |
| -108 | Не удалось преобразовать файл конфигурации системы диагностики в файл конфигурации агента мониторинга. Эта внутренняя ошибка должна возникать только в том случае, если подключаемый модуль диагностики вызывается вручную с недопустимым файлом конфигурации. |
| -110 | Общая ошибка конфигурации системы диагностики. Эта внутренняя ошибка должна возникать только в том случае, если подключаемый модуль диагностики вызывается вручную с недопустимым файлом конфигурации. |
| -111 | Не удалось запустить агент мониторинга. Решение. Убедитесь, что доступен достаточный объем системных ресурсов. |
| -112 | Общая ошибка. |
Извлечение локального журнала
Агент мониторинга сохраняет данные журналов и артефактов как файлы с расширением .tsf. Файл .tsf недоступен для чтения, но его можно преобразовать в следующее .csv :
<Azure diagnostics extension package>\Monitor\x64\table2csv.exe <relevantLogFile>.tsf
После этого создается файл <relevantLogFile>.csv в том же расположении, что и соответствующий файл TSF (.tsf).
Примечание.
Эту программу необходимо запустить только для основного .tsf файла (например, PerformanceCountersTable.tsf). Сопровождающие файлы (например, PerformanceCountersTables_\*\*001.tsf) PerformanceCountersTables_\*\*002.tsfобрабатываются автоматически.
Дополнительные сведения об отсутствии журналов трассировки
Примечание.
Следующие сведения применяются в основном к Azure Облачные службы, если вы не настроили DiagnosticsMonitorTraceListener приложение, работающее на виртуальной машине IaaS.
- Убедитесь, что DiagnosticMonitorTraceListener настроен в web.config или app.config. Это средство настраивается по умолчанию в проектах облачных служб. Однако некоторые клиенты комментируют его, что приводит к тому, что инструкции трассировки не собираются диагностикой.
- Если журналы не записываются из метода OnStart или Run, убедитесь, что DiagnosticMonitorTraceListener находится в app.config. По умолчанию он находится в web.config, но это применяется только к коду, работающему в w3wp.exe. Для выполнения этого в app.config требуется записать трассировки, выполняемые в WaIISHost.exe.
- Убедитесь, что вы используете Diagnostics.Trace.TraceXXX вместо Diagnostics.Debug.WriteXXX. Инструкции отладки удаляются из финальной сборки.
- Убедитесь, что скомпилированный код фактически содержит строки Diagnostics.Trace. Используйте Отражатель, ildasm или ILSpy для проверки. Команды Diagnostics.Trace удаляются из скомпилированного двоичного файла, если не используется символ условной компиляции TRACE. Эта распространенная проблема возникает при использовании MSBuild для создания проекта.
Известные проблемы и устранения рисков
Ниже перечислены известные проблемы, связанные с устранением рисков.
Зависимость .NET 4.5
Расширение Диагностика Azure для Windows зависит от платформа .NET Framework 4.5 или более поздней версии. На момент написания записи все компьютеры, подготовленные для Azure Облачные службы, и все официальные образы, основанные на виртуальных машинах Azure, установили .NET 4.5 или более поздней версии.
По-прежнему можно столкнуться с ситуацией, когда вы пытаетесь запустить расширение Диагностика Azure для Windows на компьютере, который не имеет .NET 4.5 или более поздней версии. Эта ситуация возникает при создании компьютера на основе старого образа или моментального снимка или при переносе собственного пользовательского диска.
Эта проблема обычно манифестирует как код выхода 255 при запуске DiagnosticsPluginLauncher.exe. Сбой происходит из-за следующего необработанного исключения:
System.IO.FileLoadException: Could not load file or assembly 'System.Threading.Tasks, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies
Устранение проблемы: Установите .NET 4.5 или более позднюю версию на компьютере.
Данные счетчиков производительности доступны в хранилище, но не отображаются на портале
Интерфейс портала на виртуальных машинах показывает определенные счетчики производительности по умолчанию. Если счетчики производительности не отображаются, и вы знаете, что данные создаются, так как они доступны в хранилище, обязательно проверьте следующее:
Указаны ли имена счетчиков в хранилище на английском. Если имена счетчиков не заданы на английском языке, диаграмма метрик портала не распознает ее.
- Снижение рисков: измените язык системы на английский для системных учетных записей. Для этого выберите Панель управления>Регион>Административные>Копировать параметры. Затем снимите экран приветствия и системные учетные записи , чтобы пользовательский язык не применялся к системной учетной записи.
Если вы используете подстановочные знаки (*) в именах счетчиков производительности, портал не может сопоставить настроенный и собранный счетчик при отправке счетчиков производительности в приемник служба хранилища Azure.
- Устранение рисков. Чтобы убедиться, что вы можете использовать подстановочные знаки и развернуть портал (*), перенаправьте счетчики производительности в приемник Azure Monitor.