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

듀얼 쉬핑 (Dual Shipping)

원문 보기 위키 갱신

메트릭, 로그, 트레이스를 여러 Datadog 조직에 동시에 보내도록 Datadog Agent를 구성하는 방법을 알려드릴게요. 데이터 유형별 예시를 하나씩 살펴볼게요.

출처: 문서

본문

듀얼 쉬핑은 여러 Datadog 조직에 데이터를 보낼 때 청구에 영향을 줄 수 있어요. 이 구성이 청구에 미치는 영향에 대해 자세히 알아보려면 Datadog 지원팀에 문의하세요.

개요 (Overview)

이 가이드는 서로 다른 유형의 데이터(예: APM, 로그, Cluster Agent 메트릭)를 여러 Datadog 조직과 사이트로 듀얼 쉬핑하기 위한 Agent 구성 예시를 제공해요. Datadog 사이트에 대한 자세한 내용은 Datadog 사이트 시작하기를 참고하세요.

참고: 로그를 듀얼 쉬핑하거나 로그 트래픽을 다른 로깅 벤더, 클라우드 스토리지, SIEM 제공자에 분할하고 싶다면 Observability Pipelines을 사용하세요.

네트워크 트래픽 목적지의 전체 목록은 네트워크 트래픽을 참고하세요.

메트릭 및 서비스 체크 (Metrics and service checks)

YAML 구성을 datadog.yaml에 추가하거나 적절한 환경 변수로 Agent를 실행할 수 있어요.

YAML 구성

Agent 6.17 이상 또는 7.17 이상이 필요해요.

datadog.yaml에서:

additional_endpoints:
  "https://app.<YOUR_DATADOG_SITE>":
  - apikey2
  - apikey3
  "https://app.<DD_SITE>": # <DD_SITE>를 Datadog 사이트 파라미터로 바꾸세요 (예: datadoghq.eu).
  - apikey4

환경 변수 구성

Agent 6.18 이상 또는 7.18 이상이 필요해요.

DD_ADDITIONAL_ENDPOINTS='{\"https://app.<YOUR_DATADOG_SITE>\": [\"apikey2\", \"apikey3\"], \"https://app.<DD_SITE>\": [\"apikey4\"]}' # <DD_SITE>를 Datadog 사이트 파라미터로 바꾸세요 (예: datadoghq.eu).

APM

YAML 구성

Agent 6.7.0 이상이 필요해요.

datadog.yaml에서:

apm_config:
  [...]
  additional_endpoints:
    "https://trace.agent.<YOUR_DATADOG_SITE>":
    - apikey2
    - apikey3
    "https://trace.agent.<DD_SITE>": # <DD_SITE>를 Datadog 사이트 파라미터로 바꾸세요 (예: datadoghq.eu).
    - apikey4

환경 변수 구성

Agent 6.19 이상 또는 7.19 이상이 필요해요.

DD_APM_ADDITIONAL_ENDPOINTS='{\"https://trace.agent.<YOUR_DATADOG_SITE>\": [\"apikey2\", \"apikey3\"], \"https://trace.agent.<DD_SITE>\": [\"apikey4\"]}' # <DD_SITE>를 Datadog 사이트 파라미터로 바꾸세요 (예: datadoghq.eu).

Continuous Profiler

YAML 구성

Agent 6.7.0 이상이 필요해요.

datadog.yaml에서:

apm_config:
  [...]
  profiling_additional_endpoints:
    "https://intake.profile.<YOUR_DATADOG_SITE>/api/v2/profile":
    - apikey2
    - apikey3
    "https://intake.profile.<DD_SITE>/api/v2/profile": # "<DD_SITE>"를 Datadog 사이트 파라미터로 바꾸세요 (예: datadoghq.eu).
    - apikey4

환경 변수 구성

Agent 6.19 이상 또는 7.19 이상이 필요해요.

DD_APM_PROFILING_ADDITIONAL_ENDPOINTS='{\"https://intake.profile.<YOUR_DATADOG_SITE>/api/v2/profile\": [\"apikey2\", \"apikey3\"], \"https://intake.profile.<DD_SITE>/api/v2/profile\": [\"apikey4\"]}' # <DD_SITE>를 Datadog 사이트 파라미터로 바꾸세요 (예: datadoghq.eu).

