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.