APM 트레이싱 시작하기

개요

Datadog Application Performance Monitoring(APM)을 이용하면 애플리케이션을 더욱 상세히 가시화할 수 있어 성능 병목을 파악하고 문제를 해결하고 서비스를 최적화할 수 있습니다.

이 가이드에서는 APM을 시작해 Datadog으로 첫 트레이스를 전송하는 방법을 설명합니다.

  1. Datadog APM을 설정하여 Datadog으로 트레이스를 전송합니다.
  2. 애플리케이션을 실행해 데이터를 생성합니다.
  3. Datadog에서 수집한 데이터를 탐색합니다.

전제 조건

이 가이드를 완료하려면 다음이 필요합니다.

  1. Datadog 계정이 없는 경우 생성합니다.
  2. Datadog API 키를 찾거나 생성합니다.
  3. Linux 호스트 또는 VM을 시작합니다.

애플리케이션 생성

Datadog에서 관찰할 애플리케이션을 생성하는 방법:

  1. Linux 호스트 또는 VM에서 이름이 hello.py인 Python 애플리케이션을 새로 만듭니다. 예: nano hello.py.

  2. 다음 코드를 hello.py에 추가:

    hello.py

      from flask import Flask
      import random
    
      app = Flask(__name__)
      
      quotes = [
          "Strive not to be a success, but rather to be of value. - Albert Einstein",
          "Believe you can and you're halfway there. - Theodore Roosevelt",
          "The future belongs to those who believe in the beauty of their dreams. - Eleanor Roosevelt"
      ]
      
      @app.route('/')
      def index():
          quote = random.choice(quotes)+"\n"
          return quote
      
      if __name__ == '__main__':
          app.run(host='0.0.0.0', port=5050)
      

Datadog APM 설정

애플리케이션 코드나 배포 프로세스를 수정하지 않고도 Datadog APM을 설정하려면 단일 단계 APM 계측을 사용하거나 Datadog 추적 라이브러리를 사용하여 APM을 설정할 수 있습니다.

  1. 설치 명령 실행:

     DD_API_KEY=<YOUR_DD_API_KEY> DD_SITE="<YOUR_DD_SITE>" DD_APM_INSTRUMENTATION_ENABLED=host DD_APM_INSTRUMENTATION_LIBRARIES=python:4 DD_ENV=<AGENT_ENV> bash -c "$(curl -L https://install.datadoghq.com/scripts/install_script_agent7.sh)"
    

    Replace <YOUR_DD_API_KEY> with your Datadog API key, <YOUR_DD_SITE> with your Datadog site, and <AGENT_ENV> with the environment your Agent is installed on (for example, development).

  2. 호스트 또는 VM에서 서비스를 재시작합니다.

  3. Agent가 실행 중인지 확인:

    sudo datadog-agent status
    

이 방법을 사용하면 자동으로 Datadog Agent가 설치되고, Datadog APM이 활성화되며, 런타임에 애플리케이션이 계측됩니다.

애플리케이션 실행

단일 단계 계측으로 Datadog APM을 설정하면 Datadog가 런타임에 애플리케이션을 자동으로 계측합니다.

hello.py 실행 방법:

  1. 현재 디렉터리에 Python 가상 환경 만들기:

    python3 -m venv ./venv
    
  2. venv 가상 환경 활성화:

    source ./venv/bin/activate
    
  3. pipflask 설치:

    sudo apt-get install python3-pip
    pip install flask
    
  4. 서비스 이름을 설정하고 hello.py 실행:

    export DD_SERVICE=hello
    python3 hello.py
    

애플리케이션 테스트

트레이스를 Datadog에 전송하려면 애플리케이션을 테스트하세요.

  1. 새 명령 프롬프트에서 다음 실행:

    curl http://0.0.0.0:5050/
    
  2. 무작위 인용구가 반환되는지 확인하세요.

    Believe you can and you're halfway there. - Theodore Roosevelt
    

curl 명령을 실행할 때마다 새 트레이스가 Datadog으로 전송됩니다.

