C# ASP.NET용 Cloud Trace 설정

C#용 Google.Cloud.Diagnostics.AspNet 클라이언트 라이브러리를 사용하여 ASP.NET Framework 애플리케이션에 Cloud Trace를 사용 설정할 수 있습니다.

클라이언트 라이브러리 설치

Visual Studio에서 Google.Cloud.Diagnostics.AspNet 클라이언트 라이브러리를 사용하려면 다음 단계를 따르세요.

  1. Visual Studio에서 솔루션을 마우스 오른쪽 버튼으로 클릭하고 Manage NuGet packages for solution(솔루션용 NuGet 패키지 관리)을 선택합니다.

  2. 사전 출시 포함 확인란을 선택합니다.

  3. 이름이 Google.Cloud.Diagnostics.AspNet인 패키지를 검색하여 설치합니다.

클라이언트 라이브러리 구성

Google.Cloud.Diagnostics.AspNet가 설치된 후 다음 단계를 완료하여 Trace를 사용 설정하고 구성합니다.

  1. Google Cloud 인프라에서 실행하지 않거나 애플리케이션에서 Google Cloud 프로젝트 ID를 지정하려면 애플리케이션의 Web.config 파일에 있는 <appSettings> 섹션에 다음 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가 구성됩니다. 애플리케이션에서 trace를 시작하려면 ASP.NET Framework용 샘플 애플리케이션을 참조하세요.

플랫폼 구성

Google Cloud 및 기타 플랫폼에서 Cloud Trace를 사용할 수 있습니다.

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();
                }
            }
        }
    }
}

Trace 보기

배포 후에는 Cloud Console Trace 뷰어에서 trace를 볼 수 있습니다.

trace 뷰어 페이지로 이동

문제해결

Cloud Trace 문제해결에 대한 자세한 내용은 문제해결 페이지를 참조하세요.

리소스