우리는 단지 서비스 패브릭 지금까지 항상 누락 된 데이터와 로그 아웃 것으로 보인다 뭉치와 ETW 된 경우에만 통증이 포인트를 사용하기 시작했습니다 (메시지, eventmessage합니다.)서비스 패브릭 ETW 로그는 항상
우리의 불완전 지금까지는 시각 스튜디오에서 항상 작동하며 (때때로 공급자 이름을 추가해야 함) Azure의 클러스터에 배포 할 때 거의 작동하지 않습니다. Azure에서 작동 할 때 - & 이벤트 소스에서 함수를 업데이트하거나 다른 것을 추가하면 빈 데이터 포인트로 로그 아웃됩니다.
이것은 Azure CLI를 사용하여 배포하는 ETW/WAD 용 ARM 스크립트에있는 섹션입니다.
"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"
}
우리는 다양한 변형을 시도했지만 이것은 우리의 EventSource입니다.
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 필드입니다. 또한 "메시지"필드가 이제 VS에서 항상 null 인 것 같습니다.
EDIT2 - EventSourceSettings.EtwSelfDescribingEventFormat을 아래의 이벤트 소스에 대한 생성자 인수로 사용하면 메시지 입력란이 누락 된 것으로 보입니다. 이것은 WAD에서 VS &의 경우 인 것으로 보입니다. 매니페스트 스타일을 사용할 때 더 eventmessage 방법 (심지어 속성을 증가와 버전 수있는 (자기가 묘사) 여부를 선택할 수 있습니다 순간
public sealed class ApiEventSource : EventSource
{
public ApiEventSource() : base(EventSourceSettings.EtwSelfDescribingEventFormat) {}
}
은 빈 줄은 여전히 뭉치로 덤프됩니다.
WAD에서 가져 오지 않은 메시지의 예를 공유 할 수 있습니까? 특수 문자가 안에 있습니까? –
@KarolZ 우리의 경우 모든 메시지였습니다 - 일부는 단순히 "Y와 함께 X 수행"이었습니다. 여기서 Y는 간단한 유형의 값이됩니다. 일부는 내가 읽는 정규화 된 URL이 더 나은 html로 인코딩 될 것입니다. 우리는 4.6으로 전환했고 현재 더 잘 보이는 자체 기술 이벤트 소스를 사용하고 있습니다. 이제는 이벤트 메시지와 activityId가 누락되었습니다. https : // blogs에서 언급 한 시작/중지를 사용해 보았습니다. msdn.microsoft.com/vancem/2015/09/14/exploring-eventsource-activity-correlation-and-cause-features하지만 자동 생성 된 것으로 보이지는 않습니다. – Nosmadas
작업 활동 ID는 소비자 측에서 적절한 활성화 및 디코딩이 필요합니다.VS 진단 데이터 뷰어는 현재이 작업을 수행하지 않지만 해결할 작업에 패브릭 도구가 릴리스됩니다. WAD에서이 문제에 대한 지원에 대해 문의하고 여기에 의견을 게시하십시오 –