Datadog에서 트레이스 탐색

  1. Datadog에서 APM > 서비스로 이동합니다. 이름이 hello인 Python 서비스가 표시되어야 합니다.

    Software Catalog에 새 Python 서비스가 표시됩니다.
  2. 서비스를 선택하면 해당 서비스의 지연 시간, 처리량 및 오류율과 같은 성능 메트릭을 조회할 수 있습니다.

  3. APM > 트레이스로 이동합니다. hello 서비스의 트레이스가 표시되어야 합니다.

    트레이스 탐색기에 hello 서비스의 트레이스가 표시됩니다.
  4. 트레이스를 선택하면 플레임(Flame) 그래프 등 해당 트레이스의 세부 정보가 표시됩니다. 이런 세부 정보는 성능 병목을 파악하는 데 도움이 됩니다.

Advanced APM 설정

지금까지는 Datadog이 단일 단계 계측을 사용해 hello.py 애플리케이션을 자동으로 계측하도록 맡겼습니다. 이 방식은 코드를 건드리거나 라이브러리를 수동으로 설치하지 않고 공통 라이브러리 및 언어 전체에서 필수 트레이스를 수집하려면 권장합니다.

하지만 사용자 지정 코드에서 트레이스를 수집해야 하거나 좀 더 세분화된 제어가 필요한 경우, 사용자 지정 계측을 추가할 수 있습니다.

이것을 나타내기 위해 Datadog Python SDK를 hello.py로 가져온 다음 사용자 지정 스팬과 스팬 태그를 생성하게 됩니다.

사용자 지정 계측을 추가하는 방법:

  1. Datadog SDK 설치:

    pip install ddtrace
    
  2. 강조 표시된 라인을 hello.py의 코드에 추가하여 사용자 지정 스팬 태그 get_quote 및 사용자 지정 스팬 태그 quote 생성:

     from flask import Flask
     import random
     from ddtrace import tracer
    
     app = Flask(__name__)
    
     quotes = [
         "Strive not to be a success, but rather to be of value. - Albert Einstein",
         "Believe you can and you're halfway there. - Theodore Roosevelt",
         "The future belongs to those who believe in the beauty of their dreams. - Eleanor Roosevelt"
     ]
    
     @app.route('/')
     def index():
         with tracer.trace("get_quote") as span:
             quote = random.choice(quotes)+"\n"
             span.set_tag("quote", quote)
             return quote
    
     if __name__ == '__main__':
         app.run(host='0.0.0.0', port=5050)
  3. 앞서의 가상 환경에서 hello.py 실행:

    ddtrace-run python hello.py
    
  4. 별도의 명령 프롬프트에서 몇 가지 curl 명령 실행:

    curl http://0.0.0.0:5050/
    
  5. Datadog에서 APM > 트레이스로 이동합니다.

  6. hello 트레이스를 선택합니다.

  7. 플레임(Flame) 그래프에서 새 사용자 지정 get_quote 스팬을 찾아 마우스 커서를 올립니다.

    플레임(Flame) 그래프에 get_quote 사용자 지정 스팬이 표시됩니다. 마우스 커서를 올리면 quote 스팬 태그가 표시됩니다.
  8. 사용자 지정 quote 스팬 태그가 Info 탭에 표시되는지 확인하세요.

다음 단계는?

추적을 설정했고 애플리케이션이 Datadog으로 데이터를 전송하면, 추가적인 APM 기능 탐색:

Software Catalog

Software Catalog에는 소유권 메타데이터, 성능 인사이트, 보안 분석 및 비용 할당을 한곳에 모아 서비스에 대한 통합 조회를 제공합니다. 소유권 정보, 런북 및 설명서 링크 등으로 서비스를 보강하려면 태그, 어노테이션 또는 service.datadog.yaml 파일을 사용하여 서비스 메타데이터를 구성하세요.

트레이스 수집 및 보존

수집 제어보존 필터를 구성하여 비용을 제어하고 데이터 볼륨을 관리하세요. 수집 제어를 사용하면 Datadog Agent 또는 SDK 수준에서 샘플링 레이트를 사용자 지정할 수 있고, 보존 필터를 사용하면 검색 및 분석을 위해 어느 스팬을 인덱싱할지 결정할 수 있습니다.

추가 자료