Agent 아키텍처
Datadog Agent가 실제로 어떤 프로세스들로 구성되어 있고, 어떤 포트를 사용하는지 궁금한 적 없으신가요? 이 문서에서는 Agent의 메인 프로세스, Collector와 Forwarder 같은 핵심 구성 요소, 그리고 포트 구성을 차근차근 설명해 드릴게요.
출처: 문서
본문
Agent 아키텍처
Agent 6과 7은 하나의 메인 프로세스로 구성되어 있어요. 이 프로세스는 인프라 메트릭과 로그를 수집하고, DogStatsD 메트릭도 받아요. 이 프로세스의 주요 구성 요소는 다음과 같아요.
- Collector: 체크를 실행하고 메트릭을 수집해요.
- Forwarder: 페이로드를 Datadog로 전송해요.
datadog.yaml 구성 파일에서 활성화하면 Agent가 두 개의 선택적 프로세스를 추가로 띄워요:
- APM Agent: 트레이스를 수집하는 프로세스예요. 기본으로 활성화돼요.
- Process Agent: 실시간 프로세스 정보를 수집하는 프로세스예요. 기본적으로 실행 가능한 컨테이너만 수집하며, 그 외에는 비활성화돼 있어요.
Windows에서는 서비스가 다음과 같이 표시돼요:
| 서비스 | 설명 |
|---|---|
| DatadogAgent | Datadog Agent |
| datadog-trace-agent | Datadog Trace Agent |
| datadog-process-agent | Datadog Process Agent |
기본적으로 Agent는 Linux에서 세 개, Windows와 macOS에서 네 개의 포트를 바인딩해요:
| 포트 | 설명 |
|---|---|
| 5000 | Agent의 런타임 메트릭을 노출해요. |
| 5001 | Agent CLI와 GUI가 실행 중인 Agent에 명령을 보내고 정보를 가져오는 데 사용돼요. |
| 5002 | Windows와 macOS에서 GUI 서버를 제공해요. |
| 8125 | DogStatsD 서버가 외부 메트릭을 받는 데 사용돼요. |
포트 구성에 대한 자세한 내용은 Network Traffic을 참고하세요.
Collector
Collector는 15초마다 모든 표준 메트릭을 수집해요. Agent 6에는 통합과 커스텀 체크를 실행하기 위한 Python 2.7 인터프리터가 내장되어 있어요.
Forwarder
Agent Forwarder는 메트릭을 HTTPS로 Datadog에 전송해요. 버퍼링 덕분에 네트워크 분할이 메트릭 보고에 영향을 주지 않아요. 메트릭은 크기나 처리 중인 send 요청 수의 한도에 도달할 때까지 메모리에 버퍼링되며, 이후에는 Forwarder의 메모리 사용량을 관리 가능한 수준으로 유지하기 위해 가장 오래된 메트릭부터 버려져요. 로그는 SSL로 암호화된 TCP 연결을 통해 Datadog로 전송돼요.
DogStatsD
Agent 6에서 DogStatsD는 Etsy의 StatsD 메트릭 집계 데몬을 Golang으로 구현한 것이에요. DogStatsD는 UDP 또는 UNIX 소켓을 통해 임의 메트릭을 받아 집계하므로, 커스텀 코드에 지연 시간을 추가하지 않고 계측할 수 있어요. DogStatsD에 대해 더 알아보세요.