Azure Web ロールで SignalR パフォーマンス カウンターの使用Using SignalR performance counters in an Azure Web Role

作成者: Luke LathamBy Luke Latham

Warning

このドキュメントは SignalR の最新バージョンはありません。This documentation isn't for the latest version of SignalR. 見てASP.NET Core SignalRします。Take a look at ASP.NET Core SignalR.

SignalR パフォーマンス カウンターは、Azure Web ロールで、アプリのパフォーマンスを監視するために使用されます。SignalR performance counters are used to monitor your app's performance in an Azure Web Role. カウンターは、Microsoft Azure Diagnostics によってキャプチャされます。The counters are captured by Microsoft Azure Diagnostics. Azure で SignalR パフォーマンス カウンターをインストールするsignalr.exeを同じツールをスタンドアロンまたはオンプレミスのアプリで使用します。You install SignalR performance counters on Azure with signalr.exe, the same tool used for standalone or on-premises apps. Azure ロールでは、一時的なものであるために、アプリをインストールし、起動時に SignalR パフォーマンス カウンターの登録を構成します。Since Azure roles are transient, you configure an app to install and register SignalR performance counters upon startup.

必須コンポーネントPrerequisites

SignalR パフォーマンス カウンターを公開する Azure Web ロールのアプリケーションの作成Creating an Azure Web Role application that exposes SignalR performance counters

  1. Visual Studio を開きます。Open Visual Studio.

  2. Visual Studio で、[ファイル] > [新規作成] > [プロジェクト] の順に選択します。In Visual Studio, select File > New > Project.

  3. 新しいプロジェクトダイアログ ボックスで、 Visual c# > クラウド、左側のカテゴリを選び、 Azure クラウド サービステンプレート。In the New Project dialog box, select the Visual C# > Cloud category on the left, and then select the Azure Cloud Service template. アプリの名前を付けますSignalRPerfCounters選択 [ok] します。Name the app SignalRPerfCounters and select OK.

    新しいクラウド アプリケーション

    Note

    表示されない場合、クラウドテンプレートのカテゴリまたはAzure クラウド サービステンプレートをインストールする必要があります、 Azure 開発for Visual Studio 2017 のワークロード。If you don't see the Cloud template category or the Azure Cloud Service template, you need to install the Azure development workload for Visual Studio 2017. 選択、 Visual Studio インストーラーを開くの左下にあるリンク、新しいプロジェクトダイアログが Visual Studio インストーラーを開きます。Choose the Open Visual Studio Installer link on the bottom-left side of the New Project dialog to open Visual Studio Installer. 選択、 Azure 開発ワークロードを選び、変更ワークロードのインストールを開始します。Select the Azure development workload, and then choose Modify to start installing the workload.

    Visual Studio インストーラーでの azure 開発ワークロード

  4. 新しい Microsoft Azure クラウド サービスダイアログ ボックスで、 ASP.NET Web ロールを選択し、>、ロールをプロジェクトに追加するボタンをクリックします。In the New Microsoft Azure Cloud Service dialog, select ASP.NET Web Role and select the > button to add the role to the project. [OK] を選択します。Select OK.

    ASP.NET Web ロールを追加します。

  5. 新しい ASP.NET Web アプリケーション - WebRole1ダイアログ ボックスで、 MVCテンプレート、および選択しOKIn the New ASP.NET Web Application - WebRole1 dialog, select the MVC template, and then select OK.

    MVC と Web API を追加します。

  6. ソリューション エクスプ ローラー、オープン、 diagnostics.wadcfgxファイルWebRole1します。In Solution Explorer, open the diagnostics.wadcfgx file under WebRole1.

    ソリューション エクスプ ローラーの場合は diagnostics.wadcfgx

  7. ファイルの内容を置き換えて、次の構成をファイルを保存します。Replace the contents of the file with the following configuration and save the file:

    <?xml version="1.0" encoding="utf-8"?>
    <DiagnosticsConfiguration xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
      <PublicConfig>
        <WadCfg>
          <DiagnosticMonitorConfiguration overallQuotaInMB="4096">
            <DiagnosticInfrastructureLogs scheduledTransferLogLevelFilter="Error" />
            <Logs scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Error" />
            <Directories scheduledTransferPeriod="PT1M">
              <IISLogs containerName ="wad-iis-logfiles" />
              <FailedRequestLogs containerName ="wad-failedrequestlogs" />
            </Directories>
            <WindowsEventLog scheduledTransferPeriod="PT1M">
              <DataSource name="Application!*[System[(Level=1 or Level=2 or Level=3)]]" />
              <DataSource name="Windows Azure!*[System[(Level=1 or Level=2 or Level=3 or Level=4)]]" />
            </WindowsEventLog>
            <CrashDumps containerName="wad-crashdumps" dumpType="Mini">
              <CrashDumpConfiguration processName="WaIISHost.exe" />
              <CrashDumpConfiguration processName="WaWorkerHost.exe" />
              <CrashDumpConfiguration processName="w3wp.exe" />
            </CrashDumps>
            <PerformanceCounters scheduledTransferPeriod="PT1M">
              <PerformanceCounterConfiguration counterSpecifier="\Memory\Available MBytes" sampleRate="PT3M" />
              <PerformanceCounterConfiguration counterSpecifier="\Web Service(_Total)\ISAPI Extension Requests/sec" sampleRate="PT3M" />
              <PerformanceCounterConfiguration counterSpecifier="\Web Service(_Total)\Bytes Total/Sec" sampleRate="PT3M" />
              <PerformanceCounterConfiguration counterSpecifier="\ASP.NET Applications(__Total__)\Requests/Sec" sampleRate="PT3M" />
              <PerformanceCounterConfiguration counterSpecifier="\ASP.NET Applications(__Total__)\Errors Total/Sec" sampleRate="PT3M" />
              <PerformanceCounterConfiguration counterSpecifier="\ASP.NET\Requests Queued" sampleRate="PT3M" />
              <PerformanceCounterConfiguration counterSpecifier="\ASP.NET\Requests Rejected" sampleRate="PT3M" />
              <PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT3M" />
              <PerformanceCounterConfiguration counterSpecifier="\.NET CLR Memory(w3wp)\% Time in GC" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\.NET CLR Exceptions(w3wp)\# of Exceps Thrown / sec" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\.NET CLR LocksAndThreads(w3wp)\# of current logical Threads" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\.NET CLR LocksAndThreads(w3wp)\# of current physical Threads" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\.NET CLR LocksAndThreads(w3wp)\Current Queue Length" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\.NET CLR LocksAndThreads(w3wp)\Contention Rate / sec" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\.NET CLR Memory(w3wp)\# Bytes in all Heaps" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\.NET CLR Memory(w3wp)\# GC Handles" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\.NET CLR Memory(w3wp)\# of Pinned Objects" sampleRate="PT10S" />
    
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Connections Connected" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Connections Reconnected" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Connections Disconnected" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Connections Current" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Connection Messages Received Total" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Connection Messages Sent Total" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Connection Messages Received/Sec" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Connection Messages Sent/Sec" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Message Bus Messages Received Total" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Message Bus Messages Received/Sec" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Scaleout Message Bus Messages Received/Sec" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Message Bus Messages Published Total" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Message Bus Messages Published/Sec" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Message Bus Subscribers Current" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Message Bus Subscribers Total" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Message Bus Subscribers/Sec" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Message Bus Allocated Workers" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Message Bus Busy Workers" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Message Bus Topics Current" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Errors: All Total" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Errors: All/Sec" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Errors: Hub Resolution Total" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Errors: Hub Resolution/Sec" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Errors: Hub Invocation Total" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Errors: Hub Invocation/Sec" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Errors: Tranport Total" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Errors: Transport/Sec" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Scaleout Streams Total" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Scaleout Streams Open" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Scaleout Streams Buffering" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Scaleout Errors Total" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Scaleout Errors/Sec" sampleRate="PT10S" />
              <PerformanceCounterConfiguration counterSpecifier="\SignalR(*)\Scaleout Send Queue Length" sampleRate="PT10S" />
            </PerformanceCounters>
          </DiagnosticMonitorConfiguration>
        </WadCfg>
        <StorageAccount></StorageAccount>
      </PublicConfig>
      <PrivateConfig>
        <StorageAccount name="" key="" endpoint="" />
      </PrivateConfig>
      <IsEnabled>true</IsEnabled>
    </DiagnosticsConfiguration>
    
  8. 開く、パッケージ マネージャー コンソールからツール > NuGet パッケージ マネージャーします。Open the Package Manager Console from Tools > NuGet Package Manager. SignalR、SignalR ユーティリティ パッケージの最新バージョンをインストールするには、次のコマンドを入力します。Enter the following commands to install the latest version of SignalR and the SignalR utilities package:

    install-package microsoft.aspnet.signalr
    install-package microsoft.aspnet.signalr.utils
    
  9. 起動時やがリサイクルされるときに、ロール インスタンスに SignalR パフォーマンス カウンターをインストールするアプリを構成します。Configure the app to install the SignalR performance counters into the role instance when it starts up or recycles. ソリューション エクスプ ローラーを右クリックし、 WebRole1順に選択して追加 > 新しいフォルダーします。In Solution Explorer, right-click on the WebRole1 project and select Add > New Folder. 新しいフォルダーの名前スタートアップします。Name the new folder Startup.

    スタートアップ フォルダーを追加します。

  10. コピー、 signalr.exeファイル (を使用して追加、 Microsoft.AspNet.SignalR.Utilsパッケージ) から<プロジェクト フォルダー >/SignalRPerfCounters/packages/Microsoft.AspNet.SignalR.Utils< 。バージョン >/するツール、スタートアップ前の手順で作成したフォルダーです。Copy the signalr.exe file (added with the Microsoft.AspNet.SignalR.Utils package) from <project folder>/SignalRPerfCounters/packages/Microsoft.AspNet.SignalR.Utils.<version>/tools to the Startup folder you created in the previous step.

  11. ソリューション エクスプ ローラーを右クリックし、スタートアップフォルダーと選択追加 > 既存項目のします。In Solution Explorer, right-click the Startup folder and select Add > Existing Item. 表示されるダイアログ ボックスで、次のように選択します。 signalr.exe選択追加します。In the dialog that appears, select signalr.exe and select Add.

    Signalr.exe をプロジェクトに追加します。

  12. 右クリックし、スタートアップフォルダーを作成します。Right-click on the Startup folder you created. [追加] > [新しい項目] の順に選択します。Select Add > New Item. 選択、全般ノードを選択テキスト ファイル、新しい項目の名前とSignalRPerfCounterInstall.cmdします。Select the General node, select Text File, and name the new item SignalRPerfCounterInstall.cmd. このコマンド ファイルは、SignalR パフォーマンス カウンターを web ロールにインストールされます。This command file will install the SignalR performance counters into the web role.

    SignalR パフォーマンス カウンターのインストール バッチ ファイルを作成します。

  13. Visual Studio で作成すると、 SignalRPerfCounterInstall.cmdファイルが自動的に開きますのメイン ウィンドウにします。When Visual Studio creates the SignalRPerfCounterInstall.cmd file, it will automatically open in the main window. 次のスクリプトを使用して、ファイルの内容を交換し、保存して、ファイルを閉じます。Replace the contents of the file with the following script, then save and close the file. このスクリプトが実行されるsignalr.exe、ロール インスタンスに SignalR パフォーマンス カウンターを追加します。This script executes signalr.exe, which adds the SignalR performance counters to the role instance.

    SET SignalR_LogDir=%~dp0Log\
    MKDIR "%SignalR_LogDir%"
    cd %~dp0
    signalr.exe ipc >> "%SignalR_LogDir%SignalR_Log.txt" 2>&1
    net localgroup "Performance Monitor Users" "Network Service" /ADD >> "%SignalR_LogDir%NetworkAdd.txt" 2>&1
    
  14. 選択、 signalr.exeファイルソリューション エクスプ ローラーします。Select the signalr.exe file in Solution Explorer. ファイルのプロパティ設定出力ディレクトリにコピー常にコピーします。In the file's Properties, set Copy to Output Directory to Copy Always.

    コピーを常にコピーする出力ディレクトリに設定します。

  15. 前の手順を繰り返して、 SignalRPerfCounterInstall.cmdファイル。Repeat the previous step for the SignalRPerfCounterInstall.cmd file.

  16. 右クリックし、 SignalRPerfCounterInstall.cmdファイルおよび選択プログラムから開くします。Right-click on the SignalRPerfCounterInstall.cmd file and select Open With. 表示されるダイアログ ボックスで、次のように選択します。バイナリ エディター選択とOKします。In the dialog that appears, select Binary Editor and select OK.

    バイナリ エディターで開く

  17. バイナリ エディターでは、ファイルの先頭バイトを選択し、削除します。In the binary editor, select any leading bytes in the file and delete them. ファイルを保存して閉じます。Save and close the file.

    先頭バイトを削除します。

  18. 開いているServiceDefinition.csdefを実行するスタートアップ タスクを追加して、 SignalrPerfCounterInstall.cmdファイル サービスの起動時に。Open ServiceDefinition.csdef and add a startup task that executes the SignalrPerfCounterInstall.cmd file when the service starts up:

    <?xml version="1.0" encoding="utf-8"?>
    <ServiceDefinition name="SignalRPerfCounters" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6">
      <WebRole name="WebRole1" vmsize="Small">
        <Startup>
          <Task commandLine="Startup\SignalRPerfCounterInstall.cmd" executionContext="elevated" taskType="background" />
        </Startup>
        <Sites>
          <Site name="Web">
            <Bindings>
              <Binding name="Endpoint1" endpointName="Endpoint1" />
            </Bindings>
          </Site>
        </Sites>
        <Endpoints>
          <InputEndpoint name="Endpoint1" protocol="http" port="80" />
        </Endpoints>
      </WebRole>
    </ServiceDefinition>
    
  19. 開いているViews/Shared/_Layout.cshtmlと jQuery のバンドルのスクリプト ファイルの末尾から削除します。Open Views/Shared/_Layout.cshtml and remove the jQuery bundle script from the end of the file.

    <div class="container body-content">
        @RenderBody()
        <hr />
        <footer>
            <p>&copy; @DateTime.Now.Year - My ASP.NET Application</p>
        </footer>
    </div>
    
    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
    @RenderSection("scripts", required: false)
    </body>
    </html>
    
  20. 継続的に呼び出す JavaScript クライアントを追加、incrementサーバー上のメソッド。Add a JavaScript client that continuously calls the increment method on the server. 開いているViews/Home/Index.cshtml内容を次のコードに置き換えます。Open Views/Home/Index.cshtml and replace the contents with the following code:

    @{
        ViewBag.Title = "Home Page";
    }
    
    <script src="~/Scripts/jquery-1.10.2.min.js"></script>
    <script src="~/Scripts/jquery.signalR-2.2.1.min.js"></script>
    <script src="~/signalr/hubs" type="text/javascript"></script>
    
    <div id="body">
        <section class="featured">
            <div class="content-wrapper">
                <p>
                    Hello World!
                </p>
                <div style="font-size:large;">
                    My Counter: <span id="counter"></span>
                </div>
            </div>
        </section>
        <section class="content-wrapper main-content clear-fix"></section>
    </div>
    
    <script type="text/javascript">
      $(document).ready(function () {
        var hub = $.connection.myHub;
    
        hub.client.sendResult = function (x) {
          console.log('sendResult(' + x + ')');
          $("#counter").text(x);
          window.setTimeout(function () {
            hub.server.increment(x);
          }, 1000);
        };
    
        $.connection.hub.connected = function () {};
        $.connection.hub.disconnected = function () {};
    
        $.connection.hub.stateChanged(function (change) {
          console.log('new State' + change.newState);
          if (change.newState === $.signalR.connectionState.disconnected) {
            $.connection.hub.start();
          }
          if (change.newState === $.signalR.connectionState.reconnecting) {
            console.log('Re-connecting');
          } else if (change.newState === $.signalR.connectionState.connected) {
            console.log('The server is online');
          }
        });
    
        $.connection.hub.error(function (error) {
          console.log('error ' + error);
        });
        
        $.connection.hub.logging = true;
        
        $.connection.hub.reconnected(function () {
          console.log('Reconnected');
          hub.server.increment(0);
        });
    
        $.connection.hub.start().done(function () {
          console.log('hub started');
          hub.server.increment(0);
        });
      });
    </script>
    
  21. 新しいフォルダーを作成、 WebRole1という名前のプロジェクトHubsします。Create a new folder in the WebRole1 project named Hubs. 右クリックし、 Hubsフォルダーソリューション エクスプ ローラー選択と追加 > 新しい項目のRight-click the Hubs folder in Solution Explorer and select Add > New Item. 新しい項目の追加ダイアログ ボックスで、 Web > SignalRカテゴリ、および選択し、 SignalR ハブ クラス (v2) 項目テンプレート。In the Add New Item dialog box, select the Web > SignalR category, and then select the SignalR Hub Class (v2) item template. 新しいハブの名前を付けますMyHub.cs選択追加します。Name the new hub MyHub.cs and select Add.

    [新しい項目の追加] ダイアログ ボックスのハブ フォルダーに追加する SignalR ハブ クラス

  22. MyHub.csのメイン ウィンドウが自動的に開きます。MyHub.cs will automatically open in the main window. 内容を次のコードに置き換えますを保存し、ファイルを閉じます。Replace the contents with the following code, then save and close the file:

    using System.Threading.Tasks;
    using Microsoft.AspNet.SignalR;
    
    namespace WebRole1.Hubs
    {
        public class MyHub : Hub
        {
            public async Task Increment(int x)
            {
                await this.Clients.Caller.sendResult(x + 1);
            }
        }
    }
    
  23. Crank.exe 接続密度テスト SignalR コードベースで提供されるツールです。Crank.exe is a connection density testing tool provided with the SignalR codebase. Crank は、永続的な接続を必要とするために追加するサイトを使用してテストするときにします。Since Crank requires a persistent connection, you add one to your site for use when testing. 新しいフォルダーを追加、 WebRole1という名前のプロジェクトPersistentConnectionsします。Add a new folder to the WebRole1 project called PersistentConnections. このフォルダーを右クリックして追加 > クラスします。Right-click this folder and select Add > Class. 新しいクラス ファイルに名前MyPersistentConnections.cs選択追加します。Name the new class file MyPersistentConnections.cs and select Add.

  24. Visual Studio が開き、 MyPersistentConnections.csメイン ウィンドウ内のファイル。Visual Studio will open the MyPersistentConnections.cs file in the main window. 内容を次のコードに置き換えますを保存し、ファイルを閉じます。Replace the contents with the following code, then save and close the file:

    using System.Threading.Tasks;
    using Microsoft.AspNet.SignalR;
    using Microsoft.AspNet.SignalR.Infrastructure;
    
    namespace WebRole1.PersistentConnections
    {
        public class MyPersistentConnection : PersistentConnection
        {
            protected override Task OnReceived(IRequest request, string connectionId, string data)
            {
                //Return data to calling user
                return Connection.Send(connectionId, data);        
            }
        }
    }
    
  25. 使用して、Startupクラス、SignalR オブジェクトは、OWIN の起動時を起動します。Using the Startup class, the SignalR objects start when OWIN starts up. 開くか作成Startup.cs内容を次のコードに置き換えます。Open or create Startup.cs and replace the contents with the following code:

    using Microsoft.Owin;
    using Owin;
    using WebRole1.PersistentConnections;
    
    // Marks this class for automatic OWIN startup
    [assembly: OwinStartup(typeof(WebRole1.Startup))]
    namespace WebRole1
    {
        public partial class Startup
        {
            public void Configuration(IAppBuilder app)
            {
                ConfigureAuth(app);
                // Only needed if "No Authentication" was not selected for the project
                app.MapSignalR();
                app.MapSignalR<MyPersistentConnection>("/echo");
            }
        }
    }
    

    上記のコードで、OwinStartup属性は OWIN を開始するには、このクラスをマークします。In the code above, the OwinStartup attribute marks this class to start OWIN. Configurationメソッドは、SignalR を開始します。The Configuration method starts SignalR.

  26. Microsoft Azure エミュレーターでキーを押してアプリケーションをテストF5します。Test your application in the Microsoft Azure Emulator by pressing F5.

    Note

    発生した場合、 FileLoadExceptionMapSignalRでバインド リダイレクトを変更するweb.config次。If you encounter a FileLoadException at MapSignalR, change the binding redirects in web.config to the following:

    <dependentAssembly>
      <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-2.0.2.0" newVersion="2.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-2.0.2.0" newVersion="2.0.0.0" />
    </dependentAssembly>
    
  27. 約 1 分間待機します。Wait about one minute. Visual Studio で Cloud Explorer ツール ウィンドウを開きます (ビュー > Cloud Explorer) パスを展開および(Local)/Storage Accounts/(Development)/Tablesします。Open the Cloud Explorer tool window in Visual Studio (View > Cloud Explorer) and expand the path (Local)/Storage Accounts/(Development)/Tables. ダブルクリックWADPerformanceCountersTableします。Double-click WADPerformanceCountersTable. テーブルのデータで SignalR カウンターが表示されます。You should see SignalR counters in the table data. テーブルが表示されない場合は、Azure ストレージの資格情報を再入力する必要があります。If you don't see the table, you may need to re-enter your Azure Storage credentials. 選択する必要があります、更新ボタンをクリックして、テーブルでCloud Explorerまたは選択、更新テーブル内のデータを表示するテーブルを開くウィンドウのボタン。You may need to select the Refresh button to see the table in Cloud Explorer or select the Refresh button in the open table window to see data in the table.

    Visual Studio Cloud Explorer で WAD パフォーマンス カウンター テーブルを選択します。

    WAD パフォーマンス カウンターのテーブルで収集されたカウンターの表示

  28. クラウドでアプリケーションをテストするには、更新、 ServiceConfiguration.Cloud.cscfgファイルし、設定、Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString有効な Azure Storage アカウント接続文字列にします。To test your application in the cloud, update the ServiceConfiguration.Cloud.cscfg file and set the Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString to a valid Azure Storage account connection string.

    <?xml version="1.0" encoding="utf-8"?>
    <ServiceConfiguration serviceName="SignalRPerfCounters" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="4" osVersion="*" schemaVersion="2015-04.2.6">
      <Role name="WebRole1">
        <Instances count="1" />
        <ConfigurationSettings>
          <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=&lt;account-name&gt;;AccountKey=&lt;account-key&gt;" />
        </ConfigurationSettings>
      </Role>
    </ServiceConfiguration>
    
  29. Azure サブスクリプションにアプリケーションを展開します。Deploy the application to your Azure subscription. アプリケーションを Azure にデプロイする方法の詳細については、次を参照してください。を作成して、クラウド サービスをデプロイする方法します。For details on how to deploy an application to Azure, see How to Create and Deploy a Cloud Service.

  30. 数分待ってから。Wait a few minutes. Cloud Explorer先ほど構成したストレージ アカウントを見つけて、検索、WADPerformanceCountersTable内のテーブル。In Cloud Explorer, locate the storage account you configured above and find the WADPerformanceCountersTable table in it. テーブルのデータで SignalR カウンターが表示されます。You should see SignalR counters in the table data. テーブルが表示されない場合は、Azure ストレージの資格情報を再入力する必要があります。If you don't see the table, you may need to re-enter your Azure Storage credentials. 選択する必要があります、更新ボタンをクリックして、テーブルでCloud Explorerまたは選択、更新テーブル内のデータを表示するテーブルを開くウィンドウのボタン。You may need to select the Refresh button to see the table in Cloud Explorer or select the Refresh button in the open table window to see data in the table.

感謝します。 特別なMartin Richardの元のコンテンツをこのチュートリアルで使用します。Special thanks to Martin Richard for the original content used in this tutorial.