- 애플리케이션 코드를 수정하지 않고도 Datadog와 함께 ClickStack을 평가할 수 있으며, 기존 에이전트를 사용해 동일한 텔레메트리를 두 플랫폼으로 모두 전송할 수 있습니다.
- 현재 수집 계층은 그대로 유지하면서 ClickStack으로 이전하고, OpenTelemetry 계측은 점진적으로 도입하여 마이그레이션을 수월하게 진행할 수 있습니다.
- 장기적으로 두 스택을 병렬로 운영하면서 각 플랫폼의 강점을 살려 활용할 수 있습니다.
Datadog와 함께 ClickStack을 실행해야 하는 이유
- 더 긴 보존 기간. 예산이 아니라 운영 요구사항에 맞춰 보존 기간을 설정하고, 몇 주 또는 몇 달 뒤에 필요할 수 있는 이벤트도 보관할 수 있습니다.
- 완전한 원본 데이터. 샘플링 없이 모든 로그와 트레이스를 저장하므로, 부분 집합이 아니라 전체 데이터를 기준으로 조사를 수행할 수 있습니다.
- API 속도 제한 없음. 사용량 기반 API를 거치지 않고 텔레메트리를 데이터베이스처럼 쿼리할 수 있으며, 쿼리별 또는 endpoint별 스로틀링도 없습니다.
- 완전한 SQL 액세스. 로그, 메트릭, 트레이스를 SQL로 분석하고, 이미 ClickHouse에 있는 비즈니스 데이터나 인프라 데이터와 조인할 수 있습니다.
- 에이전트형 워크로드. ClickStack MCP server를 통해 텔레메트리를 AI 에이전트에 노출하고, ClickHouse에 직접 무제한 분석 쿼리를 실행할 수 있습니다.
Datadog 수신기 작동 방식
수신기가 처리하는 내용
- 로그 레코드. Datadog의 밀리초 단위 timestamp는 나노초로 변환되어 OpenTelemetry의 timestamp, observed timestamp, body, severity 필드를 채우는 데 사용되므로, 레코드가 더 이상 Unix epoch에 표시되지 않습니다.
- 리소스 속성과 심각도.
info,warn,error와 같은 Datadog status는 해당하는 OpenTelemetrySeverityNumber및SeverityText에 매핑됩니다. 호스트명, 서비스 이름, 환경, 그리고 잘 알려진 컨테이너, Cloud, Kubernetes tag는 표준 리소스 속성으로 승격됩니다. - 트레이스와 로그의 연관 관계.
dd.trace_id및dd.span_id필드는 OpenTelemetry의 트레이스 및 스팬 식별자를 채우며, 수신기는 Datadog의 분할된 표현으로부터 전체 128-bit 트레이스 ID를 재구성합니다. 이 기능은 기본적으로 활성화되어 있으므로 Datadog에서 수집된 로그와 스팬을 OpenTelemetry로 instrument된 서비스와 연관시킬 수 있습니다. - 구조화된 JSON 로그. 기본적으로 활성화되는
decode_json_message옵션은 일반적으로 Datadog backend에서 수행되는 JSON 처리를 수행하여 body, timestamp, severity, 트레이스 식별자, 리소스 필드, 그리고 나머지 속성을 추출합니다. - 현재 agent와의 호환성. Datadog Agent 7.59 이상은 기본적으로 HTTP payload를 Zstandard로 압축합니다. 수신기는 gzip과 함께 Zstandard도 지원하므로 현재 agent가 payload 거부 없이 연결할 수 있습니다.
Datadog 수신기 활성화
8126에서 수신 대기합니다. 기본적으로는 비활성화되어 있으며, ENABLE_DATADOG_RECEIVER 환경 변수를 설정해 활성화할 수 있습니다.
활성화한 후에는 Datadog 에이전트가 이 수신기로 데이터를 보내도록 구성하고, ClickStack 수집 키로 인증을 설정합니다. 이 키를 어디서 가져오는지는 배포 방식에 따라 다릅니다. Managed ClickStack에서는 독립 실행형 collector를 실행하고 시작할 때 키를 직접 설정합니다. 반면 Open Source ClickStack에서는 키가 자동으로 생성되며 ClickStack 인터페이스(HyperDX)에서 복사하면 됩니다. 아래에서 배포 방식을 선택하십시오.
- 관리형 ClickStack
- 오픈소스 ClickStack
관리형 ClickStack에서는 ClickHouse Cloud 서비스로 데이터를 수집하는 독립 실행형 ClickStack collector를 배포합니다. collector는 시작 시 사용자가 선택한 인증 토큰으로 보호하며, 동일한 토큰을 Datadog agent의 API Key로 재사용합니다.독립 실행형 ClickStack collector를 실행하고 ClickHouse Cloud 서비스를 가리키도록 설정하십시오. 이제 수신기는
1
수신기를 활성화한 collector 배포
ClickStack OpenTelemetry collector와 표준 OpenTelemetry collector의 차이Datadog 수신기는 ClickStack 배포판 OpenTelemetry collector에 기본 포함되어 있으며 사전 구성되어 있습니다. 표준 OpenTelemetry Collector Contrib 배포판을 사용하려면 수신기를 직접 구성해야 합니다. 수신기에 대한 변경 사항과 개선 사항은 모두 upstream에 반영되므로 해당 배포판에서도 사용할 수 있습니다. 구성 옵션은 Datadog receiver README를 참조하십시오.
ENABLE_DATADOG_RECEIVER=true로 Datadog 수신기를 활성화하고, 포트 8126을 노출한 다음, 사용자 지정 OTLP_AUTH_TOKEN을 설정해 수집을 보호하십시오.http://localhost:8126에서 사용할 수 있으며, OTLP_AUTH_TOKEN에 설정한 토큰이 Datadog agent에 전달할 키입니다. Helm에서의 동일한 설정을 포함해 collector 보안 설정에 관한 자세한 내용은 “collector 보안 설정”을 참조하십시오.2
Datadog agent 구성
logs, traces, metrics를 수신기로 보내도록 이 구성은 다음을 수행합니다.
/opt/datadog-agent/etc/datadog.yaml의 agent 설정 파일을 업데이트하십시오. OTLP_AUTH_TOKEN 값을 API Key로 사용하고 각 대상을 수신기 endpoint로 지정하십시오.- metrics, traces, logs를 Datadog 대신 수신기로 전송합니다.
- ClickStack이 Datadog v2 metrics endpoint를 지원하므로 v3 metrics intake를 비활성화합니다.
- Datadog backend에 의존하는 remote updates와 remote configuration을 비활성화합니다.
3
agent 재시작
Datadog agent를 재시작하여 새 구성을 적용하십시오. macOS에서는 다음 명령을 사용합니다.이제 agent의 telemetry가 ClickStack으로 수집되며, HyperDX에서 확인할 수 있습니다.
실습 예시
1
샘플 앱 클론 및 실행
이 예시에서는 앱을 실행하려면 README의 안내를 따르십시오.
datadog-instrumentation 브랜치에서 Datadog 계측이 적용된 Hacker News 데모 앱을 사용합니다. 해당 브랜치를 클론합니다:2
수신기를 활성화하여 ClickStack 실행
Datadog 수신기가 활성화된 all-in-one 이미지를 시작합니다. 여기서는 수신기를 호스트 포트 수신기는
18126에 매핑하여, 동일하게 8126을 사용하는 로컬 Datadog 에이전트와 충돌하지 않도록 합니다:http://127.0.0.1:18126에서 사용할 수 있습니다.3
Datadog agent 설치 및 구성
Datadog 에이전트를 설치합니다. macOS에서는 다음 명령을 사용합니다:전체 agent 구성과 수집 키를 확인하는 방법은 Datadog 수신기 활성화를 참조하십시오.
/opt/datadog-agent/etc/datadog.yaml을 업데이트하여 포트 18126의 수신기를 가리키도록 설정하고, ClickStack 수집 키를 API Key로 사용한 뒤 agent를 다시 시작합니다:4
ClickStack에서 텔레메트리 탐색
http://localhost:8080에서 HyperDX 인터페이스를 열고 Datadog 에이전트에서 수집된 트레이스, 로그, 메트릭을 살펴보십시오.