[인프라] Jaeger, OpenTelemetry, Grafana 연동

참고

개요

  • OpenTelemetry .NET 에서 Tracing 관련 코드를 작성 후, Jaeger 에서 정보를 받고, Grafana DataSource 로 Jaeger 등록하여 DashBoard 그리는 방법에 대해서 정리 진행합니다.

ASP.NET Core 웹 API 프로젝트 생성

  • 테스트를 진행하기 위한 .NET 프로젝트를 하나 생성합니다.
  • 저는 ASP.NET Core Wep API 프로젝트 하나를 생성하였습니다.

NuGet 패키지 설치

  • ASP.NET Core 프로젝트를 생성 하였다면, 다음 NuGet 패키지를 설치 진행합니다.
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" 버전="1.2.0-rc3" />

<PackageReference Include="OpenTelemetry.Extensions.Hosting" 버전="1.0.0-rc9" />

<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" 버전="1.0.0-rc9" />

<PackageReference Include="OpenTelemetry.Instrumentation.Http" 버전="1.0.0-rc9" />
  • OpenTelemetry 를 이용하여 분산 추적을 할 수 있습니다.

코드 작성

  • OpenTelemetry NuGet Package 설치 완료 하였다면, 다음 코드를 작성합니다.
builder.Services.AddOpenTelemetryTracing(b => {
    b.SetResourceBuilder(
        ResourceBuilder.CreateDefault().AddService(builder.Environment.ApplicationName))
     .AddAspNetCoreInstrumentation()
     .AddOtlpExporter(opts => { opts.Endpoint = new Uri("http://localhost:4317"); });
});
  • 위에서 Jaegar 의 URI 를 OLTP Exporter 엔드포인트로 설정합니다.

Jaeger 설정

  • 앞서 ASP.NET Core 로 테스트 프로그램 작성을 완료하였습니다.
  • 이제 Jaeger 를 실행하기 위해서 다음 명령어를 통해 Jaeger Docker Container 를 실행합니다.
> docker run --name jaeger -p 13133:13133 -p 16686:16686 -p 4317:4317 -d --restart=unless-stopped jaegertracing/opentelemetry-all-in-one

  • Docker Container 가 성공적으로 실행되었다면, http://localhost:16686 에서 Jaeger UI 를 열어서 실행합니다.
  • 다음 Jaeger UI 화면이 나온다면 정상적으로 실행된 것입니다.

실행

  • ASP.NET Core Web API 를 실행하여, Get 메시지를 날려 본 다음에 Jaeger 에서 해당 트랜잭션 추적을 모니터링 되는지 확인합니다.
  • 확인 결과, 정상적으로 연동되어 Tracing 되는 것을 확인할 수 있습니다.

Grafana Docker 설정

  • 이제 Jaeger 에서 Tracing 되는 것 까지 확인 하였으니, Grafana DashBoard 연동해 보도록 하겠습니다.
  • 먼저, Grafana 는 Docker Container 로 실행합니다.
  • 저 같은 경우에는 docker-compose.yml 파일 작성 후, Docker-Compose 로 실행 하였습니다.
version: '3.4'

services:
  grafana:
    container_name: grafana
    image: grafana/grafana:8.5.5
    restart: always
    ports:
      - 3000:3000
  • 정상 실행 확인하기 위해서는 http://localhost:3000 접속하여 다음 화면이 나온다면 정상 실행 되는 것입니다.

Jaeger DataSource 추가

  • 다음으로 Grafana 에서 Jaeger DataSource 를 추가합니다.

DashBoard 만들기

  • Jaeger DataSource 추가 하였다면, 이제 Sample DashBoard 하나 생성합니다.

728x90

'인프라' 카테고리의 다른 글

[인프라] Loki 란?  (0) 2022.08.19
[Infra] OpenTelemetry 및 Prometheus 연동하기  (0) 2022.08.19
[인프라]Jaeger 란?  (0) 2022.07.30
[인프라] Zipkin 이란?  (0) 2022.07.29

이 글을 공유하기

댓글

Designed by JB FACTORY