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.

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.

Screenshot che mostra destinazioni per il monitoraggio di pod/servizi

Passaggi successivi