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/대상에 표시되는지 확인합니다.