ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Jaeger 설치하기
    Distributed Tracing 2023. 2. 19. 20:49
    반응형

    이 문서는 분산 추적 시스템 중 하나인 jaeger를 설치하는 것을 다루고 있습니다. 특히, 하나의 바이너리 파일의 실행으로 간단하게 분산 추적 시스템을 구축할 수 있는 all-in-one 모드로 실행하는 것을 목표로 합니다.

    준비 사항

    이 문서는 Docker 환경에서 Jaeger를 설치합니다. 따라서, Docker가 필요합니다.

    • Docker v20.10.12 이상
    • docker-compose v1.29.2 이상

    Jaeger 설치

    다음 명령어로, Jaeger를 설치할 수 있습니다.

    $ docker run -d --name jaeger \
      -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
      -e COLLECTOR_OTLP_ENABLED=true \
      -p 6831:6831/udp \
      -p 6832:6832/udp \
      -p 5778:5778 \
      -p 16686:16686 \
      -p 4317:4317 \
      -p 4318:4318 \
      -p 14250:14250 \
      -p 14268:14268 \
      -p 14269:14269 \
      -p 9411:9411 \
      jaegertracing/all-in-one:1.42

    만약 docker-compose를 이용하여 구성한다면, 다음과 같이 구성할 수 있습니다.

    src/ch02/docker-compose.yml

    version: "3.9"
    services:
      jaeger: 
        image: "jaegertracing/all-in-one:1.42"
        environment:
          - COLLECTOR_ZIPKIN_HOST_PORT=:9411
          - COLLECTOR_OTLP_ENABLED=true
        ports:
          - "6831:6831/udp"
          - "6832:6832/udp"
          - "5778:5778"
          - "16686:16686"
          - "4317:4317"
          - "4318:4318"
          - "14250:14250"
          - "14268:14268"
          - "14269:14269"
          - "9411:9411"
        networks:
          - getting-started-distributed-tracing
    
    networks:
      getting-started-distributed-tracing:
        driver: bridge

    docker-compose를 이용한다면 다음 명령어로 실행이 가능합니다.

    $ docker compose up
    [+] Running 1/1
     ⠿ Container ch02-jaeger-1  Recreated                                                                                              0.1s
    Attaching to ch02-jaeger-1
    ch02-jaeger-1  | 2023/02/19 12:11:01 maxprocs: Leaving GOMAXPROCS=6: CPU quota undefined
    ch02-jaeger-1  | {"level":"info","ts":1676808661.6135793,"caller":"flags/service.go:119","msg":"Mounting metrics handler on admin server","route":"/metrics"}
    # ...
    ch02-jaeger-1  | {"level":"info","ts":1676808662.6579118,"caller":"channelz/funcs.go:340","msg":"[core][Channel #10] Channel Connectivity change to IDLE","system":"grpc","grpc_log":true}

    정상적으로 실행이 되면, 브라우저에서 다음 URL을 접속해봅니다.

    다음 화면이 보이면 성공입니다.

    각 포트의 의미

    각 포트의 의미는 다음과 같습니다. 

    port protocol component function
    6831 UDP agent 대부분의 SDK에서 Jaeger로 트레이싱 정보를 전달하는 포트입니다.
    6832 UDP agent Node.js SDK에서 Jaeger로 트레이싱 정보를 전달하는 포트입니다.
    5778 HTTP agent 샘플링 등의 설정을 확인할 수 있습니다.
    16686 HTTP query 프론트엔드 서비스를 확인할 수 있습니다.
    4317 HTTP collector COLLECTOR_OTLB_ENABLED가 활성화되어 있다면, gRPC 기반의 OTLP(오픈 텔레메트리 프로토콜)을 수신합니다.
    4318 HTTP collector COLLECTOR_OTLB_ENABLED가 활성화되어 있다면, http 기반의 OTLP(오픈 텔레메트리 프로토콜)을 수신합니다.
    14268 HTTP collector 클라이언트로부터 직접 트레이스 정보를 수신합니다.
    14250 HTTP collector model.proto 를 수신합니다.
    9411 HTTP collector Zipkin호환 엔드포인트입니다.

    여러 컴포넌트가 있지만, 이 문서에서는 따로 설명하지 않습니다. (기회가 있다면, 추후 이어지는 장에서 설명하도록 하겠습니다.)

    참고

Designed by Tistory.