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.