로그 전송 (Agent Transport for Logs)
Datadog Agent가 로그를 수집해 Datadog으로 보낼 때 사용하는 전송(transport) 방식에 대해 설명드릴게요. 기본 동작 방식과 HTTPS/TCP 전송을 강제하는 방법, 그리고 압축·배치 설정 팁까지 알려드릴게요.
출처: 문서
본문
기본 Agent 동작 (Default Agent behavior)
Agent v6.19+/v7.19+ 부터는 로그 전송에 기본적으로 TCP 대신 압축 HTTPS를 사용합니다. Agent가 시작될 때 로그 수집이 활성화되어 있다면 HTTPS 연결 테스트를 실행해요. 테스트에 성공하면 압축 HTTPS 전송을 사용하고, 실패하면 TCP 전송으로 폴백(fallback)합니다.
이 연결 테스트 메커니즘은 Agent 시작 시에만 실행되며 HTTPS만 테스트해요. Agent 시작 시점에 TCP와 HTTP 둘 다 연결이 안 되었다면, 연결이 복구된 뒤에도 Agent는 TCP 전송을 사용하게 되고, 다음 재시작 전까지는 이 상태가 바뀌지 않습니다.
Agent가 어떤 전송 방식을 사용하는지 확인하려면 Agent status 명령어를 실행하세요.
참고 사항:
- 이전 Agent 버전에서는 기본으로 TCP 전송을 사용해요. Datadog은 v6.14+/v7.14+ 를 실행 중이라면 HTTPS 전송을, v6.16+/v7.16+ 를 실행 중이라면 HTTPS 압축을 강제하도록 강력히 권장합니다.
- 로그를 Datadog으로 전달하기 위해 프록시를 사용할 때는 항상 특정 전송 방식(TCP 또는 HTTPS)을 강제하세요.
특정 전송 방식 강제하기 (Enforce a specific transport)
다음 설정을 사용해서 TCP 또는 HTTPS 전송을 강제할 수 있습니다.
HTTPS
Agent v6.14+/v7.14+ 에서 HTTPS 전송을 강제하려면 Agent의 메인 설정 파일(datadog.yaml)을 다음과 같이 수정하세요:
logs_enabled: true
logs_config:
force_use_http: true
환경 변수로 로그를 보내려면 다음을 구성하세요:
DD_LOGS_ENABLED=trueDD_LOGS_CONFIG_USE_HTTP=true
기본적으로 Datadog Agent는 로그를 HTTPS로 Datadog에 보낼 때 포트 443을 사용합니다.
HTTPS 전송 (HTTPS transport)
HTTPS 로그 전달은 가장 신뢰성 높은 로그 수집을 위한 권장 구성입니다. Datadog 저장소 시스템이 200 상태 코드를 반환하기 때문이에요:
HTTP를 사용하면 Agent는 다음 한도로 로그 배치를 전송합니다:
- 최대 배치 크기: 1MB
- 단일 로그의 최대 크기: 900kB
- 배치 내 최대 로그 수: 1,000개
로그 압축 (Log compression)
compression_level 파라미터(또는 DD_LOGS_CONFIG_COMPRESSION_LEVEL)는 0(압축 없음)부터 9(최대 압축이지만 리소스 사용량 증가)까지의 값을 받아요. 기본값은 6입니다.
압축을 활성화했을 때 Agent 리소스 사용량에 대한 자세한 내용은 Datadog Agent 오버헤드 문서를 참고하세요.
6.19 / 7.19 이전 Agent 버전에서는 Agent의 메인 설정 파일(datadog.yaml)을 수정해 압축을 강제해야 해요:
logs_enabled: true
logs_config:
use_http: true
use_compression: true
compression_level: 6
배치 대기 시간 설정 (Configure the batch wait time)
Agent는 각 배치(내용 크기 또는 로그 수 기준)를 채우기 위해 최대 5초까지 기다립니다. 따라서 최악의 시나리오(로그가 거의 생성되지 않는 경우)에서는 HTTPS로 전환하면 모든 로그를 실시간으로 보내는 TCP 전송과 비교해 5초의 지연이 추가될 수 있어요.
Datadog Agent가 각 배치를 채우기 위해 기다리는 최대 시간을 변경하려면 Agent의 메인 설정 파일(datadog.yaml)에 다음 설정을 추가하세요:
logs_config:
batch_wait: 2
또는 DD_LOGS_CONFIG_BATCH_WAIT=2 환경 변수를 사용하세요. 단위는 초이며 1에서 10 사이의 정수여야 합니다.
HTTPS 프록시 구성 (HTTPS proxy configuration)
로그를 HTTPS로 보낼 때는 웹 프록시로 로그를 보내기 위해 다른 데이터 유형과 동일한 프록시 설정 세트를 사용하세요.
TCP
중요 — 다음 Datadog 사이트 사용자를 위한 안내: app.datadoghq.com, app.datadoghq.eu, us3.datadoghq.com, us5.datadoghq.com, ap1.datadoghq.com, ap2.datadoghq.com, uk1.datadoghq.com
⚠️ TCP 로그 수집은 지원되지 않습니다. TCP 사용 시 Datadog은 전달 또는 신뢰성에 대한 보장을 제공하지 않으며, 로그 데이터는 사전 고지 없이 손실될 수 있습니다. 안정적인 수집을 위해서는 HTTP 인테이크(intake) 엔드포인트, 공식 Datadog Agent, 또는 forwarder 통합을 대신 사용하세요. 자세한 내용은 Log Collection을 참고하세요.
TCP 전송을 강제하려면 Agent의 메인 설정 파일(datadoghq.yaml)을 다음과 같이 수정하세요:
logs_enabled: true
logs_config:
force_use_tcp: true
환경 변수로 로그를 보내려면 다음을 구성하세요:
DD_LOGS_ENABLED=trueDD_LOGS_CONFIG_FORCE_USE_TCP=true
기본적으로 Datadog Agent는 TLS로 암호화된 TCP를 통해 로그를 Datadog에 보냅니다. 이를 위해서는 아웃바운드 통신이 필요합니다(Datadog US 사이트는 포트 10516, Datadog EU 사이트는 포트 443).
중요 — 다음 Datadog 사이트 사용자를 위한 안내: app.ddog-gov.com, us2.ddog-gov.com
이 사이트에서는 TCP 엔드포인트가 지원되지 않습니다.
참고: SOCKS5 프록시 서버를 설정하면 TCP 전송이 강제됩니다. socks5 프록시는 압축 적용 HTTPS에서는 아직 지원되지 않기 때문이에요.