Einführung
Organisationen, die zunehmend Kubernetes zur Verwaltung ihrer Container einsetzen, benötigen eine Lösung zur Überwachung der Gesundheit ihres verteilten Systems. Aus diesem Grund kommt Prometheus ins Spiel – ein leistungsstarkes Open-Source-Tool zur Überwachung containerisierter Anwendungen in Ihrem K8s-Bereich.
In diesem Tutorial erfahren Sie, wie Sie den Prometheus-Stack installieren und konfigurieren, um alle Pods Ihres DOKS-Clusters sowie Metriken zum Zustand des Kubernetes-Clusters zu überwachen. Anschließend verbinden Sie Prometheus mit Grafana, um alle Metriken zu visualisieren und Abfragen mithilfe der PromQL-Sprache durchzuführen. Schließlich konfigurieren Sie persistenten Speicher für Ihre Prometheus-Instanz, um alle Daten zu Metriken Ihres DOKS-Clusters und Ihrer Anwendungen zu speichern.
Inhaltsverzeichnis
- Voraussetzungen
- Schritt 1 – Installation des Prometheus-Stacks
- Schritt 2 – Konfiguration von Prometheus und Grafana
- Schritt 3 – PromQL (Prometheus Query Language)
- Schritt 4 – Visualisierung von Metriken mit Grafana
- Schritt 5 – Konfigurieren des persistenten Speichers für Prometheus
- Schritt 6 – Konfigurieren des persistenten Speichers für Grafana
- Abschluss
Voraussetzungen
Um dieses Tutorial abzuschließen, benötigen Sie:
- A Git client to clone the Starter Kit repository.
- Helm zur Verwaltung von Prometheus-Stack-Veröffentlichungen und Upgrades.
- Kubectl für die Interaktion mit Kubernetes.
- Curl zum Testen der Beispiele (Backend-Anwendungen).
- Emojivoto-Beispielanwendung im Cluster bereitgestellt. Bitte folgen Sie den Schritten in der README-Datei ihres Repositorys.
Stellen Sie sicher, dass der kubectl
-Kontext so konfiguriert ist, dass er auf Ihren Kubernetes-Cluster zeigt. Siehe Schritt 3 – Erstellen des DOKS-Clusters im DOKS-Setup-Tutorial.
Schritt 1 – Installation des Prometheus-Stacks
In diesem Schritt installieren Sie den kube-prometheus
-Stack, der ein vorgefertigter vollständiger Überwachungsstack für Kubernetes ist. Er umfasst den Prometheus Operator, kube-state-metrics
, vordefinierte Manifeste, Node Exporters, Metrics API, Alerts Manager und Grafana.
Sie werden den Helm-Paketmanager verwenden, um diese Aufgabe zu erledigen. Das Helm-Chart ist hier zur Ansicht verfügbar.
Zunächst klonen Sie das Starter Kit-Repository und wechseln in das Verzeichnis Ihrer lokalen Kopie.
Anschließend fügen Sie das Helm-Repository hinzu und listen die verfügbaren Charts auf:
Die Ausgabe ähnelt dem folgenden:
NAME CHART VERSION APP VERSION DESCRIPTION
prometheus-community/alertmanager 0.18.1 v0.23.0 The Alertmanager handles alerts sent by client ...
prometheus-community/kube-prometheus-stack 35.5.1 0.56.3 kube-prometheus-stack collects Kubernetes manif...
...
Das relevante Chart ist prometheus-community/kube-prometheus-stack
, das Prometheus, Promtail, Alertmanager und Grafana im Cluster installiert. Bitte besuchen Sie die Seite des kube-prometheus-stack für weitere Details zu diesem Chart.
Dann öffnen und überprüfen Sie die Datei 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
im Starter Kit-Repository mit einem Editor Ihrer Wahl (vorzugsweise mit YAML-Lint-Unterstützung). Standardmäßig sind kubeSched
und etcd
Metriken deaktiviert – diese Komponenten werden von DOKS
verwaltet und sind für Prometheus nicht zugänglich. Beachten Sie, dass der Speicher auf emptyDir
gesetzt ist. Das bedeutet, dass der Speicher verloren geht, wenn Prometheus-Pods neu gestartet werden (dies wird später im Abschnitt Konfigurieren des persistenten Speichers für Prometheus behoben werden).
[OPTIONAL] Wenn Sie – Schritt 4 – Hinzufügen eines dedizierten Knotens für Observability des Leitfadens für die Einrichtung eines verwalteten Kubernetes-Clusters von DigitalOcean befolgt haben, müssen Sie die Datei 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
im Starter Kit-Repository bearbeiten und die Affinitäts
-Abschnitte sowohl für Grafana als auch für Prometheus auskommentieren.
Erklärungen für die obige Konfiguration:
preferredDuringSchedulingIgnoredDuringExecution
– Der Scheduler versucht, einen Knoten zu finden, der der Regel entspricht. Wenn kein passender Knoten verfügbar ist, plant der Scheduler den Pod trotzdem.-
– Selektor, der verwendet wird, um einen bestimmten Knoten basierend auf einem Kriterium abzugleichen. Das obige Beispiel gibt dem Scheduler an, Arbeitslasten (z. B. Pods) auf Knoten zu platzieren, die mit dem Schlüssel preferred
und dem Wertobservability
gekennzeichnet sind.
Zuletzt installieren Sie das kube-prometheus-stack
mithilfe von Helm
:
A specific version of the Helm chart is used. In this case 35.5.1
was picked, which maps to the 0.56.3
version of the application (see output from Step 2.). It’s a good practice to lock on a specific version. This helps to have predictable results and allows versioning control via Git.
–create-namespace \
Überprüfen Sie nun den Status der Prometheus-Stack-Helmveröffentlichung:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
kube-prom-stack monitoring 1 2022-06-07 09:52:53.795003 +0300 EEST deployed kube-prometheus-stack-35.5.1 0.56.3
Die Ausgabe sieht ähnlich wie folgt aus. Beachten Sie den Wert in der Spalte STATUS
– es sollte deployed
sein.
Sehen Sie sich an, welche Kubernetes-Ressourcen für Prometheus verfügbar sind:
NAME READY STATUS RESTARTS AGE
pod/alertmanager-kube-prom-stack-kube-prome-alertmanager-0 2/2 Running 0 3m3s
pod/kube-prom-stack-grafana-8457cd64c4-ct5wn 2/2 Running 0 3m5s
pod/kube-prom-stack-kube-prome-operator-6f8b64b6f-7hkn7 1/1 Running 0 3m5s
pod/kube-prom-stack-kube-state-metrics-5f46fffbc8-mdgfs 1/1 Running 0 3m5s
pod/kube-prom-stack-prometheus-node-exporter-gcb8s 1/1 Running 0 3m5s
pod/kube-prom-stack-prometheus-node-exporter-kc5wz 1/1 Running 0 3m5s
pod/kube-prom-stack-prometheus-node-exporter-qn92d 1/1 Running 0 3m5s
pod/prometheus-kube-prom-stack-kube-prome-prometheus-0 2/2 Running 0 3m3s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 3m3s
service/kube-prom-stack-grafana ClusterIP 10.245.147.83 <none> 80/TCP 3m5s
service/kube-prom-stack-kube-prome-alertmanager ClusterIP 10.245.187.117 <none> 9093/TCP 3m5s
service/kube-prom-stack-kube-prome-operator ClusterIP 10.245.79.95 <none> 443/TCP 3m5s
service/kube-prom-stack-kube-prome-prometheus ClusterIP 10.245.86.189 <none> 9090/TCP 3m5s
service/kube-prom-stack-kube-state-metrics ClusterIP 10.245.119.83 <none> 8080/TCP 3m5s
service/kube-prom-stack-prometheus-node-exporter ClusterIP 10.245.47.175 <none> 9100/TCP 3m5s
service/prometheus-operated ClusterIP None <none> 9090/TCP 3m3s
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/kube-prom-stack-prometheus-node-exporter 3 3 3 3 3 <none> 3m5s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/kube-prom-stack-grafana 1/1 1 1 3m5s
deployment.apps/kube-prom-stack-kube-prome-operator 1/1 1 1 3m5s
deployment.apps/kube-prom-stack-kube-state-metrics 1/1 1 1 3m5s
NAME DESIRED CURRENT READY AGE
replicaset.apps/kube-prom-stack-grafana-8457cd64c4 1 1 1 3m5s
replicaset.apps/kube-prom-stack-kube-prome-operator-6f8b64b6f 1 1 1 3m5s
replicaset.apps/kube-prom-stack-kube-state-metrics-5f46fffbc8 1 1 1 3m5s
NAME READY AGE
statefulset.apps/alertmanager-kube-prom-stack-kube-prome-alertmanager 1/1 3m3s
statefulset.apps/prometheus-kube-prom-stack-kube-prome-prometheus 1/1 3m3s
Sie sollten die folgenden Ressourcen bereitgestellt haben: prometheus-node-exporter
, kube-prome-operator
, kube-prome-alertmanager
, kube-prom-stack-grafana
und kube-state-metrics
. Die Ausgabe sieht ähnlich wie folgt aus:
Dann können Sie eine Verbindung zu Grafana herstellen (unter Verwendung der Standardanmeldeinformationen: admin/prom-operator
– siehe Datei prom-stack-values-v35.5.1), indem Sie eine Portweiterleitung zum lokalen Rechner durchführen:
Sie sollten NIEMALS Grafana im öffentlichen Netzwerk freigeben (z. B. durch Erstellen einer Ingress-Mapping- oder LB-Servicezuordnung) mit Standard-Anmeldeinformationen
.
Die Installation von Grafana wird mit mehreren Dashboards geliefert. Öffnen Sie einen Webbrowser unter localhost:3000. Sobald Sie drin sind, können Sie zu Dashboards -> Durchsuchen gehen und verschiedene Dashboards auswählen.
Im nächsten Teil erfahren Sie, wie Sie Prometheus einrichten, um Ziele für die Überwachung zu entdecken. Als Beispiel wird die Musteranwendung Emojivoto
verwendet. Sie werden auch erfahren, was ein ServiceMonitor
ist.
Schritt 2 – Konfigurieren von Prometheus und Grafana
Sie haben bereits Prometheus und Grafana in den Cluster bereitgestellt. In diesem Schritt lernen Sie, wie Sie einen ServiceMonitor
verwenden. Ein ServiceMonitor ist eine der bevorzugten Möglichkeiten, Prometheus mitzuteilen, wie ein neues Ziel für die Überwachung entdeckt werden kann.
Die im Schritt 5 des Voraussetzungen Abschnitts erstellte Emojivoto-Bereitstellung bietet standardmäßig den /metrics
-Endpunkt auf Port 8801
über einen Kubernetes-Dienst an.
Als nächstes entdecken Sie die Emojivoto-Dienste, die für das Bereitstellen von Metrikdaten verantwortlich sind, die Prometheus verbrauchen kann. Die betreffenden Dienste werden emoji-svc
und voting-svc
genannt (beachten Sie, dass sie den emojivoto
-Namespace verwenden):
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
emoji-svc ClusterIP 10.245.135.93 <none> 8080/TCP,8801/TCP 22h
voting-svc ClusterIP 10.245.164.222 <none> 8080/TCP,8801/TCP 22h
web-svc ClusterIP 10.245.61.229 <none> 80/TCP 22h
Die Ausgabe sieht ähnlich wie folgt aus:
Führen Sie anschließend einen port-forward
durch, um die Metriken zu inspizieren:
Die freigelegten Metriken können visualisiert werden, indem Sie mit einem Webbrowser zu localhost navigieren oder über curl:
Die Ausgabe sieht ähnlich wie folgt aus:
go_gc_duration_seconds{quantile="0"} 5.317e-05
go_gc_duration_seconds{quantile="0.25"} 0.000105305
go_gc_duration_seconds{quantile="0.5"} 0.000138168
go_gc_duration_seconds{quantile="0.75"} 0.000225651
go_gc_duration_seconds{quantile="1"} 0.016986437
go_gc_duration_seconds_sum 0.607979843
go_gc_duration_seconds_count 2097
# TYPE go_gc_duration_seconds summary
Um die Metriken für den Dienst voting-svc
zu inspizieren, beenden Sie die Weiterleitung des Ports für emoji-svc
und führen Sie dieselben Schritte für den zweiten Dienst aus.
- Anschließend verbinden Sie Prometheus mit dem Emojivoto-Metrikservice. Es gibt mehrere Möglichkeiten, dies zu tun:
- <static_config> – ermöglicht das Festlegen einer Liste von Zielen und eines gemeinsamen Label-Sets für sie.
- <kubernetes_sd_config> – ermöglicht das Abrufen von Abstreifzielen aus der Kubernetes-REST-API und bleibt immer synchron mit dem Clusterstatus.
Prometheus Operator – vereinfacht das Prometheus-Monitoring innerhalb eines Kubernetes-Clusters über CRDs.
Anschließend verwenden Sie den von Prometheus Operator freigelegten ServiceMonitor
-CRD, um ein neues Ziel für das Monitoring zu definieren.
Zuerst ändern Sie das Verzeichnis (falls noch nicht geschehen), in dem das Starter Kit Git-Repository geklont wurde:
Als nächstes öffnen Sie die Datei 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
im Starter-Kit-Repository mit einem Texteditor Ihrer Wahl (vorzugsweise mit YAML-Lint-Unterstützung). Entfernen Sie bitte die Kommentare um den Abschnitt additionalServiceMonitors
. Die Ausgabe sieht ähnlich aus:
- Erklärungen für die obige Konfiguration:
selector -> matchExpressions
– gibtServiceMonitor
an, welchen Dienst zu überwachen ist. Es zielt auf alle Dienste mit dem Label-Schlüssel „app“ und den Wertenemoji-svc
undvoting-svc
ab. Die Labels können abgerufen werden, indem Sie ausführen:kubectl get svc --show-labels -n emojivoto
namespaceSelector
– hier möchten Sie den Namespace abgleichen, in demEmojivoto
bereitgestellt wurde.
endpoints -> port
– verweist auf den Port des zu überwachenden Dienstes.
Zuletzt wenden Sie die Änderungen mit Helm an:
Als nächstes überprüfen Sie bitte, ob das Emojivoto
-Ziel zum Scrapen in Prometheus hinzugefügt wurde. Erstellen Sie eine Portweiterleitung für Prometheus auf Port 9090
:
Öffnen Sie einen Webbrowser auf localhost:9090. Navigieren Sie dann zur Seite Status -> Targets und inspizieren Sie die Ergebnisse (beachten Sie den Pfad serviceMonitor/monitoring/emojivoto-monitor/0
):
Es gibt 2 Einträge unter den entdeckten Zielen, weil das Emojivoto
-Deployment aus 2 Diensten besteht, die den Metrik-Endpunkt freigeben.
Im nächsten Schritt lernen Sie PromQL zusammen mit einigen einfachen Beispielen kennen, um Sie zu starten und die Sprache zu entdecken.
Schritt 3 – PromQL (Prometheus Query Language)
In diesem Schritt lernen Sie die Grundlagen der Prometheus Query Language (PromQL) kennen. PromQL hilft Ihnen dabei, Abfragen zu verschiedenen Metriken aus allen Pods und Anwendungen Ihres DOKS-Clusters durchzuführen.
PromQL ist eine DSL oder Domänenspezifische Sprache, die speziell für Prometheus entwickelt wurde und es Ihnen ermöglicht, nach Metriken zu suchen. Der Gesamtausdruck definiert den endgültigen Wert, während verschachtelte Ausdrücke Werte für Argumente und Operanden darstellen. Für weiterführende Erklärungen besuchen Sie bitte die offizielle PromQL-Seite.
Als nächstes werden Sie eine der Metriken von Emojivoto
untersuchen, nämlich emojivoto_votes_total
, die die Gesamtzahl der Stimmen repräsentiert. Es handelt sich um einen Zählerwert, der mit jeder Anfrage gegen den Emojivoto
-Stimm-Endpunkt zunimmt.
Erstellen Sie zunächst eine Portweiterleitung für Prometheus auf Port 9090
:
Öffnen Sie als nächstes den Ausdrucksbrowser.
emojivoto_votes_total{container="voting-svc", emoji=":100:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 20
emojivoto_votes_total{container="voting-svc", emoji=":bacon:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 17
emojivoto_votes_total{container="voting-svc", emoji=":balloon:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 21
emojivoto_votes_total{container="voting-svc", emoji=":basketball_man:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 10
emojivoto_votes_total{container="voting-svc", emoji=":beach_umbrella:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 10
emojivoto_votes_total{container="voting-svc", emoji=":beer:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 11
Im Abfrageeingabefeld fügen Sie emojivoto_votes_total
ein und drücken Sie die Eingabetaste. Die Ausgabe sieht ähnlich aus:
Navigieren Sie zur Emojivoto
-Anwendung und klicken Sie auf der Homepage auf das 100-Emoji, um dafür zu stimmen.
emojivoto_votes_total{container="voting-svc", emoji=":100:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 21
emojivoto_votes_total{container="voting-svc", emoji=":bacon:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 17
emojivoto_votes_total{container="voting-svc", emoji=":balloon:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 21
emojivoto_votes_total{container="voting-svc", emoji=":basketball_man:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 10
emojivoto_votes_total{container="voting-svc", emoji=":beach_umbrella:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 10
emojivoto_votes_total{container="voting-svc", emoji=":beer:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 11
Navigieren Sie von der Abfrageergebnisseite aus Schritt 3 und klicken Sie auf die Schaltfläche Ausführen. Sie sollten sehen, dass der Zähler für das 100-Emoji um eins erhöht wird. Die Ausgabe sieht ähnlich aus:
PromQL gruppiert ähnliche Daten in dem, was als Vektor bezeichnet wird. Wie oben zu sehen ist, hat jeder Vektor eine Reihe von Attributen, die ihn voneinander unterscheiden. Sie können Ergebnisse basierend auf einem interessierenden Attribut gruppieren. Wenn Sie beispielsweise nur an Anfragen interessiert sind, die vom Dienst voting-svc
stammen, geben Sie bitte Folgendes im Abfragefeld ein:
emojivoto_votes_total{container="voting-svc", emoji=":100:", endpoint="prom", instance="10.244.6.91:8801", job="voting-svc", namespace="emojivoto", pod="voting-6548959dd7-hssh2", service="voting-svc"} 492
emojivoto_votes_total{container="voting-svc", emoji=":bacon:", endpoint="prom", instance="10.244.6.91:8801", job="voting-svc", namespace="emojivoto", pod="voting-6548959dd7-hssh2", service="voting-svc"} 532
emojivoto_votes_total{container="voting-svc", emoji=":balloon:", endpoint="prom", instance="10.244.6.91:8801", job="voting-svc", namespace="emojivoto", pod="voting-6548959dd7-hssh2", service="voting-svc"} 521
Die Ausgabe sieht ähnlich aus (beachten Sie, dass nur die Ergebnisse ausgewählt werden, die Ihren Kriterien entsprechen):
Das obige Ergebnis zeigt die Gesamtanzahl der Anfragen für jeden Pod aus der Bereitstellung von Emojivoto
, die Metriken emittiert (bestehend aus 2).
Dies ist nur eine sehr einfache Einführung in das, was PromQL ist und was es kann. Aber es kann viel mehr als das, wie zum Beispiel Metriken zählen, die Rate über ein vordefiniertes Intervall berechnen, etc. Bitte besuchen Sie die offizielle PromQL-Seite für weitere Funktionen der Sprache.
Im nächsten Schritt lernen Sie, wie Sie Grafana verwenden, um Metriken für die Beispielanwendung Emojivoto
zu visualisieren.
Schritt 4 – Visualisierung von Metriken mit Grafana
Obwohl Prometheus einige eingebaute Unterstützung zur Visualisierung von Daten bietet, ist es besser, dies über Grafana zu tun, das eine Open-Source-Plattform für Überwachung und Observabilität ist, mit der Sie den Zustand Ihres Clusters visualisieren und erkunden können.
Die offizielle Seite beschreibt, dass Sie Folgendes können:
Daten abfragen, visualisieren, Alarme auslösen und verstehen, egal wo sie gespeichert sind.
Es sind keine zusätzlichen Schritte erforderlich, um Grafana zu installieren, da Schritt 1 – Die Prometheus-Stack-Installation Grafana für Sie installiert hat. Alles, was Sie tun müssen, ist ein Port-Forward wie unten gezeigt, und Sie haben sofortigen Zugriff auf die Dashboards (Standardanmeldeinformationen: admin/prom-monitor
):
Um alle Emojivoto
-Metriken zu sehen, werden Sie eines der standardmäßig installierten Dashboards von Grafana verwenden.
Navigieren Sie zum Abschnitt Grafana-Dashboards.
Suchen Sie dann nach dem Dashboard Allgemein/Kubernetes/Compute-Ressourcen/Namespace(Pods) und greifen Sie darauf zu.
Wählen Sie schließlich die Prometheus-Datenquelle aus und fügen Sie den Namespace emojivoto
hinzu.
Sie können herumspielen und weitere Panels in Grafana hinzufügen, um andere Datenquellen zu visualisieren, und sie auch nach Umfang gruppieren. Außerdem können Sie die verfügbaren Dashboards für Kubernetes aus dem Grafana kube-mixin-Projekt erkunden.
Im nächsten Schritt konfigurieren Sie persistenten Speicher für Prometheus mit Hilfe von DigitalOcean-Blockspeicher, um Ihre DOKS- und Anwendungsdaten über Serverneustarts oder Clusterfehler hinweg zu speichern.
Schritt 5 – Konfigurieren von Persistentem Speicher für Prometheus
In diesem Schritt erfahren Sie, wie Sie persistenten Speicher für Prometheus aktivieren, sodass Metriken über Serverneustarts hinweg gespeichert werden oder im Falle von Clusterfehlern.
Zuerst benötigen Sie eine Speicherklasse, um fortzufahren. Führen Sie den folgenden Befehl aus, um zu überprüfen, welche verfügbar ist.
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
do-block-storage (default) dobs.csi.digitalocean.com Delete Immediate true 4d2h
Die Ausgabe sollte ähnlich aussehen wie folgt. Beachten Sie, dass DigitalOcean Block Storage für Sie verfügbar ist.
Wechseln Sie anschließend (falls noch nicht geschehen) in das Verzeichnis, in dem das Git-Repository des Starter Kits geklont wurde:
Dann öffnen Sie die Datei 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
im Starter Kit-Repository mit einem Texteditor Ihrer Wahl (vorzugsweise mit YAML-Lint-Unterstützung). Suchen Sie die Zeile storageSpec
und kommentieren Sie den erforderlichen Abschnitt für Prometheus aus. Die Definition von storageSpec
sollte wie folgt aussehen:
- Erklärungen für die obige Konfiguration:
volumeClaimTemplate
– definiert eine neue PVC.storageClassName
– definiert die Speicherklassen (sollte denselben Wert wie aus der Ausgabe des Befehlskubectl get storageclass
verwenden).
resources
– legt den Speicheranforderungswert fest. In diesem Fall wird eine Gesamtkapazität von 5 Gi für das neue Volume angefordert.
Abschließend wenden Sie die Einstellungen mit Helm an:
Nach Abschluss der oben genannten Schritte überprüfen Sie den PVC-Status:
NAME STATUS VOLUME CAPACITY ACCESS MODES AGE
kube-prome-prometheus-0 Bound pvc-768d85ff-17e7-4043-9aea-4929df6a35f4 5Gi RWO do-block-storage 4d2h
A new Volume should appear in the Volumes web page from your DigitalOcean account panel:
Die Ausgabe sieht ähnlich aus wie folgt. Die Spalte STATUS
sollte Bound
anzeigen.
Schritt 6 – Konfigurieren des persistenten Speichers für Grafana
In diesem Schritt lernen Sie, wie Sie eine persistente Speicherung für Grafana aktivieren, damit die Diagramme über Serverneustarts hinweg oder im Falle von Clusterfehlern bestehen bleiben. Sie werden eine Persistent Volume Claim (PVC) von 5 Gi definieren, indem Sie den DigitalOcean Block Storage verwenden. Die nächsten Schritte sind dieselben wie Schritt 5 – Konfigurieren der Persistenten Speicherung für Prometheus.
Zuerst öffnen Sie die Datei 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
, die im Starter Kit-Repository bereitgestellt wird, mit einem Texteditor Ihrer Wahl (vorzugsweise mit YAML-Lint-Unterstützung). Der Abschnitt zur Persistenzspeicherung für Grafana sollte wie folgt aussehen:
Als nächstes wenden Sie die Einstellungen mit Helm an:
Nach Abschluss der oben genannten Schritte überprüfen Sie den Status des PVC:
NAME STATUS VOLUME CAPACITY ACCESS MODES AGE
kube-prom-stack-grafana Bound pvc-768d85ff-17e7-4043-9aea-4929df6a35f4 5Gi RWO do-block-storage 4d2h
A new Volume should appear in the Volumes web page from your DigitalOcean account panel:
Die Ausgabe ähnelt dem folgenden. Die Spalte STATUS
sollte Bound
anzeigen.
- Um die benötigte Größe für das Volume gemäß Ihren Anforderungen zu berechnen, folgen Sie bitte den Ratschlägen und der Formel in der offiziellen Dokumentation:
- Prometheus speichert durchschnittlich nur 1-2 Bytes pro Stichprobe. Um daher die Kapazität eines Prometheus-Servers zu planen, können Sie die grobe Formel verwenden:
benötigter_festplattenspeicher = aufbewahrungszeit_in_sekunden * eingelesene_stichproben_pro_sekunde * bytes_pro_stichprobe
Um die Rate der eingelesenen Stichproben zu senken, können Sie entweder die Anzahl der Zeitreihen reduzieren, die Sie abfragen (weniger Ziele oder weniger Zeitreihen pro Ziel), oder Sie können das Abrufintervall erhöhen. Die Reduzierung der Anzahl der Zeitreihen ist jedoch wahrscheinlich effektiver, aufgrund der Kompression von Stichproben innerhalb einer Zeitreihe.
Bitte beachten Sie den Abschnitt Operationale Aspekte für weitere Details zum Thema.
In diesem Tutorial haben Sie gelernt, wie Sie den Prometheus-Stack installieren und konfigurieren, dann Grafana verwenden, um neue Dashboards zu installieren und Metriken der DOKS-Clusteranwendung zu visualisieren. Sie haben auch gelernt, wie Sie Metrikabfragen mit PromQL durchführen. Schließlich haben Sie die Konfiguration und Aktivierung der persistenten Speicherung für Prometheus vorgenommen, um Ihre Clustermetriken zu speichern.
- Weitere Informationen
- Kubernetes-Protokollüberwachung und -Aufbewahrung mit Grafana Loki und DigitalOcean Spaces
- Best Practices zur Überwachung eines Kubernetes-Clusters mit Prometheus, Grafana und Loki
Einrichten der Überwachung eines DOKS-Clusters mit Helm und Prometheus Operator