Что происходит с диагностической информацией Azure, когда роль останавливается? - PullRequest
6 голосов
/ 21 апреля 2011

Когда рабочая роль Azure останавливается (либо из-за необработанного исключения, либо из-за завершения Run ()), что происходит с локальной диагностической информацией, которая еще не была передана? Документация Microsoft говорит, что диагностика передается в хранилище через запланированные интервалы или по требованию, ни одно из которых не может охватывать необработанное исключение. Означает ли это, что диагностическая информация всегда теряется в этом случае? Это кажется особенно странным, потому что аварийные дампы являются частью диагностических данных (по умолчанию устанавливается в DiagnosticMonitorConfiguration.Directories). Как тогда вы можете получить аварийный дамп обратно (связанный с этим вопросом )?

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

Ответы [ 3 ]

1 голос
/ 28 апреля 2011

Это зависит от того, что вы подразумеваете под «остановкой роли».Диагностический монитор в SDK 1.3 и более поздних версиях реализован как фоновая задача, которая не зависит от RoleEntryPoint.Таким образом, если вы имеете в виду, что ваша RoleEntryPoint сообщает о своем нездоровом состоянии или о чем-то подобном, то ваш DiagnosticMonitor (DM) все равно будет реагировать и отправлять данные в соответствии с конфигурацией, которую вы настроили.

Однако, если вы имеете в видучто остановка роли - это операция уменьшения (выключение виртуальной машины), то нет, данные на диске не сбрасываются.В этот момент ВМ выключается, а ДМ вместе с ним.Все, что еще не было сброшено (передано), можно считать потерянным.

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

HTH.

0 голосов
/ 27 апреля 2011

Я думаю, что это работает так: локальные диагностические данные хранятся в локальном хранилище с именем «DiagnosticStore», которое, как я полагаю, для cleanOnRoleRecycle установлено в false.(Я не знаю, как проверить этот последний бит - у LocalResource нет соответствующего атрибута.) Когда роль перезагружается, данные остаются на месте и в конечном итоге будут загружены новым диагностическим монитором (при условии, что роль не продолжает падать доэто может закончиться).

0 голосов
/ 21 апреля 2011

Диагностические данные хранятся локально до их передачи в хранилище.Так что эта информация доступна вам там;Вы можете проверить / проверить это с помощью RDP, чтобы проверить это.

Я, честно говоря, не проверял, будет ли он передан после прекращения роли.Тем не менее, вы можете запросить переводы по запросу.Таким образом, используя этот подход, вы можете запросить перенос журналов / дампов еще раз после остановки роли.

Я бы предложил проверить инструмент, подобный Cerebrata Azure Diagnostics Manager , чтобы запроситьпо требованию перенесите ваши логи, а также проанализируйте данные.

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

Надеюсь, это поможет

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