Возможна ли в настоящее время потоковая передача ETW из расширения диагностики кластера Service Fabric в концентраторы событий?

В настоящее время мы работаем над реализацией передачи диагностических потоков в концентраторы событий:

введите описание изображения здесь

Я добавил расширение диагностики в кластер Service Fabric с помощью шаблона ARM, и в настоящее время он выводится в хранилище Azure. Теперь мне нужно настроить приемник для концентратора событий.

Я следил за этим публикацией , в котором описывается, как добавить узел SinksConfig в файл Diagnostics.wadcfgx:

введите описание изображения здесь

Однако кажется, что это справедливо только для проектов Azure Cloud Service? В проекте облачной службы кажется довольно простым добавить файл конфигурации, перейдя к свойствам роли и нажав «Включить диагностику», чтобы создать файл:

введите описание изображения здесь

Однако с проектом Service Fabric это невозможно сделать, поскольку отсутствует понятие веб-роли, и, похоже, в свойствах проекта SF нет места, где можно включить диагностику или добавить файл wadcfgx.

Я добавил расширение диагностики к виртуальным машинам в масштабируемом наборе, добавив в шаблон ARM следующее:

введите описание изображения здесь

Я вижу, где здесь определена учетная запись хранения (куда в настоящее время выполняется потоковая передача ETW), но я не могу найти руководство по указанию концентратора событий?

Мне было интересно, было ли это просто потому, что это нигде не задокументировано, или потому, что это пока невозможно с Service Fabric. Эта статья от июля, заявляет следующее:

введите описание изображения здесь

Похоже, это указывает на то, что в настоящее время эта функция может быть доступна или недоступна для Service Fabric.

Резюме

Тогда есть 2 основных вопроса:

  1. Можно ли в настоящее время настроить потоковую передачу ETW из кластера Service Fabric (с включенным расширением диагностики) в концентратор событий? Если нет, то как далеко?
  2. Если это возможно, то как его настроить? Если он должен быть определен в шаблоне ARM, как определено выше, каков его синтаксис?

person Declan McNulty    schedule 12.10.2016    source источник


Ответы (2)


Взгляните на этот пример. Вацлав создал прослушиватели событий для различных типов магазинов. Убедитесь, что вы включили пакет Nuget «Microsoft.Diagnostics.Tracing.EventSource» и заменили «System.Diagnostics.Tracing» на «Microsoft.Diagnostics.Tracing» в ваших ServiceEventSource классах. Зарегистрируйте поставщиков событий в своем шаблоне ARM, как показано здесь.

person LoekD    schedule 13.10.2016
comment
Спасибо за это, подход, который вы здесь упомянули, действительно работает, но я хотел добиться того, чтобы диагностика погружалась в концентратор событий с помощью конфигурации, как описано здесь azure.microsoft.com/en-us/documentation/articles/, а не прослушиватель в само решение, проблема в том, что это пока не представляется возможным в Service Fabric - person Declan McNulty; 13.10.2016

После долгих проб и ошибок оказалось, что есть два способа сделать это.

Шаги из Visual Studio:

  1. Найдите свой масштабируемый набор в Cloud Explorer

  2. Выберите Обновить диагностику

  3. Запишите текущую используемую учетную запись хранения
  4. Редактируйте общедоступные и частные файлы конфигурации для приемников Event Hub и учетной записи хранения.
  5. Обновите диагностику и выберите обновление на основе новых файлов конфигурации.

Общедоступная конфигурация (для краткости показан только узел SinksConfig)

{
 "WadCfg": {
     "DiagnosticMonitorConfiguration": {

     *** config for performance counters and ETW ***

       "SinksConfig": {
            "Sink": [
             {
               "name": "eventhub",
               "EventHub": {
               "Url": "https://myhub.servicebus.windows.net/mycompanyapplication",
               "SharedAccessKeyName": "RootManageSharedAccessKey"
             }
           }
         ]
       }
     },
    "StorageAccount": "<storageaccount>"
}  

и приватная конфигурация:

{
   "storageAccountName": "<storageaccountname>",
   "storageAccountKey": "<storageaccountkey>",
   "storageAccountEndPoint": "https://core.windows.net",
   "EventHub": {
         "Url": "https://myhub.servicebus.windows.net/mycompanyapplication",
         "SharedAccessKeyName": "RootManageSharedAccessKey",
         "SharedAccessKey": "<sharedaccesskey>"
   }
}

Или эту конфигурацию можно сделать частью шаблона ARM, скопировав json из общедоступной конфигурации в узел «Настройки» ресурса VMDiagnosticsSettings (пример определения ресурса здесь), а приватный конфиг копируется в "protectedsettings" узел.

person Declan McNulty    schedule 19.10.2016
comment
Можно ли писать только в Eventhub? В EtwEventSourceProviderConfiguration мы определили назначение нескольких поставщиков событий как Storage Table, а для других мы настроили приемник концентратора событий. Но мы заметили, что WAD отправляет журналы от всех поставщиков событий в TableStorage. Это ожидаемое поведение? Для провайдеров, для которых мы настроили приемник EventHub, можем ли мы запретить запись журналов в таблицу хранения? - person Pratik Mehta; 10.04.2017