Personalizzare la raccolta usando definizioni di risorse personalizzate (Monitoraggi di servizi e pod)
L'abilitazione di Prometheus gestito distribuisce automaticamente le definizioni di risorse personalizzate (CRD) per i monitoraggi dei pod e i monitoraggi dei servizi. Queste definizioni di risorse personalizzate sono le stesse definizioni di risorse personalizzate dei monitoraggi dei pod per software open source e dei monitoraggi dei servizi per software open source per Prometheus, ad eccezione di una modifica nel nome del gruppo. Se nel cluster sono presenti definizioni di risorse personalizzate di Prometheus e risorse personalizzate esistenti, queste definizioni di risorse personalizzate non saranno in conflitto con le definizioni di risorse personalizzate create dal componente aggiuntivo. Allo stesso tempo, il componente aggiuntivo Prometheus gestito non usa le definizioni di risorse personalizzate creata per Prometheus per software open source. Questa separazione è intenzionale ai fini dell'isolamento dei lavori di scorporamento.
Nota
Il supporto per le definizioni di risorse personalizzate (CRD) in Kubernetes abilitato per Azure ARC non è attualmente disponibile.
Creare un monitoraggio di pod o servizi
Usare i modelli Monitoraggio di Pod e dei servizi e seguire la specifica dell'API per creare le risorse personalizzate (PodMonitor e Monitoraggio dei servizi). Si noti che l'unica modifica necessaria per le risorse personalizzate esistenti del software open source per consentirne l'uso da parte di Prometheus gestito è il gruppo di API, ovvero azmonitoring.coreos.com/v1.
Nota: assicurarsi di usare labelLimit, labelNameLengthLimit e labelValueLengthLimit specificati nei modelli in modo che non vengano rimossi durante l'elaborazione.
I monitoraggi di pod e servizi dovrebbero essere simili agli esempi seguenti:
Monitoraggio di pod di esempio
# 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
Monitoraggio di servizi di esempio
# 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
Distribuire un monitoraggio di pod o servizi
È quindi possibile distribuire il monitoraggio di pod o servizi usando kubectl apply.
Dopo l'applicazione, eventuali errori nelle risorse personalizzate dovrebbero essere visualizzati e non dovrebbe essere possibile applicare i monitoraggio di pod o servizi.
La creazione di un monitoraggio di pod corretto è simile alla seguente:
podmonitor.azmonitoring.coreos.com/my-pod-monitor created
Esempi
Creare un’applicazione di esempio
Distribuire un'applicazione di esempio che espone le metriche di Prometheus da configurare tramite il monitoraggio di pod/servizi.
kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/internal/referenceapp/prometheus-reference-app.yaml
Creare un monitoraggio di pod e/o un monitoraggio di servizi per scorporare le metriche
Distribuire un monitoraggio di pod configurato per scorporare le metriche dall'applicazione di esempio del passaggio precedente.
Monitoraggio di pod
kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/otelcollector/deploy/example-custom-resources/pod-monitor/pod-monitor-reference-app.yaml
Monitoraggio di servizi
kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/otelcollector/deploy/example-custom-resources/service-monitor/service-monitor-reference-app.yaml
Risoluzione dei problemi
Quando i monitoraggi di pod o di servizi vengono applicati correttamente, il componente aggiuntivo dovrebbe iniziare automaticamente a raccogliere le metriche dalle destinazioni. Per confermare che sia così, seguire le istruzioni disponibili qui per la risoluzione dei problemi generali delle risorse personalizzate e anche per assicurarsi che le destinazioni vengano visualizzate in 127.0.0.1/targets.