Windows Azure diagnosotics не работает в облаке

#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. О, одного дня более чем достаточно. Тогда я предполагаю, что следующий подозреваемый — это учетные данные учетной записи хранилища. Я не хочу вас обидеть 🙂 но я лично совершал эту ошибку несколько раз. Убедитесь, что строка подключения отформатирована правильно, без пробелов после ключа. Происходит ли сбой вашего сервиса в облачной среде?