Мы только начали использовать Service Fabric и только болевые точки до сих пор был ETW с ВАД, который всегда кажется, чтобы выйти с недостающими данными (сообщения, EventMessage.)Service Fabric ETW Журналы всегда неполны
Наша опыт показывает, что он всегда работает в visual studio (иногда вам нужно добавить имя провайдера) и что он редко работает при развертывании в кластере в Azure. Когда он работает в Azure - версия &, обновляющая функцию источника события или добавляя другую, выйдет с пустыми точками данных.
Это раздел, который мы имеем в нашем сценарии ARM для ETW/WAD, который мы развертываем с использованием Azure CLI.
"name": "[concat('VMDiagnosticsVmExt','_vmNodeType0Name')]",
"properties": {
"type": "IaaSDiagnostics",
"autoUpgradeMinorVersion": true,
"protectedSettings": {
"storageAccountName": "[parameters('applicationDiagnosticsStorageAccountName')]",
"storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('applicationDiagnosticsStorageAccountName')),'2015-05-01-preview').key1]",
"storageAccountEndPoint": "https://core.windows.net/"
},
"publisher": "Microsoft.Azure.Diagnostics",
"settings": {
"WadCfg": {
"DiagnosticMonitorConfiguration": {
"overallQuotaInMB": "50000",
"EtwProviders": {
"EtwEventSourceProviderConfiguration": [
{
"provider": "Microsoft-ServiceFabric-Actors",
"scheduledTransferKeywordFilter": "1",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricReliableActorEventTable"
}
},
{
"provider": "Microsoft-ServiceFabric-Services",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricReliableServiceEventTable"
}
},
{
"provider": "Company-Project-API",
"scheduledTransferPeriod": "PT1M",
"DefaultEvents": {
"eventDestination": "ApiEventTable"
}
}
],
"EtwManifestProviderConfiguration": [
{
"provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8",
"scheduledTransferLogLevelFilter": "Information",
"scheduledTransferKeywordFilter": "4611686018427387904",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricSystemEventTable"
}
}
]
}
}
},
"StorageAccount": "[parameters('applicationDiagnosticsStorageAccountName')]"
},
"typeHandlerVersion": "1.5"
}
Это наш источник событий, хотя мы пробовали массу вариаций.
using Microsoft.Diagnostics.Tracing;
namespace Project.API
[EventSource(Name = "Company-Project-API")]
public sealed class ApiEventSource : EventSource
{
public static ApiEventSource Current = new ApiEventSource();
[Event(1, Level = EventLevel.Informational, Message = "{0}", Version = 1)]
public void Log(string message)
{
this.WriteEvent(1, message);
}
}
Это то, что мы получаем в WAD каждый раз.
Запуск .NET ядро 4.5.2/.net.
Пожалуйста, помогите.
EDIT - Хорошо, мы достигли некоторого успеха, перейдя к .NET 4.6 - похоже, что полезная нагрузка сообщения вышла из системы. Все, что нам не хватает, это поле eventmessage. Также кажется, что поле «сообщение» всегда имеет значение null в VS.
EDIT2 - Кажется, что поле сообщения отсутствует при использовании EventSourceSettings.EtwSelfDescribingEventFormat в качестве аргумента конструктора для источника событий, как показано ниже. Это похоже на VS & в WAD.
public sealed class ApiEventSource : EventSource
{
public ApiEventSource() : base(EventSourceSettings.EtwSelfDescribingEventFormat) {}
}
На данный момент я могу либо выбирать между не EventMessage (Self Описывая) или нет возможности версии методы (даже с приращением атрибута, пустые строки по-прежнему сбрасываются в ВАД при использовании манифеста стиля.
Можете ли вы поделиться примером сообщения, которое не получает WAD? Любые специальные символы внутри? –
@ KarolZ В нашем случае это были все сообщения - некоторые были просто «Выполнение X с Y», где Y было бы значением простого типа. Некоторые из них будут полностью квалифицированными URL-адресами, которые я прочитал, были бы лучше закодированы html. Мы перешли на 4.6 и теперь используем сам описывающий источник событий, который кажется намного лучше - теперь мы просто пропускаем eventmessage и activityId - мы пытались использовать Start/Stop, как упоминалось здесь https: // blogs. msdn.microsoft.com/vancem/2015/09/14/exploring-eventsource-activity-correlation-and-causation-features, но ничего не создается автоматически. – Nosmadas
Идентификаторы активности задачи требуют правильного включения и декодирования на стороне потребителя.В настоящее время просмотрщик данных диагностики VS не делает этого, но у нас есть выпуск инструментов Fabric в работах, которые его исправят. Я спрошу о поддержке этого в WAD и опубликую здесь комментарии –