참고: Continuous Profiler 제품의 추가 엔드포인트 업로드는 best-effort 전달로 이뤄져요.

  • 메인 엔드포인트가 가장 높은 우선순위를 가져요. 추가 엔드포인트로의 업로드는 메인 엔드포인트 업로드가 성공적으로 완료된 후에만 처리돼요.
  • 추가 엔드포인트의 응답은 profiler로 다시 전달되지 않아요. 추가 엔드포인트로의 전달 중 발생한 오류는 Agent 오류 로그에 기록돼요.

Live Processes

YAML 구성

Agent 6.4.0 이상이 필요해요.

datadog.yaml에서:

process_config:
  [...]
  additional_endpoints:
    "https://process.<YOUR_DATADOG_SITE>":
    - apikey2
    - apikey3
    "https://process.<DD_SITE>": # <DD_SITE>를 Datadog 사이트 파라미터로 바꾸세요 (예: datadoghq.eu).
    - apikey4

환경 변수 구성

Agent 6.20 이상 또는 7.20 이상이 필요해요.

DD_PROCESS_ADDITIONAL_ENDPOINTS='{\"https://process.<YOUR_DATADOG_SITE>\": [\"apikey2\", \"apikey3\"], \"https://process.<DD_SITE>\": [\"apikey4\"]}' # <DD_SITE>를 Datadog 사이트 파라미터로 바꾸세요 (예: datadoghq.eu).

Cluster Agent 메트릭 (Cluster Agent metrics)

Kubernetes State Metrics Core 같은 Cluster Agent 메트릭을 추가 엔드포인트로 보내도록 Agent를 구성하세요.

HELM 구성

Datadog values.yaml에서:

clusterAgent:
  env:
    - name: DD_ADDITIONAL_ENDPOINTS
      value: '{"https://app.<YOUR_DATADOG_SITE>": ["apikey2"]}'

Cluster Agent 메트릭 제공자 (Cluster Agent metrics provider)

자동 확장이 장애에 탄력적으로 대응하도록, Cluster Agent가 듀얼 쉬핑된 데이터로 여러 Datadog 리전에 대해 HPA용 메트릭 쿼리를 실행하도록 구성하세요. Datadog Cluster Agent 매니페스트를 여러 엔드포인트로 구성하세요:

cluster-agent-deployment.yaml 파일에서:

external_metrics_provider:
  endpoints:
  - api_key: <DATADOG_API_KEY>
    app_key: <DATADOG_APP_KEY>
    url: https://app.<DD_SITE>
  - api_key: <DATADOG_API_KEY>
    app_key: <DATADOG_APP_KEY>
    url: https://app.<DD_SITE>

Orchestrator

HELM 구성

Datadog values.yaml에서:

agents:
  customAgentConfig:
    process_config:
      additional_endpoints:
        "https://process.<YOUR_DATADOG_SITE>":
        - apikey2
    orchestrator_explorer:
      orchestrator_additional_endpoints:
        "https://orchestrator.<YOUR_DATADOG_SITE>":
        - apikey3

clusterAgent:
...
  datadog_cluster_yaml:
    orchestrator_explorer:
      orchestrator_additional_endpoints:
        "https://orchestrator.<DD_SITE>": # <DD_SITE>를 Datadog 사이트 파라미터로 바꾸세요 (예: ddog-gov.com).
        - apikey4

환경 변수 구성

DD_ORCHESTRATOR_EXPLORER_ORCHESTRATOR_ADDITIONAL_ENDPOINTS='{\"https://orchestrator.<YOUR_DATADOG_SITE>\": [\"apikey2\", \"apikey3\"], \"https://orchestrator.<DD_SITE>\": [\"apikey4\"]}' # <DD_SITE>를 Datadog 사이트 파라미터로 바꾸세요 (예: ddog-gov.com).

CI Visibility

YAML 구성

Agent 6.38 이상 또는 7.38 이상이 필요해요.

datadog.yaml에서:

evp_proxy_config:
  [...]
  additional_endpoints:
    "https://<VERSION>-app.agent.<YOUR_DATADOG_SITE>":
    - apikey2
    - apikey3
    "https://<VERSION>-app.agent.<DD_SITE>":  # <VERSION>과 <DD_SITE>를 Agent 버전과 Datadog 사이트 파라미터로 바꾸세요 (예: 7-38-0 및 datadoghq.eu).
    - apikey4

환경 변수 구성

