본문 바로가기
WIKI 기술 지식 베이스

Datadog Agent 프록시 구성 (Datadog Agent Proxy Configuration)

원문 보기 위키 갱신

Datadog Agent가 HTTP/HTTPS 프록시를 통해 트래픽을 보내도록 구성하는 방법을 알려드릴게요. 공용 인터넷에 직접 연결되지 않는 호스트에서 트래픽을 보낼 때 주로 프록시를 사용해요.

출처: 문서

본문

Datadog Agent가 HTTP/HTTPS 프록시를 통해 트래픽을 보내도록 구성할 수 있어요. 프록시는 보통 공용 인터넷에 직접 연결되지 않은 호스트에서 트래픽을 보낼 때 사용해요.

Datadog Agent 구성하기

배포 방법에 따라 Datadog Agent가 프록시를 사용하도록 구성하는 몇 가지 옵션이 있어요.

  • Agent 구성 파일을 사용할 수 있어요.
  • 환경 변수를 사용할 수 있어요. 환경 변수는 구성 파일 설정을 덮어써요.
  • Kubernetes 배포에서는 Helm이나 Datadog Operator로 프록시를 구성할 수 있어요.

구성 파일 (Configuration file)

구성 파일로 프록시를 구성하려면 메인 Agent 구성 파일(datadog.yaml)에서 proxy 섹션을 편집하거나 추가한 뒤 Datadog Agent를 재시작하세요.

proxy:
  # Required: Proxy endpoint for HTTP connections
  http: http://<USER>:<PASSWORD>@<PROXY_HOST>:<PROXY_PORT>
  # Required: Proxy endpoint for HTTPS connections (most Datadog traffic)
  https: http://<USER>:<PASSWORD>@<PROXY_HOST>:<PROXY_PORT>

  # Optional: List of hosts or CIDR ranges to bypass the proxy
  # Example:
  # no_proxy:
  #   - 192.168.0.0/24
  #   - localhost
  #   - .myinternaldomain.com
  no_proxy:
    - <HOST_TO_BYPASS_1>
    - <HOST_TO_BYPASS_2>

# Recommended: Set to true to ensure no_proxy behaves in a standard way
no_proxy_nonexact_match: true

# Recommended: Force the Agent to use HTTP to send logs (if logs is enabled)
logs_config:
  force_use_http: true
  • <USER>, <PASSWORD>, <PROXY_HOST>, <PROXY_PORT>를 프록시 자격 증명과 주소로 바꾸세요.
  • 사용자 이름과 비밀번호는 선택 사항이에요.
  • 프록시 설정과 필요에 따라 http, https 또는 둘 다 지정하세요. 대부분의 Datadog 트래픽은 HTTPS를 사용해요.
  • 프록시를 우회하고 Agent가 직접 연결해야 할 호스트를 지정하려면 no_proxy를 사용하세요.
  • 변경 사항을 적용하려면 **Datadog Agent를 재시작**하세요.

운영체제에서 구성 파일을 찾는 방법에 대한 자세한 내용은 Agent 설정 파일을 참고하세요.

환경 변수 (Environment variables)

또는 다음 환경 변수를 설정해 프록시를 구성할 수 있어요. 설정을 마쳤으면 Datadog Agent를 재시작하세요.

DD_PROXY_HTTP="http://<USER>:<PASSWORD>@<PROXY_HOST>:<PROXY_PORT>"
DD_PROXY_HTTPS="http://<USER>:<PASSWORD>@<PROXY_HOST>:<PROXY_PORT>"

DD_PROXY_NO_PROXY="<HOST_TO_BYPASS_1> <HOST_TO_BYPASS_2>"
DD_NO_PROXY_NONEXACT_MATCH=true

DD_LOGS_CONFIG_FORCE_USE_HTTP=true

Kubernetes

Helm — values.yaml에 다음을 추가하세요:

datadog:
  env:
    - name: DD_PROXY_HTTP
      value: "http://<PROXY_SERVICE>.<PROXY_NAMESPACE>.svc.cluster.local:<PROXY_PORT>"
    - name: DD_PROXY_HTTPS
      value: "http://<PROXY_SERVICE>.<PROXY_NAMESPACE>.svc.cluster.local:<PROXY_PORT>"
    - name: DD_PROXY_NO_PROXY
      value: "<HOST_TO_BYPASS_1> <HOST_TO_BYPASS_2>"
    - name: DD_NO_PROXY_NONEXACT_MATCH
      value: "true"

Operator — DatadogAgent CR에 다음을 추가하세요:

