Anpassen des Auslesens von Prometheus-Metriken im verwalteten Azure Monitor-Dienst für Prometheus
Dieser Artikel enthält Anweisungen dazu, wie Sie das Auslesen von Metriken für einen Kubernetes-Cluster mit dem Metrik-Add-On in Azure Monitor anpassen.
ConfigMaps
Vier verschiedene ConfigMaps können konfiguriert werden, um die Auslesekonfiguration und andere Einstellungen für das Metrik-Add-On bereitzustellen. Alle ConfigMaps sollten auf den kube-system
-Namespace für jeden Cluster angewendet werden.
Hinweis
Keine der vier Konfigurationszuordnungen ist standardmäßig im Cluster vorhanden, wenn Managed Prometheus aktiviert wird. Je nachdem, was angepasst werden muss, müssen Sie eine oder alle dieser vier Konfigurationszuordnungen mit demselben Namen im Namespace kube-system
bereitstellen. AMA-Metrics-Pods nehmen diese Konfigurationszuordnungen auf, nachdem Sie sie im Namespace kube-system
bereitgestellt haben, und starten in 2–3 Minuten neu, um die in der/den Konfigurationszuordnung(en) angegebenen Konfigurationseinstellungen anzuwenden.
ama-metrics-settings-configmap
Diese ConfigMap enthält einfache Einstellungen (siehe unten), die konfiguriert werden können. Sie können die ConfigMap aus dem obigen Git Hub-Repository verwenden, die erforderlichen Einstellungen ändern und die ConfigMap auf denkube-system
-Namespace für Ihren Cluster anwenden/bereitstellen.- Clusteralias (zum Ändern des Werts der Bezeichnung
cluster
in jeder Zeitreihe/Metrik, die aus einem Cluster erfasst wird) - Aktivieren/Deaktivieren von Standard-Auslesezielen: Aktivieren/Deaktivieren Sie das Standardauslesen basierend auf Zielen. Die Auslesekonfiguration für diese Standardziele ist bereits vordefiniert/integriert.
- Aktivieren von auf Podanmerkungen basierendem Auslesen pro Namespace
- Metrikaufbewahrungslisten: Diese Einstellung wird verwendet, um zu steuern, welche Metriken von jedem Standardziel zugelassen werden sollen, und um das Standardverhalten zu ändern.
- Auslese-Intervalle für Standard-/Vorabdefinitionsziele.
30 secs
ist die Standard-Auslesehäufigkeit und kann mit dieser ConfigMap nach Standardziel geändert werden. - Debugmodus: Wenn Sie diese Option aktivieren, können Sie fehlende Metrik-/Erfassungsprobleme debuggen. Weitere Informationen finden Sie unter Problembehandlung.
- Clusteralias (zum Ändern des Werts der Bezeichnung
ama-metrics-prometheus-config
Diese ConfigMap kann verwendet werden, um eine Prometheus-Auslesekonfiguration für das Add-On-Replikat bereitzustellen. Das Add-On führt ein Singleton-Replikat aus, und alle Dienste auf Clusterebene können ermittelt und ausgelesen werden, indem in dieser ConfigMap Ausleseaufträge bereitgestellt werden. Sie können die Beispiel-ConfigMap aus dem obigen Git Hub-Repository verwenden, Ausleseaufträge hinzufügen, die Sie benötigen, und die ConfigMap zumkube-system
-Namespace für Ihren Cluster anwenden/bereitstellen. Obwohl dies unterstützt wird, beachten Sie, dass die empfohlene Methode zum Scraping (Auslesen) von benutzerdefinierten Zielen benutzerdefinierte Ressourcen verwendetama-metrics-prometheus-config-node
(Erweitert) Diese ConfigMap kann verwendet werden, um die Prometheus-Auslesekonfiguration für das Add-On DaemonSet bereitzustellen, das auf jedem Linux-Knoten im Cluster ausgeführt wird, und alle Ziele auf Knotenebene auf jedem Knoten können durch Bereitstellen von Ausleseaufträgen in dieser ConfigMap ausgelesen werden. Wenn Sie diese Configmap verwenden, können Sie die Variable$NODE_IP
in Ihrer Auslesekonfiguration verwenden, die durch die IP-Adresse des entsprechenden Knotens im DaemonSet-Pod ersetzt wird, der auf jedem Knoten ausgeführt wird. Auf diese Weise erhalten Sie Zugriff, um alles auszulesen, was auf diesem Knoten von Metrik-Add-on DaemonSet ausgeführt wird. Seien Sie vorsichtig, wenn Sie Ermittlungen in der Auslesekonfiguration dieser Konfigurationszuordnung auf Knotenebene verwenden, da jeder Knoten im Cluster die Ziele einrichtet und ermittelt und redundante Metriken sammelt. Sie können die Beispiel-ConfigMap aus dem obigen Git Hub-Repository verwenden, Ausleseaufträge hinzufügen, die Sie benötigen, und die ConfigMap zumkube-system
-Namespace für Ihren Cluster anwenden/bereitstellenama-metrics-prometheus-config-node-windows
(Erweitert) Diese ConfigMap kann verwendet werden, um die Prometheus-Auslesekonfiguration für das Add-On DaemonSet bereitzustellen, das auf jedem Windows-Knoten im Cluster ausgeführt wird, und Ziele auf Knotenebene auf jedem Knoten können durch Bereitstellen von Ausleseaufträgen in dieser ConfigMap ausgelesen werden. Wenn Sie diese Configmap verwenden, können Sie die Variable$NODE_IP
in Ihrer Auslesekonfiguration verwenden, die durch die IP-Adresse des entsprechenden Knotens im DaemonSet-Pod ersetzt wird, der auf jedem Knoten ausgeführt wird. Auf diese Weise erhalten Sie Zugriff, um alles auszulesen, was auf diesem Knoten von Metrik-Add-on DaemonSet ausgeführt wird. Seien Sie vorsichtig, wenn Sie Ermittlungen in der Auslesekonfiguration dieser Konfigurationszuordnung auf Knotenebene verwenden, da jeder Knoten im Cluster die Ziele einrichtet und ermittelt und redundante Metriken sammelt. Sie können die Beispiel-ConfigMap aus dem obigen Git Hub-Repository verwenden, Ausleseaufträge hinzufügen, die Sie benötigen, und die ConfigMap zumkube-system
-Namespace für Ihren Cluster anwenden/bereitstellen
Benutzerdefinierte Ressourcendefinitionen
Das Azure Monitor-Metrik-Add-On unterstützt das Scraping (Auslesen) von Prometheus-Metriken mithilfe von Prometheus – Pod Monitoren und Dienstmonitoren, ähnlich dem OSS Prometheus-Operator. Wenn Sie das Add-On aktivieren, werden die benutzerdefinierten Ressourcendefinitionen „Pod“ und „Service Monitor“ bereitgestellt, damit Sie eigene benutzerdefinierte Ressourcen erstellen können. Befolgen Sie die Anweisungen zum Erstellen und Anwenden von benutzerdefinierten Ressourcen auf Ihrem Cluster.
ConfigMap-Einstellungen des Metrik-Add-Ons
ama-metrics-settings-configmap kann heruntergeladen, bearbeitet und auf den Cluster angewendet werden, um die vorkonfigurierten Funktionen des Metrik-Add-Ons anzupassen.
Aktivieren und Deaktivieren von Standardzielen
In der folgenden Tabelle finden Sie eine Liste aller Standardziele, die das Azure Monitor-Metrik-Add-On standardmäßig auslesen kann, und erfahren, ob die Ziele anfänglich aktiviert sind. Standardziele werden alle 30 Sekunden ausgelesen. Ein Replikat wird bereitgestellt, um clusterweite Ziele wie kube-state-metrics auszulesen. Ein DaemonSet wird auch zum Auslesen knotenweiter Ziele wie Kubelet bereitgestellt.
Schlüssel | type | Aktiviert | Pod | Beschreibung |
---|---|---|---|---|
kubelet | bool | true |
Linux: DaemonSet | Liest „kubelet“ in jedem Knoten des K8s-Clusters ohne zusätzliche Auslesekonfiguration aus. |
cadvisor | bool | true |
Linux: DaemonSet | Liest „cadvisor“ in jedem Knoten des K8s-Clusters ohne zusätzliche Auslesekonfiguration aus. Nur Linux. |
kubestate | bool | true |
Linux-Replikat | Liest „kube-state-metrics“ im K8s-Cluster (als Teil des Add-Ons installiert) ohne zusätzliche Auslesekonfiguration aus. |
nodeexporter | bool | true |
Linux: DaemonSet | Liest Knotenmetriken ohne zusätzliche Auslesekonfiguration aus. Nur Linux. |
coredns | bool | false |
Linux-Replikat | Liest den coredns-Dienst im K8s-Cluster ohne zusätzliche Auslesekonfiguration aus. |
kubeproxy | bool | false |
Linux: DaemonSet | Liest „kubeproxy“ in jedem im K8s-Cluster ermittelten Linux-Knoten ohne zusätzliche Auslesekonfiguration aus. Nur Linux. |
apiserver | bool | false |
Linux-Replikat | Liest den Kubernetes-API-Server im K8s-Cluster ohne zusätzliche Auslesekonfiguration aus. |
windowsexporter | bool | false |
Windows DaemonSet | Liest den Windows-Exporter in jedem Knoten des K8s-Clusters ohne zusätzliche Auslesekonfiguration aus. Nur Windows |
windowskubeproxy | bool | false |
Windows DaemonSet | Liest den Windows-Kubeproxy in jedem Knoten des K8s-Clusters ohne zusätzliche Auslesekonfiguration aus. Nur Windows |
prometheuscollectorhealth | bool | false |
Linux-Replikat | Liest Informationen über den prometheus-collector-Container aus, z. B. die Anzahl und Größe der ausgelesenen Zeitreihen. |
Wenn Sie das Auslesen der Standardziele aktivieren möchten, die standardmäßig nicht aktiviert sind, bearbeiten Sie die ConfigMap ama-metrics-settings-configmap
, um die unter default-scrape-settings-enabled
aufgelisteten Ziele auf true
zu aktualisieren. Wenden Sie die ConfigMap auf Ihren Cluster an.
Aktivieren von auf Podanmerkungen basierendem Scraping
Um Anwendungspods auszulesen, ohne eine benutzerdefinierte Prometheus-Konfiguration erstellen zu müssen, können Anmerkungen zu den Pods hinzugefügt werden. Die Anmerkung prometheus.io/scrape: "true"
ist erforderlich, damit der Pod ausgelesen werden kann. Die Anmerkungen prometheus.io/path
und prometheus.io/port
geben den Pfad und den Port an, an dem die Metriken auf dem Pod gehostet werden. Die Anmerkungen für einen Pod, der Metriken unter <pod IP>:8080/metrics
hostet, wäre:
metadata:
annotations:
prometheus.io/scrape: 'true'
prometheus.io/path: '/metrics'
prometheus.io/port: '8080'
Das Auslesen dieser Pods mit bestimmten Anmerkungen ist standardmäßig deaktiviert. Fügen Sie zum Aktivieren in ama-metrics-settings-configmap
den regulären Ausdruck für die Namespaces der Pods mit Anmerkungen hinzu, die Sie als Wert des Felds podannotationnamespaceregex
auslesen möchten.
Beispielsweise liest die folgende Einstellung Pods mit Anmerkungen nur in den Namespaces kube-system
und my-namespace
aus:
pod-annotation-based-scraping: |-
podannotationnamespaceregex = "kube-system|my-namespace"
Verwenden Sie Folgendes, um das Scraping für Pods mit Anmerkungen in allen Namespaces zu aktivieren:
pod-annotation-based-scraping: |-
podannotationnamespaceregex = ".*"
Warnung
Durch das Scraping der Podanmerkungen aus vielen Namespaces kann je nach Anzahl der Pods mit Anmerkungen eine sehr große Menge an Metriken generiert werden.
Anpassen von Metriken, die durch Standardziele gesammelt wurden
Standardmäßig werden für alle Standardziele nur die minimalen Metriken erfasst, die in den standardmäßigen Aufzeichnungsregeln, Warnungsregeln und Grafana-Dashboards verwendet werden, wie unter minimal-ingestion-profile beschrieben. Um alle Metriken von Standardzielen zu sammeln, aktualisieren Sie die keep-Listen in der configmap-Einstellung unter default-targets-metrics-keep-list
, und legen Sie minimalingestionprofile
auf false
fest.
Bearbeiten Sie für alle Standardziele die Einstellungen unter default-targets-metrics-keep-list
für den entsprechenden Auftrag, den Sie ändern möchten, um zusätzlich zu den Standardmetriken, die zulässig sind, weitere Metriken zuzulassen.
Beispielsweise ist kubelet
die Metrikfiltereinstellung für das Standardziel „kubelet“. Verwenden Sie folgendes Skript, um in Metriken zu filtern, die mit der RegEx-basierten Filterung für die Standardziele gesammelt wurden.
kubelet = "metricX|metricY"
apiserver = "mymetric.*"
Hinweis
Wenn Sie Anführungszeichen oder umgekehrte Schrägstriche im RegEx verwenden, müssen Sie für sie einen umgekehrten Schrägstrich wie in den Beispielen "test\'smetric\"s\""
und testbackslash\\*
als Escapezeichen verwenden.
Wenn Sie die Standardaufträge weiter anpassen möchten, um Eigenschaften wie Sammlungshäufigkeit oder Bezeichnungen zu ändern, deaktivieren Sie das entsprechende Standardziel, indem Sie den ConfigMap-Wert für das Ziel auf false
festlegen. Wenden Sie dann den Auftrag mithilfe einer benutzerdefinierten ConfigMap an. Ausführliche Informationen zur benutzerdefinierten Konfiguration finden Sie unter Anpassen des Auslesens von Prometheus-Metriken in Azure Monitor.
Clusteralias
Die Clusterbezeichnung, die jeder ausgelesenen Zeitreihe angefügt wird, verwendet den letzten Teil der Azure Resource Manager-Ressourcen-ID des vollständigen AKS-Clusters. Wenn die Ressourcen-ID beispielsweise /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/rg-name/providers/Microsoft.ContainerService/managedClusters/myclustername
lautet, ist die Clusterbezeichnung myclustername
.
Um die Clusterbezeichnung in der ausgelesenen Zeitreihe außer Kraft zu setzen, aktualisieren Sie die Einstellung cluster_alias
auf eine beliebige Zeichenfolge unter prometheus-collector-settings
in der ConfigMap ama-metrics-settings-configmap
. Sie können diese Konfigurationszuordnung erstellen, wenn sie nicht im Cluster vorhanden ist, oder eine bearbeiten, die bereits im Cluster vorhanden ist.
Anstelle der Standardbezeichnung wird auch in der Dropdownliste für Clusterparameter in den Grafana-Dashboards die neue Bezeichnung angezeigt.
Hinweis
Hierbei sind nur alphanumerische Zeichen zulässig. Alle anderen Zeichen werden durch _
ersetzt. Durch diese Änderung soll sichergestellt werden, dass die verschiedenen Komponenten, die diese Bezeichnung nutzen, der grundlegenden Konvention für alphanumerische Zeichen entsprechen.
Wenn Sie Aufzeichnungs- und Warnregeln aktivieren, stellen Sie bitte sicher, dass Sie den Clusteraliasnamen im Parameter „Clustername“ der Regelonboardingvorlage verwenden, damit die Regeln funktionieren.
Debugmodus
Warnung
Dieser Modus kann sich auf die Leistung auswirken und sollte nur für kurze Zeit zum Debuggen aktiviert werden.
Um jede ausgelesene Metrik zum Debuggen anzuzeigen, kann der Metrik-Add-On-Agent für die Ausführung im Debugmodus konfiguriert werden, indem die Einstellung enabled
unter der Einstellung debug-mode
in der ConfigMap ama-metrics-settings-configmap
auf true
aktualisiert wird. Sie können diese ConfigMap entweder erstellen oder eine vorhandene bearbeiten. Weitere Informationen finden Sie im Abschnitt „Debugmodus“ in der Problembehandlung unter der Auflistung der Prometheus-Metriken.
Einstellungen für das Ausleseintervall
Um die Einstellungen für das Ausleseintervall für ein beliebiges Ziel festzulegen, können Sie die Dauer in der Einstellung default-targets-scrape-interval-settings
für dieses Ziel in der ConfigMap ama-metrics-settings-configmap
aktualisieren. Sie müssen die Ausleseintervalle im richtigen Format festlegen, das auf dieser Website angegeben ist. Andernfalls wird der Standardwert von 30 Sekunden auf die entsprechenden Ziele angewendet. Beispiel: Wenn Sie das Auslese-Intervall für den kubelet
-Auftrag auf 60s
aktualisieren möchten, können Sie den folgenden Abschnitt in der YAML aktualisieren:
default-targets-scrape-interval-settings: |-
kubelet = "60s"
coredns = "30s"
cadvisor = "30s"
kubeproxy = "30s"
apiserver = "30s"
kubestate = "30s"
nodeexporter = "30s"
windowsexporter = "30s"
windowskubeproxy = "30s"
kappiebasic = "30s"
prometheuscollectorhealth = "30s"
podannotations = "30s"
und wenden Sie die YAML mit folgendem Befehl an: kubectl apply -f .\ama-metrics-settings-configmap.yaml
Konfigurieren benutzerdefinierter Prometheus-Ausleseaufträge
Sie können Prometheus-Metriken mithilfe von Prometheus – Pod Monitore und Dienstmonitore(Empfohlen) auslesen, ähnlich dem OSS Prometheus-Operator. Befolgen Sie die Anweisungen zum Erstellen und Anwenden von benutzerdefinierten Ressourcen auf Ihrem Cluster.
Außerdem können Sie den Anweisungen folgen, um die configmap für Ihren Cluster zu erstellen, zu validieren und anzuwenden. Das Konfigurationsformat ähnelt der Prometheus-Konfigurationsdatei.
Tipps und Beispiele für Prometheus-Konfigurationen
In diesem Abschnitt finden Sie einige Tipps anhand von Beispielen.
- Konfiguration mit CRD für benutzerdefinierte Auslesekonfiguration
- Konfigurationsdatei für benutzerdefinierte Auslesekonfiguration
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 Änderung, die für die vorhandene OSS-CRs erforderlich ist, für die von der verwalteten Prometheus-Gruppe aufgenommen werden muss, die API-Gruppe ist – azmonitoring.coreos.com/v1. Siehe hier, um mehr zu erfahren
Hinweis
Wenn die benutzerdefinierte Auslesekonfiguration aufgrund von Überprüfungsfehlern nicht angewendet werden kann, wird weiterhin die standardmäßige Auslesekonfiguration verwendet.
Wenn Sie globale Einstellungen verwenden möchten, die für alle Scrape-Aufträge gelten und nur über Benutzerdefinierte Ressourcen verfügen, müssen Sie weiterhin eine Configmap mit nur den globalen Einstellungen erstellen (Einstellungen für jede dieser Einstellungen in den benutzerdefinierten Ressourcen überschreiben die Einstellungen im globalen Abschnitt)
Auslesekonfigurationen
Derzeit sind die unterstützten Methoden zur Zielerkennung für benutzerdefinierte Ressourcen „Pod“ und „Service Monitor“
Pod- und Dienstmonitore
Ziele, die mithilfe von Pod- und Dienstmonitoren ermittelt werden, weisen unterschiedliche __meta_*
-Bezeichnungen auf, je nachdem, welcher Monitor verwendet wird. Sie können die Bezeichnungen im Abschnitt relabelings
verwenden, um Ziele zu filtern oder Bezeichnungen für die Ziele zu ersetzen.
Beispiele für Pod- und Dienstmonitore finden Sie in den Beispielen für Pod- und Dienstmonitore.
Neubezeichnungen
Der relabelings
-Abschnitt wird zum Zeitpunkt der Zielermittlung angewendet und gilt für jedes Ziel des Auftrags. Die folgenden Beispiele zeigen, wie Sie relabelings
verwenden können.
Hinzufügen einer Bezeichnung
Fügen Sie jeder Metrik des Auftrags eine neue Bezeichnung namens example_label
mit dem Wert example_value
hinzu. Verwenden Sie nur __address__
als Quellbezeichnung, da diese Bezeichnung immer vorhanden ist und die Bezeichnung für jedes Ziel des Auftrags hinzugefügt wird.
relabelings:
- sourceLabels: [__address__]
targetLabel: example_label
replacement: 'example_value'
Verwenden von Pod- oder Dienstüberwachungsbezeichnungen
Ziele, die mithilfe von Pod- und Dienstmonitoren ermittelt werden, weisen unterschiedliche __meta_*
-Bezeichnungen auf, je nachdem, welcher Monitor verwendet wird. Die __*
-Bezeichnungen werden nach der Ermittlung der Ziele gelöscht. Um mit ihnen auf der Metrikebene zu filtern, behalten Sie sie zunächst mithilfe von relabelings
bei, indem Sie ihnen einen Bezeichnungsnamen zuweisen. Verwenden Sie metricRelabelings
dann zum Filtern.
# Use the kubernetes namespace as a label called 'kubernetes_namespace'
relabelings:
- sourceLabels: [__meta_kubernetes_namespace]
action: replace
targetLabel: kubernetes_namespace
# Keep only metrics with the kubernetes namespace 'default'
metricRelabelings:
- sourceLabels: [kubernetes_namespace]
action: keep
regex: 'default'
Zuweisen neuer Bezeichnungen zu Aufträgen und Instanzen
Sie können die Bezeichnungswerte job
und instance
auf der Grundlage der Quellbezeichnung ändern, genau wie bei jeder anderen Bezeichnung.
# Replace the job name with the pod label 'k8s app'
relabelings:
- sourceLabels: [__meta_kubernetes_pod_label_k8s_app]
targetLabel: job
# Replace the instance name with the node name. This is helpful to replace a node IP
# and port with a value that is more readable
relabelings:
- sourceLabels: [__meta_kubernetes_node_name]]
targetLabel: instance
Hinweis
Stellen Sie bei Konfigurationen zur Neubezeichnung sicher, dass die Neubezeichnung die Ziele nicht herausfiltert, und die konfigurierten Bezeichnungen den Zielen ordnungsgemäß entsprechen.
Metrische Neubezeichnungen
Metrische Neubezeichnungen werden nach dem Auslesen und vor der Erfassung angewendet. Verwenden Sie den metricRelabelings
-Abschnitt, um Metriken nach dem Auslesen zu filtern. Die folgenden Beispiele veranschaulichen die Vorgehensweise.
Metriken nach Namen löschen
# Drop the metric named 'example_metric_name'
metricRelabelings:
- sourceLabels: [__name__]
action: drop
regex: 'example_metric_name'
Nur bestimmte Metriken nach Namen beibehalten
# Keep only the metric named 'example_metric_name'
metricRelabelings:
- sourceLabels: [__name__]
action: keep
regex: 'example_metric_name'
# Keep only metrics that start with 'example_'
metricRelabelings:
- sourceLabels: [__name__]
action: keep
regex: '(example_.*)'
Metriken umbenennen
Das Umbenennen von Metriken wird nicht unterstützt.
Metriken nach Bezeichnungen filtern
# Keep metrics only where example_label = 'example'
metricRelabelings:
- sourceLabels: [example_label]
action: keep
regex: 'example'
# Keep metrics only if `example_label` equals `value_1` or `value_2`
metricRelabelings:
- sourceLabels: [example_label]
action: keep
regex: '(value_1|value_2)'
# Keep metrics only if `example_label_1 = value_1` and `example_label_2 = value_2`
metricRelabelings:
- sourceLabels: [example_label_1, example_label_2]
separator: ';'
action: keep
regex: 'value_1;value_2'
# Keep metrics only if `example_label` exists as a label
metricRelabelings:
- sourceLabels: [example_label_1]
action: keep
regex: '.+'
Standardauthentifizierung
- Auslesen von Konfigurationen mit Konfigurationsdatei
- Auslesen von Konfigurationen mithilfe von CRD(Pod/Service Monitor)
Falls Sie in Ihrer Prometheus-Konfiguration die Einstellung basic_auth
verwenden, gehen Sie wie folgt vor:
- Erstellen Sie im Namespace kube-system ein Geheimnis mit dem Namen ama-metrics-mtls-secret.
Der Wert für password1 ist base64encoded.
Der Schlüssel password1 kann alles sein, muss aber nur mit Ihrem scrapeconfig-Dateipfad password_file übereinstimmen.
apiVersion: v1
kind: Secret
metadata:
name: ama-metrics-mtls-secret
namespace: kube-system
type: Opaque
data:
password1: <base64-encoded-string>
Das Geheimnis ama-metrics-mtls-secret wird in den ama-metrics-Container unter dem Pfad /etc/prometheus/certs/ eingebunden und dem Prozess zur Verfügung gestellt, der die Metriken von Prometheus ausliest. Der Schlüssel (z. B. password1) im obigen Beispiel ist der Dateiname, und der Wert wird base64-dekodiert und dem Inhalt der Datei im Container hinzugefügt. Der Prometheus-Scraper verwendet den Inhalt dieser Datei, um den Wert zu erhalten, der als Kennwort zum auslesen des Endpunkts verwendet wird.
- Verwenden Sie in der configmap für die benutzerdefinierte Auslesekonfiguration die folgende Einstellung. Das Feld „Benutzername“ sollte die tatsächliche Benutzernamenzeichenfolge enthalten. Das Feld „password_file“ sollte den Pfad zu einer Datei enthalten, die das Kennwort enthält.
basic_auth:
username: <username string>
password_file: /etc/prometheus/certs/password1
Durch die Angabe des Pfads zur password_file oben verwendet der prometheus-Scraper den Inhalt der Datei mit dem Namen password1 im Pfad /etc/prometheus/certs als Wert des Kennworts für das grundlegende Scraping, das auf Authentifizierung basiert.
Wenn Sie sowohl grundlegende Authentifizierung als auch TLS-Authentifizierung verwenden, lesen Sie bitte den Abschnitt unten. Weitere Informationen finden Sie unten im Abschnitt „Hinweis“.
TLS-basiertes Scraping
Wenn Sie eine Prometheus-Instanz haben, die mit TLS bedient wird und aus der Sie Metriken auslesen möchten, müssen Sie das Schema auf https
festlegen und die TLS-Einstellungen in Ihrer ConfigMap oder den entsprechenden CRD festlegen.
Führen Sie die folgenden Schritte aus.
Erstellen Sie im Namespace „kube-system“ ein Geheimnis mit dem Namen „ama-metrics-mtls-secret“. Jedes Schlüssel-Wert-Paar, das im Datenabschnitt des geheimen Objekts angegeben ist, wird als separate Datei in diesen /etc/prometheus/certs-Speicherort gemountet, wobei der Dateiname mit den im Datenabschnitt angegebenen Schlüsseln übereinstimmt. Die geheimen Werte sollten base64-codiert sein, bevor sie wie unten im Datenabschnitt abgelegt werden.
Nachfolgend finden Sie ein Beispiel zum Erstellen eines geheimen Schlüssels über YAML.
apiVersion: v1 kind: Secret metadata: name: ama-metrics-mtls-secret namespace: kube-system type: Opaque data: <certfile>: base64_cert_content <keyfile>: base64_key_content
Das Geheimnis ama-metrics-mtls-secret wird in den ama-metrics-Container unter dem Pfad /etc/prometheus/certs/ eingebunden und dem Prozess zur Verfügung gestellt, der die Metriken von Prometheus ausliest. Der Schlüssel (z. B. certfile) im obigen Beispiel ist der Dateiname, und der Wert wird base64-dekodiert und dem Inhalt der Datei im Container hinzugefügt. Der Prometheus-Scraper verwendet den Inhalt dieser Datei, um den Wert zu erhalten, der als Kennwort zum auslesen des Endpunkts verwendet wird.
Nachfolgend finden Sie die Details zum Bereitstellen der TLS-Konfigurationseinstellungen über eine ConfigMap oder CRD.
- Auslesen von Konfigurationen mit der Konfigurationsdatei
- Auslesen von Konfigurationen mithilfe von CRD(Pod/Service Monitor)
- Um die TLS-Konfigurationseinstellung in einer Configmap bereitzustellen, befolgen Sie bitte das folgende Beispiel.
tls_config:
ca_file: /etc/prometheus/certs/<certfile> # since it is self-signed
cert_file: /etc/prometheus/certs/<certfile>
key_file: /etc/prometheus/certs/<keyfile>
insecure_skip_verify: false
Standardauthentifizierung und TLS
Wenn Sie in Ihrer configmap/CRD Einstellungen sowohl für die Standard- als auch für die TLS-Authentifizierung verwenden möchten, stellen Sie einfach sicher, dass das Geheimnis ama-metrics-mtls-secret alle Dateien (Schlüssel) unter dem Abschnitt „Daten“ mit ihren entsprechenden Base-64-kodierten Werten enthält, wie unten gezeigt.
apiVersion: v1
kind: Secret
metadata:
name: ama-metrics-mtls-secret
namespace: kube-system
type: Opaque
data:
certfile: base64_cert_content # used for Tls
keyfile: base64_key_content # used for Tls
password1: base64-encoded-string # used for basic auth
password2: base64-encoded-string # used for basic auth
Hinweis
Hinweis
Der Pfad /etc/prometheus/certs/ ist obligatorisch, aber password1 kann eine beliebige Zeichenfolge sein und muss dem Schlüssel für die Daten im oben erstellten Geheimnis entsprechen. Der Grund: Das Geheimnis ama-metrics-mtls-secret ist im Pfad /etc/prometheus/certs/ innerhalb des Containers eingebunden.
Der base64-codierte Wert wird automatisch von den Agent-Pods decodiert, wenn das Geheimnis als Datei eingebunden ist.
Stellen Sie sicher, dass der Name des Geheimnisses ama-metrics-mtls-secret lautet und sich im Namespace kube-system befindet.
Das Geheimnis sollte erstellt werden, und dann sollte die ConfigMap/CRD im kube-system-Namespace erstellt werden. Die Reihenfolge, in der das Geheimnis erstellt wird, ist wichtig. Wenn kein Geheimnis, aber eine gültige CRD/ConfigMap vorhanden ist, finden Sie Fehler im Collectorprotokoll ->no file found for cert....
Weitere Informationen zu TLS-Konfigurationseinstellungen finden Sie in den folgenden Konfigurationen.
Nächste Schritte
Einrichten von Benachrichtigungen für Prometheus-Metriken
Abfrage von Prometheus-Metriken
Erfahren Sie mehr über das Sammeln von Prometheus-Metriken.