2016-08-24 3 views
2

ある(メッセージ、eventmessage。)サービスファブリックETWログ私達はちょうどサービスファブリックを使用して開始しているとだけ痛みのポイントは、これまで常に不足しているデータにログアウトするようだWADとETW、されている常に不完全

当社これまでのところVisual Studio(いつでもプロバイダ名を追加する必要があります)で動作し、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で取得したものです。

Logs in storage explorer

.NET 4.5.2/.NETのコアを実行します。

助けてください。

EDIT - さて、.NET 4.6への移行に成功しました。メッセージのペイロードがログアウトしているかのように見えます。私たちが今見逃しているのは、イベントメッセージフィールドだけです。また、 "メッセージ"フィールドは現在VSで常にnullとなっているようです。

EDIT2 - EventSourceSettings.EtwSelfDescribingEventFormatをイベントソースのコンストラクタ引数として使用すると、次のようなメッセージフィールドが表示されないようです。これは、WADのVS &の場合のようです。ノーeventmessageの間で選択するか(自己が記述)やマニフェストのスタイルを使用する場合の方法(バージョンすることができないとしても、属性をインクリメントして、空行がまだWADに投棄されている瞬間に

public sealed class ApiEventSource : EventSource 
{ 
    public ApiEventSource() : base(EventSourceSettings.EtwSelfDescribingEventFormat) {} 
} 

+0

WADが受け取っていないメッセージの例を共有できますか?内部に特殊文字がありますか? –

+0

@KarolZ私たちの場合、それはすべてのメッセージでした - 単純には "Performing X with Y"です。ここでYは単純な型の値です。いくつかは、私が読んだ完全に修飾されたURLは、より良いhtmlエンコードされます。私たちは4.6に切り替わりました、そして今、もっと良く見える自己記述イベントソースを使用しています - ここでは、イベントメッセージとactivityIdが欠落しています - https:// blogsに記載されているStart/Stopを使ってみました。 msdn.microsoft.com/vancem/2015/09/14/exploring-eventsource-activity-correlation-and-causation-featuresしかし、何も自動生成されていないようです。 – Nosmadas

+0

タスクアクティビティIDは、コンシューマ側で適切な有効化と復号化が必要です。VS診断データビューアは現在これを行っていませんが、修正する作業の中にFabricツールのリリースがあります。私はWADでこれをサポートしているかどうか調べて、こちらのコメントに投稿します –

答えて

0

自己記述ETWは現在、EventAttribute.Messageプロパティをサポートするように設計されていません。メッセージはマニフェストベースの概念です(イベントには記録されず、マニフェストに配置されます)。マニフェストでは、Messageプロパティは実質的に無視されます。

自己記述ETWイベントに関連付けられたメタデータにメッセージ文字列を保持できるようにするが、現在は存在せずETWへの変更が必要となる。

メッセージをペイロードに埋め込むだけで、問題を回避することができます。

関連する問題