DD_EVP_PROXY_CONFIG_ADDITIONAL_ENDPOINTS='{\"https://<VERSION>-app.agent.<YOUR_DATADOG_SITE>\": [\"apikey2\", \"apikey3\"], \"https://<VERSION>-app.agent.<DD_SITE>\": [\"apikey4\"]}'  # <VERSION>과 <DD_SITE>를 Agent 버전과 Datadog 사이트 파라미터로 바꾸세요 (예: 7-38-0 및 datadoghq.eu).

로그 (Logs)

여러 Datadog 조직으로 로그를 듀얼 쉬핑하고 싶다면 Agent를 사용하세요. Datadog과 외부 목적지에 로그를 보내고 싶다면 Observability Pipelines을 사용하세요.

TCP에는 Agent 6.6 이상이, HTTPS에는 Agent 6.13 이상이 필요해요.

YAML 구성

datadog.yaml에서:

logs_config:
  force_use_http: true
  additional_endpoints:
  - api_key: "apiKey2"
    Host: "agent-http-intake.logs.<YOUR_DATADOG_SITE>"
    Port: 443
    is_reliable: true

환경 변수 구성

Agent 6.18 이상 또는 7.18 이상이 필요해요.

DD_LOGS_CONFIG_FORCE_USE_HTTP=true
DD_LOGS_CONFIG_ADDITIONAL_ENDPOINTS="[{\"api_key\": \"apiKey2\", \"Host\": \"agent-http-intake.logs.<YOUR_DATADOG_SITE>\", \"Port\": 443, \"is_reliable\": true}]"

추가 엔드포인트를 설정할 때는 Agent에 어떤 전송을 사용할지 알려주기 위해 명시적으로 use_http를 설정해야 해요. 동일한 전송 구성이 모든 추가 엔드포인트에 공유돼요.

is_reliable 설정(Agent 7.34.0에서 처음 제공)은 이 엔드포인트를 기본 엔드포인트와 동일한 우선순위로 처리하도록 Agent에 지시해요. 기본 엔드포인트는 항상 신뢰할 수 있어요. 이는 목적지 하나가 사용 불가능해져도 데이터가 누락되지 않도록 보장해요.

예를 들어 메인 엔드포인트와 is_reliable: true인 추가 엔드포인트에 데이터를 보내는데 한 엔드포인트가 사용 불가능해지면, 데이터는 계속 다른 엔드포인트로 흘러가요. 두 엔드포인트 모두 사용 불가능해지면 적어도 하나의 엔드포인트가 복구될 때까지 Agent는 데이터 읽기와 전송을 중지해요. 이는 모든 데이터가 적어도 하나의 신뢰할 수 있는 엔드포인트에 도달하도록 보장해요.

is_reliable 설정은 Agent 7.37.0+에서 기본값이 true예요. 신뢰할 수 없는 엔드포인트는 적어도 하나의 신뢰할 수 있는 엔드포인트를 사용할 수 있을 때만 데이터를 보내요. 여러 추가 엔드포인트를 is_reliable 값을 혼합해 정의할 수 있어요. Datadog은 기본 is_reliable 설정을 사용할 것을 권장해요.

YAML 구성을 datadog.yaml에 추가하거나 적절한 환경 변수로 Agent를 실행할 수 있어요.

Database Monitoring

YAML 구성

Agent 6.29 이상 또는 7.29 이상이 필요해요.

datadog.yaml에서:

database_monitoring:
  samples:
    force_use_http: true
    additional_endpoints:
    - api_key: "apiKey2"
      Host: "dbm-metrics-intake.<YOUR_DATADOG_SITE>"
      Port: 443
      is_reliable: true
  activity:
    force_use_http: true
    additional_endpoints:
    - api_key: "apiKey2"
      Host: "dbquery-intake.<YOUR_DATADOG_SITE>"
      Port: 443
      is_reliable: true
  metrics:
    force_use_http: true
    additional_endpoints:
    - api_key: "apiKey2"
      Host: "dbm-metrics-intake.<YOUR_DATADOG_SITE>"
      Port: 443
      is_reliable: true

환경 변수 구성

