API로 Agend에 트레이스 전송하기

Datadog 애플리케이션 성능 모니터링(APM)을 사용하면 코드를 트레이싱하여 성능 메트릭을 수집하고, 애플리케이션에서 느리거나 비효율적인 부분이 있는지 확인할 수 있습니다.

트레이싱 데이터는 HTTP API를 통해 계측된 코드에서 Datadog Agent로 전송됩니다. Datadog 트레이싱 라이브러리를 사용하여 Datadog Agent로의 메트릭 전송을 간단하게 처리할 수 있습니다. 단, 해당 라이브러리를 사용할 수 없는 애플리케이션이나 공식 Datadog 트레이싱 라이브러리가 아직 제공되지 않은 언어로 작성된 애플리케이션을 계측하기 위해 API를 직접 사용할 수도 있습니다.

트레이싱 API는 서비스 측의 API가 아니라 Agent의 API입니다. 트레이스를 로컬 엔드포인트 http://localhost:8126/v0.3/traces로 전송하여, Agent가 트레이스를 Datadog로 전송할 수 있도록 하세요.

경로

PUT http://localhost:8126/v0.3/traces

요청

트레이스는 다음과 같은 트레이스 배열로 전송할 수 있습니다.

[ trace1, trace2, trace3 ]

또, 각 트레이스는 하나의 스팬(span) 배열입니다.

trace1 = [ span, span2, span3 ]

각 스팬은 trace_id, span_id, resource 등으로 구성됩니다. 트레이스의 각 스팬은 동일한 trace_id를 사용합니다. 그러나 trace_id와 span_id의 값은 다릅니다.

모델

항목유형설명
durationint64나노초 기준의 요청 처리 시간.
errorint32에러가 발생했음을 나타내려면 이 값을 1로 설정하세요. 오류가 발생하면 오류 메시지, 유형, 스택 등 추가 정보를 meta 속성으로 넘겨야 합니다.
meta오브젝트키값 메타데이터 세트. 키와 값은 스트링이어야 합니다.
- <any-key>스트링키값 메타데이터의 추가 속성.
메트릭오브젝트키값 메타데이터 세트. 키는 반드시 스트링이어야 하며, 값은 64bit 부동소수여야 합니다.
- <any-key>double키값 메트릭의 추가 속성.
name스트링스팬의 이름. 스팬 이름은 100자 이하여야 합니다.
parent_idint64부모 스팬의 스팬 정수 ID.
resource스트링트레이싱하는 리소스. 리소스 이름은 5000자 이하여야 합니다.
service스트링트레이싱하는 서비스. 서비스 이름은 100자 이하여야 합니다.
span_idint64스팬 정수(64bit의 서명 없는) ID.
startint64UNIX Epoch로부터 나노초로 지정한 요청 시작 시간.
trace_idint64스팬을 포함하는 트레이스의 고유 정수(64bit의 서명 없는) ID.
typeenum요청 유형. 사용할 수 있는 enum 값은 web, db, cache, custom입니다.

예시

[
  [
    {
      "duration": 12345,
      "error": "integer",
      "meta": {
        "<any-key>": "string"
      },
      "metrics": {
        "<any-key>": "number"
      },
      "name": "span_name",
      "parent_id": "integer",
      "resource": "/home",
      "service": "service_name",
      "span_id": 987654321,
      "start": 0,
      "trace_id": 123456789,
      "type": "web"
    }
  ]
]

응답

200
OK

예시

# Curl 명령어
curl -X PUT "http://localhost:8126/v0.3/traces" \
-H "Content-Type: application/json" \
-d @- << EOF
[
  [
    {
      "duration": 12345,
      "name": "span_name",
      "resource": "/home",
      "service": "service_name",
      "span_id": 987654321,
      "start": 0,
      "trace_id": 123456789
    }
  ]
]
EOF

참고 자료

Additional helpful documentation, links, and articles: