[인프라] Jaeger, OpenTelemetry, Grafana 연동
- 인프라
- 2022. 7. 31. 09:05
참고
개요
- 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 |
이 글을 공유하기