spec:
  global:
    env:
      - name: DD_PROXY_HTTP
        value: "http://<PROXY_SERVICE>.<PROXY_NAMESPACE>.svc.cluster.local:<PROXY_PORT>"
      - name: DD_PROXY_HTTPS
        value: "http://<PROXY_SERVICE>.<PROXY_NAMESPACE>.svc.cluster.local:<PROXY_PORT>"
      - name: DD_PROXY_NO_PROXY
        value: "<HOST_TO_BYPASS_1> <HOST_TO_BYPASS_2>"
      - name: DD_NO_PROXY_NONEXACT_MATCH
        value: "true"

NO_PROXY 허용 값

기본적으로 no_proxy/NO_PROXY는 Agent HTTP(S) 요청(Agent 통합이 수행하는 요청 제외)에 대해 엔드포인트를 정확히 일치시켜야 해요. Datadog은 no_proxy_nonexact_match를 활성화해 Agent가 Agent 통합에 사용되는 것과 같은 규칙으로 NO_PROXY 값을 일치시키도록 권장해요.

구성 파일

no_proxy_nonexact_match: true

환경 변수

DD_NO_PROXY_NONEXACT_MATCH=true

다음 규칙은 Agent 통합(no_proxy_nonexact_match가 활성화되면 Agent 전체)에 적용돼요:

  • 도메인 이름은 해당 이름과 모든 하위 도메인과 일치해요. 예:
    • datadoghq.com은 app.agent.datadoghq.com, www.datadoghq.com, datadoghq.com과 일치하지만, www.notdatadoghq.com은 아님
    • datadoghq는 frontend.datadoghq, backend.datadoghq와 일치하지만, www.datadoghq.com이나 www.datadoghq.eu는 아님
  • 앞에 "."이 있는 도메인 이름은 하위 도메인만 일치해요. 예:
    • .datadoghq.com은 app.agent.datadoghq.com, www.datadoghq.com과 일치하지만, datadoghq.com은 아님
  • CIDR 범위는 서브넷 내의 IP 주소와 일치해요. 예:
    • 192.168.1.0/24는 IP 범위 192.168.1.1~192.168.1.254와 일치
  • 정확한 IP 주소, 예:
    • 169.254.169.254
  • 호스트네임, 예:
    • webserver1

프록시 서버 설정 예시 (Proxy Server Setup Examples)

기존 프록시 서버가 없다면 Datadog은 Squid 같은 HTTP 프록시 사용을 권장해요.

  1. Squid (권장): 모든 아웃바운드 HTTP/HTTPS Agent 트래픽을 투명하게 프록시해 구성을 단순화하는 견고한 HTTP/HTTPS 프록시예요. Squid 프록시 사용하기.
  2. HAProxy (권장하지 않음): Datadog으로 트래픽을 전달할 수 있지만, 최신 Datadog 도메인 목록을 유지해야 해서 관리가 더 복잡해요. HAProxy 예시 설정 보기.
  3. NGINX (권장하지 않음): HAProxy와 비슷하게 NGINX를 사용해 Datadog으로 트래픽을 전달하는 것은 도메인 목록을 계속 업데이트해야 하는 유지보수 부담 때문에 권장하지 않아요. NGINX 예시 설정 보기.

Datadog은 HAProxy나 NGINX 같은 소프트웨어로 트래픽을 전달하는 것을 권장하지 않아요. Agent가 도달해야 하는 특정 Datadog 엔드포인트 목록을 수동으로 구성하고 유지해야 하기 때문이에요. 이 목록은 바뀔 수 있어서 최신 상태로 유지하지 않으면 데이터 손실로 이어질 수 있어요. 유일한 예외는 DPI(Deep Packet Inspection) 기능이 필요할 때예요. 이 경우 HAProxy나 NGINX를 사용하면 TLS를 비활성화하거나 자체 TLS 인증서를 사용해 트래픽을 검사할 수 있어요.

검증 (Verification)

Agent status 명령어를 확인하고, 재시작 후 연결 오류가 있는지 Agent 로그(agent.log, trace-agent.log 등)를 검토하세요.

FIPS 프록시 (US1-FED)

Datadog Agent와 함께 Datadog Agent FIPS 프록시를 설정하는 방법은 Datadog FIPS 컴플라이언스를 참고하세요. FIPS 프록시는 US1-FED 리전에서만 사용할 수 있어요. Datadog Agent FIPS 프록시는 일반 프록시와 함께 사용할 수 없어요.

더 알아보기 (Learn more)

도움이 되는 추가 문서, 링크, 글: