C# ASP.NET 用の Cloud Trace の設定

Cloud Trace for ASP.NET Framework アプリケーションを有効にするには、C# 用の Google.Cloud.Diagnostics.AspNet クライアント ライブラリを使用します。

クライアント ライブラリのインストール

Visual Studio で Google.Cloud.Diagnostics.AspNet クライアント ライブラリを使用する手順は次のとおりです。

  1. Visual Studio でソリューションを右クリックして、[ソリューションの NuGet パッケージの管理] を選択します。

  2. [プレリリースを含む] チェックボックスを選択します。

  3. Google.Cloud.Diagnostics.AspNet という名前のパッケージを検索してインストールします。

クライアント ライブラリの構成

Google.Cloud.Diagnostics.AspNet をインストールしたら、次の手順で Trace を有効にして構成します。

  1. Google Cloud インフラストラクチャで実行していない場合や、アプリケーションで Google Cloud プロジェクト ID を指定する場合は、<appSettings> セクションのアプリケーションの Web.config ファイルに次の XML 要素を追加します。 YOUR-GOOGLE-PROJECT-ID を実際の Google Cloud プロジェクト ID に置き換えます。

    <add key="projectId" value="YOUR-GOOGLE-PROJECT-ID" />

    Google Cloud インフラストラクチャで実行している場合、C# のクライアント ライブラリは Google Cloud メタデータ サーバーから自動的に Google Cloud プロジェクト ID を収集するため、このステップは省略できます。

  2. アプリケーションの Global.asax.cs ファイルに次の using ディレクティブを追加します。

    
    using Google.Cloud.Diagnostics.AspNet;
    using Google.Cloud.Diagnostics.Common;
    

    ASP.NET アプリケーションに Global.asax ファイルがない場合は、作成して using ディレクティブを追加します。 Global.asax ファイルの詳細については、Global.asax 構文をご覧ください。

  3. Trace を初期化するには、Global.asax.cs ファイルの WebApiApplication クラスの Init 関数に以下を追加します。

    public override void Init()
    {
        string projectId = ConfigurationManager.AppSettings["projectId"];
        // ...
        base.Init();
        TraceConfiguration traceConfig = TraceConfiguration
            .Create(bufferOptions: BufferOptions.NoBuffer());
        CloudTrace.Initialize(this, projectId, traceConfig);
    }
    

アプリケーションから受信した HTTP リクエストをサンプリングするように Trace が構成されました。アプリケーションからトレースを開始する方法については、ASP.NET Framework のサンプル アプリケーションをご覧ください。

プラットフォームの構成

Cloud Trace は Google Cloud と他のプラットフォームで使用できます。

Google Cloud での実行

アプリケーションが Google Cloud で実行されている場合、認証情報をサービス アカウントの形式でクライアント ライブラリに提供する必要はありません。ただし、Google Cloud Platform で Cloud Trace API のアクセス スコープが有効になっている必要があります。

次の構成では、デフォルトのアクセス スコープ設定により Cloud Trace API が有効化されます。

  • App Engine フレキシブル環境
  • Google Kubernetes Engine(GKE)

  • Compute Engine

カスタム アクセス スコープを使用する場合は、Cloud Trace API のアクセス スコープを有効にする必要があります。gcloud ユーザーの場合は、--scopes フラグを使用してアクセス スコープを指定し、trace.append Cloud Trace API アクセス スコープを含めます。たとえば、Cloud Trace API のみを有効にして GKE クラスタを作成するには、次のようにします。

gcloud container clusters create example-cluster-name --scopes=https://www.googleapis.com/auth/trace.append

ローカルやその他の場所での実行

アプリケーションが Google Cloud の外部で実行されている場合は、認証情報をサービス アカウントの形式でクライアント ライブラリに提供する必要があります。サービス アカウントには Cloud Trace エージェント ロールが含まれている必要があります。手順については、サービス アカウントの作成をご覧ください。

Google Cloud クライアント ライブラリは、アプリケーションのデフォルト認証情報(ADC)を使用してアプリケーションの認証情報を検索します。GOOGLE_APPLICATION_CREDENTIALS 環境変数を設定することにより、これらの認証情報を指定します。

Linux / macOS

    export GOOGLE_APPLICATION_CREDENTIALS=path-to-your-service-accounts-private-key

Windows

    set GOOGLE_APPLICATION_CREDENTIALS=path-to-your-service-accounts-private-key

PowerShell:

    $env:GOOGLE_APPLICATION_CREDENTIALS="path-to-your-service-accounts-private-key"

ASP.NET Framework 用の Trace サンプル アプリケーション

public class TraceController : Controller
{
    // This incoming HTTP request should be captured by Trace.
    public ActionResult Index()
    {
        using (CloudTrace.Tracer.StartSpan(nameof(Index)))
        {
            string url = "https://www.googleapis.com/discovery/v1/apis";
            var response = TraceOutgoing(url);
            ViewData["text"] = response.Result.ToString();
            return View();
        }
    }

    public async Task<string> TraceOutgoing(string url)
    {
        // Manually trace a specific operation.
        using (CloudTrace.Tracer.StartSpan("get-api-discovery-doc"))
        {
            using (var httpClient = new HttpClient())
            {
                // This outgoing HTTP request should be captured by Trace.
                using (var response = await httpClient.GetAsync(url)
                    .ConfigureAwait(false))
                {
                    return await response.Content.ReadAsStringAsync();
                }
            }
        }
    }
}

トレースの表示

デプロイ後は、Cloud Console Trace Viewer でトレースを表示できます。

Trace Viewer のページに移動

トラブルシューティング

Cloud Trace に関する問題のトラブルシューティングについては、トラブルシューティング ページをご覧ください。

リソース