DD_DATABASE_MONITORING_SAMPLES_USE_HTTP=true
DD_DATABASE_MONITORING_SAMPLES_ADDITIONAL_ENDPOINTS="[{\"api_key\": \"apiKey2\", \"Host\": \"dbm-metrics-intake.<YOUR_DATADOG_SITE>\", \"Port\": 443, \"is_reliable\": true}]"
DD_DATABASE_MONITORING_ACTIVITY_USE_HTTP=true
DD_DATABASE_MONITORING_ACTIVITY_ADDITIONAL_ENDPOINTS="[{\"api_key\": \"apiKey2\", \"Host\": \"dbquery-intake.<YOUR_DATADOG_SITE>\", \"Port\": 443, \"is_reliable\": true}]"
DD_DATABASE_MONITORING_METRICS_USE_HTTP=true
DD_DATABASE_MONITORING_METRICS_ADDITIONAL_ENDPOINTS="[{\"api_key\": \"apiKey2\", \"Host\": \"dbm-metrics-intake.<YOUR_DATADOG_SITE>\", \"Port\": 443, \"is_reliable\": true}]"

추가 엔드포인트를 설정할 때는 Agent에 어떤 전송을 사용할지 알려주기 위해 명시적으로 use_http를 설정해야 해요. 동일한 전송 구성이 모든 추가 엔드포인트에 공유돼요.

is_reliable 설정(Agent 7.34.0에서 처음 제공)은 이 엔드포인트를 기본 엔드포인트와 동일한 우선순위로 처리하도록 Agent에 지시해요. 기본 엔드포인트는 항상 신뢰할 수 있어요. 이는 목적지 하나가 사용 불가능해져도 데이터가 누락되지 않도록 보장해요.

예를 들어 메인 엔드포인트와 is_reliable: true인 추가 엔드포인트에 데이터를 보내는데 한 엔드포인트가 사용 불가능해지면, 데이터는 계속 다른 엔드포인트로 흘러가요. 두 엔드포인트 모두 사용 불가능해지면 적어도 하나의 엔드포인트가 복구될 때까지 Agent는 데이터 읽기와 전송을 중지해요. 이는 모든 데이터가 적어도 하나의 신뢰할 수 있는 엔드포인트에 도달하도록 보장해요.

is_reliable 설정은 Agent 7.37.0+에서 기본값이 true예요. 신뢰할 수 없는 엔드포인트는 적어도 하나의 신뢰할 수 있는 엔드포인트를 사용할 수 있을 때만 데이터를 보내요. 여러 추가 엔드포인트를 is_reliable 값을 혼합해 정의할 수 있어요. Datadog은 기본 is_reliable 설정을 사용할 것을 권장해요.

YAML 구성을 datadog.yaml에 추가하거나 적절한 환경 변수로 Agent를 실행할 수 있어요.

네트워크 디바이스 (Network Devices)

YAML 구성

Agent 6.29 이상 또는 7.29 이상이 필요해요.

datadog.yaml에서:

network_devices:
  metadata:
    force_use_http: true
    additional_endpoints:
    - api_key: "apiKey2"
      Host: "ndm-intake.<YOUR_DATADOG_SITE>"
      Port: 443
      is_reliable: true
  snmp_traps:
    forwarder:
      force_use_http: true
      additional_endpoints:
      - api_key: "apiKey2"
        Host: "ndm-intake.<YOUR_DATADOG_SITE>"
        Port: 443
        is_reliable: true
  netflow:
    forwarder:
      force_use_http: true
      additional_endpoints:
      - api_key: "apiKey2"
        Host: "ndm-intake.<YOUR_DATADOG_SITE>"
        Port: 443
        is_reliable: true

환경 변수 구성

DD_NETWORK_DEVICES_METADATA_USE_HTTP=true
DD_NETWORK_DEVICES_METADATA_ADDITIONAL_ENDPOINTS="[{\"api_key\": \"apiKey2\", \"Host\": \"ndm-intake.<YOUR_DATADOG_SITE>\", \"Port\": 443, \"is_reliable\": true}]"

추가 엔드포인트를 설정할 때는 Agent에 어떤 전송을 사용할지 알려주기 위해 명시적으로 use_http를 설정해야 해요. 동일한 전송 구성이 모든 추가 엔드포인트에 공유돼요.

is_reliable 설정(Agent 7.34.0에서 처음 제공)은 이 엔드포인트를 기본 엔드포인트와 동일한 우선순위로 처리하도록 Agent에 지시해요. 기본 엔드포인트는 항상 신뢰할 수 있어요. 이는 목적지 하나가 사용 불가능해져도 데이터가 누락되지 않도록 보장해요.

