Freigeben über


Anpassen der Sammlung mithilfe von CRDs (Dienst- und Podmonitore)

Die Aktivierung von verwaltetem Prometheus stellt automatisch die benutzerdefinierten Ressourcendefinitionen (Custom Resource Definitions, CRD) für Podmonitore und Dienstmonitore bereit. Diese benutzerdefinierten Ressourcendefinitionen sind dieselben benutzerdefinierten Ressourcendefinitionen (CRD) wie bei OSS-Podmonitoren und OSS-Dienstmonitoren für Prometheus, mit Ausnahme einer Änderung des Gruppennamens. Wenn Sie über Prometheus-CRDs und benutzerdefinierte Ressourcen in Ihrem Cluster verfügen, stehen diese CRDs nicht im Konflikt mit den CRDs, die vom Add-On erstellt wurden. Gleichzeitig übernimmt das verwaltete Prometheus-Add-On nicht die für OSS Prometheus erstellten CRDs. Diese Trennung ist beabsichtigt und dient der Isolierung von Ausleseaufträgen.

Hinweis

Unterstützung für benutzerdefinierte Ressourcendefinitionen (CRDs) in Azure ARC-fähigen Kubernetes ist derzeit nicht verfügbar.

Erstellen eines Pod- oder Dienstmonitors

Verwenden Sie die Vorlagen „Pod“ und „Service Monitor“ und befolgen Sie die API-Spezifikation, um Ihre benutzerdefinierten Ressourcen (PodMonitor und Service Monitor) zu erstellen. Beachten Sie, dass die einzige für die vorhandenen OSS-CRs (Custom Resources) erforderliche Änderung für die Übernahme durch das verwaltete Prometheus die API-Gruppe – azmonitoring.coreos.com/v1 – ist.

Hinweis: Stellen Sie sicher, dass Sie labelLimit, labelNameLengthLimit und labelValueLengthLimit verwenden, die in den Vorlagen angegeben sind, damit sie während der Verarbeitung nicht verworfen werden.

Ihre Pod- und Dienstmonitore sollten wie die folgenden Beispiele aussehen:

Beispiel-Podmonitor

# 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

Beispiel-Dienstmonitor

# 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

Bereitstellen eines Pod- oder Dienstmonitors

Anschließend können Sie den Pod- oder Dienstmonitor mithilfe von „kubectl apply“ bereitstellen.

Bei Anwendung sollten alle Fehler in den benutzerdefinierten Ressourcen angezeigt werden, und die Anwendung der Pod- oder Dienstmonitore sollte fehlschlagen.
Eine erfolgreiche Erstellung eines Podmonitors sieht wie folgt aus:

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

Beispiele

Erstellen einer Beispielanwendung

Stellen Sie eine Beispielanwendung bereit, die Prometheus-Metriken verfügbar macht, die vom Pod-/Dienstmonitor konfiguriert werden sollen.

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

Erstellen eines Podmonitors und/oder Dienstmonitors zum Auslesen von Metriken

Stellen Sie einen Podmonitor bereit, der für das Auslesen von Metriken aus der Beispielanwendung aus dem vorherigen Schritt konfiguriert ist.

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

Problembehandlung

Wenn die Pod- oder Dienstmonitore erfolgreich angewendet werden, sollte das Add-On automatisch mit dem Sammeln von Metriken aus den Zielen beginnen. Um dies zu bestätigen, folgen Sie den Anweisungen hier für die allgemeine Problembehandlung von benutzerdefinierten Ressourcen und um sicherzustellen, dass die Ziele unter „127.0.0.1/targets“ angezeigt werden.

Screenshot, der die Ziele für den Pod-/Dienstmonitor zeigt

Nächste Schritte