Share via


CRD를 사용하여 컬렉션 사용자 지정(서비스 및 Pod 모니터)

참고 항목

Managed Prometheus를 사용한 CRD 지원은 현재 미리 보기로 제공됩니다.

Managed Prometheus를 사용하도록 설정하면 Pod 모니터 및 서비스 모니터에 대한 CRD(사용자 지정 리소스 정의)가 자동으로 배포됩니다. 이러한 사용자 지정 리소스 정의는 그룹 이름 변경을 제외하고 PROMetheus에 대한 OSS Pod 모니터 및 OSS 서비스 모니터동일한 CRD(사용자 지정 리소스 정의)입니다. 클러스터에 기존 Prometheus CRD 및 사용자 지정 리소스가 있는 경우 이러한 CRD는 추가 기능에서 만든 CRD와 충돌하지 않습니다. 동시에 관리되는 Prometheus 추가 기능은 OSS Prometheus에 대해 만든 CRD를 선택하지 않습니다. 이 분리는 스크랩 작업의 격리를 위해 의도적인 것입니다.

Pod 또는 서비스 모니터 만들기

Pod 및 서비스 모니터 템플릿을 사용하고 API 사양에 따라 사용자 지정 리소스(PodMonitor서비스 모니터)를 만듭니다. Managed Prometheus에서 선택하기 위해 기존 OSS CR(사용자 지정 리소스)에 필요한 유일한 변경 내용은 API 그룹인 azmonitoring.coreos.com/v1.

참고 - 처리 중에 삭제되지 않도록 템플릿에 지정된 labelLimit, labelNameLengthLimit 및 labelValueLengthLimit를 사용해야 합니다.

Pod 및 서비스 모니터는 다음 예제와 같아야 합니다.

예제 Pod 모니터

# Note the API version is azmonitoring.coreos.com/v1 instead of monitoring.coreos.com/v1
apiVersion: azmonitoring.coreos.com/v1
kind: PodMonitor

# Can be deployed in any namespace
metadata:
  name: reference-app
  namespace: app-namespace
spec:
  labelLimit: 63
  labelNameLengthLimit: 511
  labelValueLengthLimit: 1023

  # The selector specifies which pods to filter for
  selector:

    # Filter by pod labels
    matchLabels:
      environment: test
    matchExpressions:
      - key: app
        operator: In
        values: [app-frontend, app-backend]

    # [Optional] Filter by pod namespace
    namespaceSelector:
      matchNames: [app-frontend, app-backend]

  # [Optional] Labels on the pod with these keys will be added as labels to each metric scraped
  podTargetLabels: [app, region, environment]

  # Multiple pod endpoints can be specified. Port requires a named port.
  podMetricsEndpoints:
    - port: metrics

예제 서비스 모니터

# Note the API version is azmonitoring.coreos.com/v1 instead of monitoring.coreos.com/v1
apiVersion: azmonitoring.coreos.com/v1
kind: ServiceMonitor

# Can be deployed in any namespace
metadata:
  name: reference-app
  namespace: app-namespace
spec:
  labelLimit: 63
  labelNameLengthLimit: 511
  labelValueLengthLimit: 1023

  # The selector filters endpoints by service labels.
  selector:
    matchLabels:
      app: reference-app

  # Multiple endpoints can be specified. Port requires a named port.
  endpoints:
  - port: metrics

Pod 또는 서비스 모니터 배포

그런 다음 kubectl apply를 사용하여 Pod 또는 서비스 모니터를 배포할 수 있습니다.

적용하면 사용자 지정 리소스의 모든 오류가 표시되고 Pod 또는 서비스 모니터가 적용되지 않아야 합니다.
성공적인 Pod 모니터 만들기는 다음과 같습니다.

podmonitor.azmonitoring.coreos.com/my-pod-monitor created

예제

샘플 애플리케이션 만들기

Pod/서비스 모니터에서 구성할 prometheus 메트릭을 노출하는 샘플 애플리케이션을 배포합니다.

kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/internal/referenceapp/prometheus-reference-app.yaml

메트릭을 긁어내는 Pod 모니터 및/또는 서비스 모니터 만들기

이전 단계의 예제 애플리케이션에서 메트릭을 긁어내도록 구성된 Pod 모니터를 배포합니다.

Pod 모니터
kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/otelcollector/deploy/example-custom-resources/pod-monitor/pod-monitor-reference-app.yaml
서비스 모니터
kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/otelcollector/deploy/example-custom-resources/service-monitor/service-monitor-reference-app.yaml

문제 해결

Pod 또는 서비스 모니터가 성공적으로 적용되면 추가 기능이 대상에서 메트릭 수집을 자동으로 시작해야 합니다. 이를 확인하려면 사용자 지정 리소스의 일반적인 문제 해결에 대한 지침을 따르고 대상이 127.0.0.1/대상에 표시되는지 확인합니다.

Pod/서비스 모니터의 대상을 보여 주는 스크린샷

다음 단계