예를 들어 메인 엔드포인트와 is_reliable: true인 추가 엔드포인트에 데이터를 보내는데 한 엔드포인트가 사용 불가능해지면, 데이터는 계속 다른 엔드포인트로 흘러가요. 두 엔드포인트 모두 사용 불가능해지면 적어도 하나의 엔드포인트가 복구될 때까지 Agent는 데이터 읽기와 전송을 중지해요. 이는 모든 데이터가 적어도 하나의 신뢰할 수 있는 엔드포인트에 도달하도록 보장해요.

is_reliable 설정은 Agent 7.37.0+에서 기본값이 true예요. 신뢰할 수 없는 엔드포인트는 적어도 하나의 신뢰할 수 있는 엔드포인트를 사용할 수 있을 때만 데이터를 보내요. 여러 추가 엔드포인트를 is_reliable 값을 혼합해 정의할 수 있어요. Datadog은 기본 is_reliable 설정을 사용할 것을 권장해요.

YAML 구성을 datadog.yaml에 추가하거나 적절한 환경 변수로 Agent를 실행할 수 있어요.

네트워크 경로 (Network Path)

YAML 구성

Agent 6.55 이상 또는 7.55 이상이 필요해요.

datadog.yaml에서:

network_path:
  forwarder:
    use_http: true
    additional_endpoints:
    - api_key: "apiKey2"
      Host: "netpath-intake.<YOUR_DATADOG_SITE>"
      Port: 443
      is_reliable: true

환경 변수 구성

DD_NETWORK_PATH_FORWARDER_USE_HTTP=true
DD_NETWORK_PATH_FORWARDER_ADDITIONAL_ENDPOINTS="[{\"api_key\": \"apiKey2\", \"Host\": \"netpath-intake.<YOUR_DATADOG_SITE>\", \"Port\": 443, \"is_reliable\": true}]"

추가 엔드포인트를 설정할 때는 Agent에 어떤 전송을 사용할지 알려주기 위해 명시적으로 use_http를 설정해야 해요. 동일한 전송 구성이 모든 추가 엔드포인트에 공유돼요.

is_reliable 설정(Agent 7.34.0에서 처음 제공)은 이 엔드포인트를 기본 엔드포인트와 동일한 우선순위로 처리하도록 Agent에 지시해요. 기본 엔드포인트는 항상 신뢰할 수 있어요. 이는 목적지 하나가 사용 불가능해져도 데이터가 누락되지 않도록 보장해요.

예를 들어 메인 엔드포인트와 is_reliable: true인 추가 엔드포인트에 데이터를 보내는데 한 엔드포인트가 사용 불가능해지면, 데이터는 계속 다른 엔드포인트로 흘러가요. 두 엔드포인트 모두 사용 불가능해지면 적어도 하나의 엔드포인트가 복구될 때까지 Agent는 데이터 읽기와 전송을 중지해요. 이는 모든 데이터가 적어도 하나의 신뢰할 수 있는 엔드포인트에 도달하도록 보장해요.

is_reliable 설정은 Agent 7.37.0+에서 기본값이 true예요. 신뢰할 수 없는 엔드포인트는 적어도 하나의 신뢰할 수 있는 엔드포인트를 사용할 수 있을 때만 데이터를 보내요. 여러 추가 엔드포인트를 is_reliable 값을 혼합해 정의할 수 있어요. Datadog은 기본 is_reliable 설정을 사용할 것을 권장해요.

YAML 구성을 datadog.yaml에 추가하거나 적절한 환경 변수로 Agent를 실행할 수 있어요.

Cloud Security Misconfigurations

YAML 구성

datadog.yaml에서:

compliance_config:
  endpoints:
    force_use_http: true
    additional_endpoints:
    - api_key: "apiKey2"
      host: "cspm-intake.<YOUR_DATADOG_SITE>.:443"
      is_reliable: true

환경 변수 구성

DD_COMPLIANCE_CONFIG_ENDPOINTS_USE_HTTP=true
DD_COMPLIANCE_CONFIG_ENDPOINTS_ADDITIONAL_ENDPOINTS="[{\"api_key\": \"apiKey2\", \"host\": \"cspm-intake.<YOUR_DATADOG_SITE>.:443\", \"is_reliable\": true}]"

