gRPC - 로깅 및 진단

2022. 5. 26. 00:00ASPNET/Grpc

반응형

gRPC  는 3가지 방법으로 진단 정보를 수집할 수 있다. 

 

  • 로깅

: NET Core 로깅에 기록되는 구조적 로그입니다. ILogger는 앱 프레임워크에서 로그를 기록하고 사용자가 앱에서 자체 로깅을 유지하는 데 사용됩니다.

 

  • 추척

: DiaganosticSource  Activity를 사용하여 기록되는 작업 관련 이벤트입니다. 진단 소스에서의 추적은 일반적으로 Application Insights  OpenTelemetry와 같은 라이브러리에서 앱 원격 분석을 수집하는 데 사용됩니다.

 

  • 메트릭

: 시간 간격에 따른 데이터 측정값 표시입니다(예: 초당 요청 수). EventCounter를 사용하여 메트릭을 내보내고, dotnet-counters 명령줄 도구 또는 Application Insights를 사용하여 관찰할 수 있습니다.

 

 

 

1. 로깅 (gRPC 서버 로깅)

일반적으로 ASP.NET Core 의 로깅 시스템을 사용하므로 해당하는 로깅을 그대로 이용할 수 있다. 

참조 : ASP.NET Core 로깅

 

또한 config 파일을 통해 Level 을 지정 할 수 있다. 

appsettings.json 

{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information",
      "Grpc": "Debug"
    }
  }
}

코드로 설정 할 수도 있다. 

Program.cs

...
// 로그 레벨 code 로 설정
builder.Host.ConfigureLogging(logging =>
{
    logging.AddFilter("Grpc", LogLevel.Debug);
});
...

실행

 

 

 

2. 추적 (gRPC 서버 추적)

 

gRPC 서비스는 들어오는 HTTP 요청에 대한 이벤트를 보고하는 ASP.NET Core에서 호스트됩니다. ASP.NET Core에서 제공하는 기존 HTTP 요청 진단에 gRPC 특정 메타데이터가 추가됩니다.

  • 진단 소스 이름은 Microsoft.AspNetCore입니다.
  • 작업 이름은 Microsoft.AspNetCore.Hosting.HttpRequestIn입니다.
    • gRPC 호출을 통해 호출된 gRPC 메서드 이름은 이름이 grpc.method인 태그로 추가됩니다.
    • 완료 시 gRPC 호출의 상태 코드는 이름이 grpc.status_code인 태그로 추가됩니다.

개발자 명령 프롬프트에서 server project 로 이동해서 다음 명령을 실행한다.

현재 안정된 버전이 없으므로 prerelease 를 사용한다. 

dotnet add package --prerelease OpenTelemetry.Exporter.Console
dotnet add package --prerelease OpenTelemetry.Extensions.Hosting
dotnet add package --prerelease OpenTelemetry.Instrumentation.AspNetCore

Program.cs 설정

....
using OpenTelemetry.Trace;
...
builder.Services.AddOpenTelemetryTracing((builder) => builder
        .AddAspNetCoreInstrumentation()
        .AddConsoleExporter()
    );
...

실행

 

메트릭 (OpenTelemetry 이용)

Program.cs

...
using OpenTelemetry.Resources;
using OpenTelemetry.Metrics;
...

builder.Services
    .AddOpenTelemetryMetrics(builder => builder
        // Configure the resource attribute `service.name` to MyServiceName
        .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("Metric Check By OpenTelemetry"))
        // Add metrics from the AspNetCore instrumentation library
        .AddAspNetCoreInstrumentation()
        .AddConsoleExporter((options, readerOptions) =>
        {
            readerOptions.PeriodicExportingMetricReaderOptions.ExportIntervalMilliseconds = 5000;
        }));
        
...

 

 

실행

 

 

관련영상

https://youtu.be/zYxAyXTDhZQ

 

 

반응형

'ASPNET > Grpc' 카테고리의 다른 글

gRPC - 프로세스 간 통신 (IPC)  (0) 2022.05.27
gRPC - 인터셉터  (0) 2022.05.25
gRPC - JWT Token 을 통한 인증 처리  (16) 2022.05.24
gRPC - Configuration  (0) 2022.05.23
grpc test - grpcui  (0) 2022.05.20