2017-05-14 7 views
2

Azureファブリッククラスタでコードを実行しているマシンの名前をログに記録するにはどうすればよいですか?私のコードが紺色のファブリックサービスで実行されているノードの名前を取得する方法は?

いくつかのノードを持つファブリッククラスタでC#コードを実行しています。マシン名とともにいくつかの情報を記録したいと思います。私はFabricRuntimeを使用していますが、それは私を助けていません。これを行う最善の方法は何ですか?

ありがとうございました。

答えて

3

ServiceContextNodeContextプロパティを使用します。

したがって、サービス(ステートフルまたはステートレスのいずれか)またはアクターサービスのコンテキストでは、context.NodeContext.NodeNameを呼び出してノード名を取得できます。

ServiceContextには、多くのoherプロパティもあり、ロギングに役立ちます。

ノードとサービスの詳細の取得の完全な例については、this repoを参照してください。

0

私は同じ状況に直面していました。ファブリッククライアントを使用すると非常に役に立ちました。私は今それを使用することを学んでいるので、答えには広範な詳細が不足しているかもしれません。 これは、あなたがさらにthisリンクについての詳細を見つけると要件

var fabricClient = new FabricClient(); 
    var apps = fabricClient.QueryManager.GetApplicationListAsync().Result; 
    foreach (var app in apps) 
    { 
     System.Diagnostics.Debug.WriteLine($"Discovered application:'{app.ApplicationName}"); 

     var services = fabricClient.QueryManager.GetServiceListAsync(app.ApplicationName).Result; 
     foreach (var service in services) 
     { 
      System.Diagnostics.Debug.WriteLine($"Discovered Service:'{service.ServiceName}"); 

      var partitions = fabricClient.QueryManager.GetPartitionListAsync(service.ServiceName).Result; 
      if (service.ServiceKind != System.Fabric.Query.ServiceKind.Stateful) 
      { 
       continue; 
      } 
    } 

それは必要な情報のためのサービス・ファブリックを照会で非常に有用であるに応じてそれを使用することができ、サンプルコードです。ノードの場合は、このようなクエリマネージャを使用してクエリを実行し、ノード情報をさらに深くクエリすることができます。

var nodes = fabricClient.QueryManager.GetNodeListAsync().Result;

私はそれは同じ質問にはまだ私のような他の誰かに役立ちます願っています。

関連する問題