추가 엔드포인트를 설정할 때는 Agent에 어떤 전송을 사용할지 알려주기 위해 명시적으로 use_http를 설정해야 해요. 동일한 전송 구성이 모든 추가 엔드포인트에 공유돼요.

is_reliable 설정(Agent 7.34.0에서 처음 제공)은 이 엔드포인트를 기본 엔드포인트와 동일한 우선순위로 처리하도록 Agent에 지시해요. 기본 엔드포인트는 항상 신뢰할 수 있어요. 이는 목적지 하나가 사용 불가능해져도 데이터가 누락되지 않도록 보장해요.

예를 들어 메인 엔드포인트와 is_reliable: true인 추가 엔드포인트에 데이터를 보내는데 한 엔드포인트가 사용 불가능해지면, 데이터는 계속 다른 엔드포인트로 흘러가요. 두 엔드포인트 모두 사용 불가능해지면 적어도 하나의 엔드포인트가 복구될 때까지 Agent는 데이터 읽기와 전송을 중지해요. 이는 모든 데이터가 적어도 하나의 신뢰할 수 있는 엔드포인트에 도달하도록 보장해요.

is_reliable 설정은 Agent 7.37.0+에서 기본값이 true예요. 신뢰할 수 없는 엔드포인트는 적어도 하나의 신뢰할 수 있는 엔드포인트를 사용할 수 있을 때만 데이터를 보내요. 여러 추가 엔드포인트를 is_reliable 값을 혼합해 정의할 수 있어요. Datadog은 기본 is_reliable 설정을 사용할 것을 권장해요.

YAML 구성을 datadog.yaml에 추가하거나 적절한 환경 변수로 Agent를 실행할 수 있어요.

Workload Protection

YAML 구성

datadog.yaml에서:

runtime_security_config:
  endpoints:
    force_use_http: true
    additional_endpoints:
    - api_key: "apiKey2"
      host: "cws-intake.<YOUR_DATADOG_SITE>.:443"
      is_reliable: true

환경 변수 구성

DD_RUNTIME_SECURITY_CONFIG_ENDPOINTS_USE_HTTP=true
DD_RUNTIME_SECURITY_CONFIG_ENDPOINTS_ADDITIONAL_ENDPOINTS="[{\"api_key\": \"apiKey2\", \"host\": \"cws-intake.<YOUR_DATADOG_SITE>.:443\", \"is_reliable\": true}]"

추가 엔드포인트를 설정할 때는 Agent에 어떤 전송을 사용할지 알려주기 위해 명시적으로 use_http를 설정해야 해요. 동일한 전송 구성이 모든 추가 엔드포인트에 공유돼요.

is_reliable 설정(Agent 7.34.0에서 처음 제공)은 이 엔드포인트를 기본 엔드포인트와 동일한 우선순위로 처리하도록 Agent에 지시해요. 기본 엔드포인트는 항상 신뢰할 수 있어요. 이는 목적지 하나가 사용 불가능해져도 데이터가 누락되지 않도록 보장해요.

예를 들어 메인 엔드포인트와 is_reliable: true인 추가 엔드포인트에 데이터를 보내는데 한 엔드포인트가 사용 불가능해지면, 데이터는 계속 다른 엔드포인트로 흘러가요. 두 엔드포인트 모두 사용 불가능해지면 적어도 하나의 엔드포인트가 복구될 때까지 Agent는 데이터 읽기와 전송을 중지해요. 이는 모든 데이터가 적어도 하나의 신뢰할 수 있는 엔드포인트에 도달하도록 보장해요.

is_reliable 설정은 Agent 7.37.0+에서 기본값이 true예요. 신뢰할 수 없는 엔드포인트는 적어도 하나의 신뢰할 수 있는 엔드포인트를 사용할 수 있을 때만 데이터를 보내요. 여러 추가 엔드포인트를 is_reliable 값을 혼합해 정의할 수 있어요. Datadog은 기본 is_reliable 설정을 사용할 것을 권장해요.

YAML 구성을 datadog.yaml에 추가하거나 적절한 환경 변수로 Agent를 실행할 수 있어요.

Kubernetes에서의 듀얼 쉬핑 (Dual shipping in Kubernetes)

Helm — Datadog Agent Helm 차트를 사용한다면 configmap으로 이 설정들을 구성할 수 있어요. values.yaml에서 useConfigMap: true로 설정하고 관련 설정을 customAgentConfig에 추가하세요.

