2022. 5. 26. 00:00ㆍASPNET/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;
}));
...
실행

관련영상
'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 |