ECS, Fargate(Spring Boot)에서 Datadog APM 설정

5803 단어 datadogecsfargateapm
안녕하세요 저는 Roy입니다. 오늘 저는 ECS와 함께 Fargate에서 실행되는 Spring Boot 애플리케이션에서 Datadog APM을 활성화하는 방법에 대한 짧은 블로그 게시물을 작성하려고 합니다.

APM은 요청을 처리하기 위해 모든 메트릭과 실행된 작업의 종류(또한 어떤 순서로)를 볼 수 있도록 하여 응용 프로그램을 심층 분석하는 데 도움이 됩니다.

예를 들어 서버 애플리케이션에서 APM을 사용하는 경우 데이터베이스에 대한 쿼리를 실행하는 데 걸리는 시간, 관련 코드를 처리하는 데 걸리는 시간 및 지연 시간을 확인할 수 있습니다. 클라이언트의 요청을 서버가 처리하는 데 걸린 시간을 나타내는 시간입니다.

For container metrics, you can reference this nice documentation from Datadog itself.



Amazon ECS를 Fargate와 함께 사용하면서 ECS 또는 Fargate 에 대한 APM 구성을 확인해야 하는지 혼란스러웠습니다.

관련 문서를 모두 읽은 후, 제 환경에서 Datadog APM을 활성화하기 위한 세 가지 필수 단계가 있음을 알게 되었습니다.
  • 다운로드 dd-java-agent.jar
  • 응용 프로그램 jar 파일을 실행할 때 이 다운로드한 jar 파일을 -javaagent 플래그에 할당합니다.
  • Datadog에 대해 적절한 환경 변수를 설정합니다.

  • For step 3, you can configure it in your task definition file.



    필자의 경우 Spring Boot 애플리케이션을 컨테이너화하기 위한 이전 Dockerfile은 다음과 같습니다.

    FROM openjdk:11-jdk AS builder
    WORKDIR application
    ARG JAR_FILE=build/libs/MY_APPLICATION.jar
    COPY ${JAR_FILE} application.jar
    RUN java -Djarmode=layertools -jar application.jar extract
    
    FROM openjdk:11-jdk
    WORKDIR application
    COPY --from=builder application/dependencies/ ./
    RUN true
    COPY --from=builder application/spring-boot-loader/ ./
    RUN true
    COPY --from=builder application/snapshot-dependencies/ ./
    RUN true
    COPY --from=builder application/application/ ./
    RUN true
    ENV TZ Asia/Seoul
    ENTRYPOINT ["java", "org.springframework.boot.loader.JarLauncher"]
    

    dd-java-agent.jar 파일을 다운로드하고 -javaagent 플래그에 할당해야 하는 위치가 궁금해서 Dockerfile이 제 경우에 적절한 위치라는 것을 알았습니다.

    그래서 내 Dockerfile은 아래와 같이 변경되었고, 보시다시피 dd-java-agent.jar 파일을 다운로드하고 내 애플리케이션의 jar 파일을 실행할 때 -javaagent 플래그에 할당합니다.

    FROM openjdk:11-jdk AS builder
    WORKDIR application
    ARG JAR_FILE=build/libs/MY_APPLICATION.jar
    COPY ${JAR_FILE} application.jar
    RUN java -Djarmode=layertools -jar application.jar extract
    
    FROM openjdk:11-jdk
    WORKDIR application
    RUN  apt-get update \
      && apt-get install -y wget \
      && rm -rf /var/lib/apt/lists/*
    RUN wget -O dd-java-agent.jar 'https://dtdg.co/latest-java-tracer'
    
    COPY --from=builder application/application.jar ./application.jar
    RUN true
    COPY --from=builder application/dependencies/ ./
    RUN true
    COPY --from=builder application/spring-boot-loader/ ./
    RUN true
    COPY --from=builder application/snapshot-dependencies/ ./
    RUN true
    COPY --from=builder application/application/ ./
    RUN true
    
    ENV TZ Asia/Seoul
    
    ENTRYPOINT ["java", "-javaagent:dd-java-agent.jar", "-Ddd.profiling.enabled=true", "-XX:FlightRecorderOptions=stackdepth=256", "org.springframework.boot.loader.JarLauncher"]
    


    그리고 그게 다야! 새 작업을 배포한 후 Datadog APM 탭에서 내 애플리케이션을 볼 수 있었고 생성된 모든 이벤트, 모든 세부 정보 및 처리 시간, 요청을 처리하는 데 걸리는 시간 등을 볼 수 있었습니다.

    3일 정도 이것저것 구성했는데 저와 같은 상황이신 분들은 이 블로그가 도움이 되었으면 합니다.

    감사합니다. 피드백이나 의견은 항상 감사합니다.

    좋은 웹페이지 즐겨찾기