# agents.useConfigMap -- Configures a configmap to provide the agent configuration. Use this in combination with the `agents.customAgentConfig` parameter.
  useConfigMap:  true

  # agents.customAgentConfig -- Specify custom contents for the datadog agent config (datadog.yaml)
  ## ref: https://docs.datadoghq.com/agent/configuration/agent-configuration-files/?tab=agentv6
  ## ref: https://github.com/DataDog/datadog-agent/tree/main/pkg/config/example
  ## Note the `agents.useConfigMap` needs to be set to `true` for this parameter to be taken into account.
  customAgentConfig:
    additional_endpoints:
      "https://app.<DD_SITE>":  # <DD_SITE>를 Datadog 사이트 파라미터로 바꾸세요 (예: datadoghq.com).
      - apikey2
      - apikey3
      "https://app.<DD_SITE>":  # <DD_SITE>를 Datadog 사이트 파라미터로 바꾸세요 (예: datadoghq.eu).
      - apikey4

    logs_config:
      force_use_http: true
      additional_endpoints:
      - api_key: "apiKey2"
        Host: "agent-http-intake.logs.<DD_SITE>" # <DD_SITE>를 Datadog 사이트 파라미터로 바꾸세요 (예: datadoghq.com).
        Port: 443
        is_reliable: true

ConfigMap 안에서 API 키를 평문으로 노출하지 않으려면 환경 변수 구성을 사용하고 Kubernetes 시크릿을 참조할 수도 있어요. 추가 리전으로 메트릭을 보내는 예시는 다음과 같아요:

  1. 이 가이드의 환경 변수 구성 값으로 Kubernetes 시크릿을 만드세요:
    kubectl create -n <DATADOG AGENT NAMESPACE> secret generic dual-shipping --from-literal metrics='{"https://app.<DD_SITE>": ["apikey4"]}' # <DD_SITE>를 Datadog 사이트 파라미터로 바꾸세요 (예: datadoghq.eu).
    
  2. Helm 차트 파라미터 datadog.env 또는 datadog.envFrom을 사용해 구성에서 이 시크릿을 참조하세요:
    datadog:
      [...]
      env:
      - name: DD_ADDITIONAL_ENDPOINTS
        valueFrom:
          secretKeyRef:
            name: dual-shipping
            key: metrics
    

Datadog Operator — Datadog Agent operator를 사용한다면 [key].customConfigurations.[key].configData override 키로 이 설정들을 지정할 수 있어요. 아래 예시는 node Agent의 datadog.yaml 설정 파일을 교체해 메트릭과 로그를 추가 리전으로 보내요.

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  override:
    nodeAgent:
      customConfigurations:
        datadog.yaml:
          ## <DD_SITE>를 Datadog 사이트 파라미터로 바꾸세요 (예: `apikey2`와 `apikey3`는 datadoghq.com (US1), `apikey4`는 datadoghq.eu (EU)).
          configData: |-
            additional_endpoints:
              "https://app.<DD_SITE>":  
              - apikey2
              - apikey3
              "https://app.<DD_SITE>":  
              - apikey4
            logs_config:
              force_use_http: true
              additional_endpoints:
              - api_key: "apiKey2"
                Host: "agent-http-intake.logs.<DD_SITE>"
                Port: 443
                is_reliable: true

ConfigMap 안에서 API 키를 평문으로 노출하지 않으려면 환경 변수 구성을 사용하고 Kubernetes 시크릿을 참조할 수도 있어요. 추가 리전으로 메트릭을 보내는 예시는 다음과 같아요:

  1. 이 가이드의 환경 변수 구성 값으로 Kubernetes 시크릿을 만드세요:
    kubectl create -n <DATADOG AGENT NAMESPACE> secret generic dual-shipping --from-literal metrics='{"https://app.<DD_SITE>": ["apikey4"]}'  # <DD_SITE>를 Datadog 사이트 파라미터로 바꾸세요 (예: datadoghq.eu).
    
  2. [key].env 파라미터를 사용해 구성에서 이 시크릿을 참조하세요:
    apiVersion: datadoghq.com/v2alpha1
    kind: DatadogAgent
    metadata:
      name: datadog
    spec:
      override:
        nodeAgent:
          env:
          - name: DD_ADDITIONAL_ENDPOINTS
            valueFrom:
              secretKeyRef:
                name: dual-shipping
                key: metrics
    

더 알아보기 (Learn more)

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