#azure-storage #azure-diagnostics
#azure-хранилище #azure-диагностика
Вопрос:
Я использую Azure sdk 1.4 и пытаюсь настроить диагностику в своей веб-роли. Вот что я сделал в методе onstart веб-роли:
string wadConnectionString = "Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(wadConnectionString));
RoleInstanceDiagnosticManager roleInstanceDiagnosticManager = storageAccount.CreateRoleInstanceDiagnosticManager(RoleEnvironment.DeploymentId,
RoleEnvironment.CurrentRoleInstance.Role.Name, RoleEnvironment.CurrentRoleInstance.Id);
DiagnosticMonitorConfiguration config = DiagnosticMonitor.GetDefaultInitialConfiguration();
int loggingInterval = Int32.Parse(RoleEnvironment.GetConfigurationSettingValue("loggingInterval"));
config.Logs.ScheduledTransferPeriod = System.TimeSpan.FromMinutes(loggingInterval);
config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Undefined;
roleInstanceDiagnosticManager.SetCurrentConfiguration(config);
// For information on handling configuration changes
// see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.
RoleEnvironment.Changing = RoleEnvironmentChanging;
Теперь, когда я запускаю это в эмуляторе облака на моем компьютере разработчика — все работает нормально, я вижу, что журналы поступают в таблицу WADLOG. Я установил «Microsoft.WindowsAzure.Плагины.Диагностика.Значение ConnectionString» в моем файле cscfg должно быть «UseDevelopmentStorage = true». Когда я публикую свою веб-роль в облаке Azure, я устанавливаю это значение конфигурации, чтобы правильно указывать на правильную учетную запись хранилища:
WindowsAzure.Плагины.Диагностика.ConnectionString» значение=»DefaultEndpointsProtocol= https; AccountName=acctname; AccountKey=acctKey» />
Однако мои журналы веб-ролей никогда не отображаются в облаке Azure. Когда я запускаю облачное приложение на эмуляторе и указываю строку подключения диагностики к текущему облачному хранилищу, даже тогда я могу получить диагностику. Может кто-нибудь дать мне знать, что происходит?
Капил
Ответ №1:
Это звучит немного странно. Я хочу указать на различие между просмотром журналов в консоли эмулятора (devFabric) и сохранением журналов в учетной записи хранилища. Если вы можете просматривать журналы, хранящиеся в учетной записи хранилища, когда вы указываете свою службу на учетную запись облачного хранилища, но запускаете службу локально в локальном эмуляторе, то, я полагаю, вы недостаточно ждете после публикации своей службы. Процесс, который запускается для отправки журналов из вашего экземпляра роли в вашу учетную запись хранилища, иногда занимает больше времени, чем ожидалось, я предлагаю подождать немного дольше, прежде чем запрашивать хранилище таблиц
Комментарии:
1. Парень, я обычно запрашиваю через долгое время — обычно через день
2. О, одного дня более чем достаточно. Тогда я предполагаю, что следующий подозреваемый — это учетные данные учетной записи хранилища. Я не хочу вас обидеть 🙂 но я лично совершал эту ошибку несколько раз. Убедитесь, что строка подключения отформатирована правильно, без пробелов после ключа. Происходит ли сбой вашего сервиса в облачной среде?