Datadog으로 하이브리드/프라이빗 클라우드 모니터링하기

Datadog으로 하이브리드/프라이빗 클라우드 모니터링하기 (ops-monitoring-hybrid-cloud-datadog)

소요 시간: 20분 난이도: 중급(Intermediate)

이 튜토리얼은 Hybrid Cloud나 Private Cloud에 사용되는 Kubernetes 클러스터에서 실행 중인 Qdrant 클러스터를 모니터링하도록 Datadog을 설정하는 과정을 안내해요.

출처: Qdrant 공식문서 - Monitoring with Datadog

사전 준비 (Prerequisites)

  • Hybrid Cloud 또는 Private Cloud 배포로 Qdrant 데이터베이스가 배포된 Kubernetes 클러스터
  • 클러스터와 상호작용하도록 구성된 kubectlhelm
  • Datadog 계정과 Datadog API 키

1단계: Datadog Operator 설치하기

아직 클러스터에 Datadog을 설치하지 않았다면, Datadog Operator를 사용해서 Datadog Agent를 배포하고 관리할 수 있어요. Operator는 Agent를 DaemonSet으로 실행해서, 클러스터의 모든 노드에 하나씩 파드를 띄워요.

Datadog Helm 저장소를 추가하고 Operator를 설치하세요:

helm repo add datadog https://helm.datadoghq.com
helm install datadog-operator datadog/datadog-operator --namespace datadog --create-namespace

다음으로, Datadog API 키를 담는 Kubernetes 시크릿을 만드세요. Agent가 이 시크릿을 읽어 Datadog에 인증해요:

kubectl create secret generic datadog-secret --namespace datadog --from-literal api-key=<DATADOG_API_KEY>

<DATADOG_API_KEY>를 여러분 자신의 API 키로 바꾸면 돼요.

2단계: Qdrant 메트릭을 스크레이프하도록 Datadog Agent 구성하기

Qdrant를 모니터링하려면 Qdrant 데이터베이스에서 메트릭을 스크레이프하도록 Datadog Agent를 구성해야 해요. Agent의 Autodiscovery 메커니즘을 통해 OpenMetrics 체크를 추가하는 DatadogAgent 리소스를 만들어요.

Agent는 ad_identifiers 값을 사용해서 Qdrant 클러스터 exporter와 operator 파드를 발견한 다음, 각 파드가 노출하는 OpenMetrics 엔드포인트를 스크레이프해요. %%host%% 템플릿 변수는 런타임에 발견된 파드의 IP로 해석돼요.

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
  namespace: datadog
spec:
  global:
    site: datadoghq.com
    credentials:
      apiSecret:
        secretName: datadog-secret
        keyName: api-key
  override:
    nodeAgent:
      extraConfd:
        configDataMap:
          openmetrics.yaml: |-
            ad_identifiers:
              - qdrant-cluster-exporter
              - operator
            init_config:
            instances:
              # Instance 1: Qdrant Metrics Exporter
              - openmetrics_endpoint: http://%%host%%:9090/metrics
                namespace: qdrant.exporter
                metrics:
                  - .*
              # Instance 2: Qdrant Operator Metrics
              - openmetrics_endpoint: http://%%host%%:9290/metrics
                namespace: qdrant.operator
                metrics:
                  - .*

매니페스트를 적용하세요:

kubectl apply -f datadog-agent.yaml

이 구성에 대한 몇 가지 참고 사항이에요:

  • 첫 번째 인스턴스는 포트 9090의 Qdrant cluster exporter를 스크레이프하고 메트릭을 qdrant.exporter 네임스페이스 아래로 분류해요.
  • 두 번째 인스턴스는 포트 9290의 Qdrant operator를 스크레이프하고 메트릭을 qdrant.operator 네임스페이스 아래로 분류해요.
  • metrics: - .* 는 엔드포인트가 노출하는 모든 메트릭을 수집해요. 커스텀 메트릭의 양을 줄이려면 이것을 메트릭 이름의 명시적 목록으로 바꾸세요.

이 예시는 Qdrant 클러스터, 클라우드 플랫폼 exporter, operator가 모두 qdrant 네임스페이스에 배포되어 있다고 가정해요. Datadog node Agent는 네임스페이스와 무관하게 자신의 노드에서 실행 중인 파드를 발견하므로, 네임스페이스 선택자가 필요 없어요. 배포가 기본값과 다르면 포트와 식별자만 조정하면 돼요.

3단계: Datadog에서 Qdrant 메트릭 보기

Agent가 실행되어 Qdrant를 스크레이프하면, 메트릭이 흐르는지 확인해 봐요.

먼저 OpenMetrics 체크가 정상인지 확인하세요. node Agent 파드를 찾아서 status 명령을 실행해요:

kubectl exec -it <DATADOG_AGENT_POD> --namespace datadog -- agent status

출력에서 openmetrics 체크를 찾아보세요. 오류 없이 Qdrant 인스턴스를 보고하고, 메트릭 샘플 수가 0이 아니어야 해요.

다음으로 Datadog을 열고 Metrics > Explorer로 가서, qdrant.exporter. 또는 qdrant.operator.로 시작하는 메트릭을 검색해서 Datadog이 수신하고 있는지 확인하세요.

더 알아보기 (Learn more)