Partager via


Personnaliser la collection à l’aide de CRDs (Moniteurs de service et de pods)

L’activation de Prometheus managé déploie automatiquement les définitions de ressources personnalisées (CRD) pour les moniteurs de pods et les moniteurs de service. Ces définitions de ressources personnalisées sont les mêmes définitions de ressources personnalisées que les moniteurs de pod OSS et les moniteurs de service OSS pour Prometheus, à l’exception d’une modification du nom du groupe. Si vous avez des CRD Prometheus existants et des ressources personnalisées sur votre cluster, ces CRD ne seront pas en conflit avec les CRD créés par le module complémentaire. Et en même temps, le module complémentaire Prometheus managé ne récupère pas les CRD créés pour l’OSS Prometheus. Cette séparation est intentionnelle et a pour but l’isolation des travaux de récupération.

Créer un moniteur de pod ou de service

Utilisez les modèles de moniteur de pod et de service et suivez la spécification de l’API pour créer vos ressources personnalisées (Moniteur de pod et Moniteur de service). Notez que la seule modification requise pour les CR (ressources personnalisées) OSS existantes pour qu’elles soient récupérées par le Prometheus géré est le groupe d’API azmonitoring.coreos.com/v1.

Remarque : veillez à utiliser les labelLimit, labelNameLengthLimit et labelValueLengthLimit spécifiées dans les modèles afin qu’elles ne soient pas supprimées pendant le traitement.

Vos moniteurs de pod et de service doivent ressembler aux exemples suivants :

Exemple de moniteur de 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

Exemple de moniteur de service

# 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

Déployer un moniteur de pod ou de service

Vous pouvez ensuite déployer le moniteur de pod ou de service à l’aide de kubectl apply.

En cas d’application, les erreurs dans les ressources personnalisées doivent s’afficher et les moniteurs de pod ou de service ne doivent pas s’appliquer.
Une création réussie d’un moniteur de pod ressemble à ce qui suit :

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

Exemples

Créer un exemple d’application

Déployez un exemple d’application exposant les métriques prometheus à configurer par pod/service monitor.

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

Créez un moniteur de pod et/ou un moniteur de service pour supprimer des métriques

Déployez un moniteur de pod configuré pour supprimer les métriques de l’exemple d’application de l’étape précédente.

Moniteur de pod
kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/otelcollector/deploy/example-custom-resources/pod-monitor/pod-monitor-reference-app.yaml
Moniteur de service
kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/otelcollector/deploy/example-custom-resources/service-monitor/service-monitor-reference-app.yaml

Dépannage

Lorsque les moniteurs de pod ou de service sont correctement appliqués, le module complémentaire doit commencer automatiquement à collecter des métriques à partir des cibles. Pour confirmer cela, suivez les instructions ici pour résoudre les problèmes généraux des ressources personnalisées et pour vous assurer que les cibles apparaissent dans 127.0.0.1/targets.

Capture d’écran montrant les cibles pour le moniteur de pod ou de service

Étapes suivantes