Auf dieser Seite wird erläutert, wie Sie Stackdriver, Prometheus und Grafana für Logging und Monitoring verwenden. Eine Zusammenfassung der verfügbaren Konfigurationsoptionen finden Sie in der Übersicht zu Logging und Monitoring.
Stackdriver verwenden
In den folgenden Abschnitten wird gezeigt, wie Sie Stackdriver mit GKE On-Prem-Clustern verwenden.
Überwachte Ressourcen
Mit überwachten Ressourcen stellt Google Ressourcen wie Cluster, Knoten, Pods und Container dar. Weitere Informationen finden Sie in der Dokumentation zu Überwachte Ressourcentypen von Cloud Monitoring.
Zum Abfragen von Logs und Messwerten müssen Sie mindestens folgende Ressourcenlabels kennen:
project_id
: Projekt-ID für das Projekt, das dem GKE On-Prem-Cluster zugeordnet ist.location
: Eine GCP-Region, in der Sie Stackdriver-Logs und -Messwerte speichern möchten. Es empfiehlt sich, eine Region in der Nähe Ihres lokalen Rechenzentrums auszuwählen. Sie haben diesen Wert während der Installation im Feldstackdriver.clusterlocation
Ihrer GKE On-Prem-Konfigurationsdatei angegeben.cluster_name
: Clustername, den Sie beim Erstellen des Clusters ausgewählt haben.Sie können den Wert
cluster_name
entweder für den Administrator- oder den Nutzercluster abrufen, indem Sie die benutzerdefinierte Stackdriver-Ressource prüfen:kubectl -n kube-system get stackdrivers stackdriver -o yaml | grep 'clusterName:'
Auf Logdaten zugreifen
Sie können mit dem Log-Explorer in der Google Cloud Console auf Logs zugreifen. So greifen Sie beispielsweise auf die Logs eines Containers zu:
- Öffnen Sie in der Google Cloud Console den Log-Explorer für Ihr Projekt.
- Suchen Sie Logs für einen Container:
- Klicken Sie links oben auf das Drop-down-Menü für den Logkatalog und wählen Sie Kubernetes-Container aus.
- Wählen Sie den Clusternamen, das Namespace und dann einen Container aus der Hierarchie aus.
Auf Messwertdaten zugreifen
Mit Metrics Explorer können Sie aus über 1.500 Messwerten auswählen. So greifen Sie auf Metrics Explorer zu:
Wählen Sie in der Google Cloud Console Monitoring aus oder klicken Sie auf die folgende Schaltfläche:
Wählen Sie Ressourcen > Metrics Explorer.
Auf Stackdriver-Metadaten zugreifen
Metadaten werden indirekt über Messwerte verwendet. Wenn Sie im Stackdriver Metrics Explorer nach Messwerten filtern, sehen Sie Optionen zum Filtern der Messwerte nach metadata.systemLabels
und metadata.userLabels
. Systemlabels sind Labels wie der Knotenname und der Servicename für Pods. Nutzerlabels sind Labels, die Pods in den Kubernetes-YAML-Dateien im Abschnitt "metadata" der Pod-Spezifikation zugewiesen sind.
Prometheus und Grafana
In den folgenden Abschnitten wird erläutert, wie Prometheus und Grafana mit GKE On-Prem-Clustern verwendet werden.
Prometheus und Grafana aktivieren
Ab GKE On-Prem-Version 1.2 können Sie auswählen, ob Prometheus und Grafana aktiviert oder deaktiviert werden sollen. In neuen Nutzerclustern sind Prometheus und Grafana standardmäßig deaktiviert.
Ihr Nutzercluster hat ein Monitoring-Objekt namens
monitoring-sample
. Öffnen Sie das Objekt zum Bearbeiten:kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] edit \ monitoring monitoring-sample --namespace kube-system
Dabei ist [USER_CLUSTER_KUBECONFIG] die kubeconfig-Datei für Ihren Nutzercluster.
Setzen Sie
enablePrometheus
auftrue
, um Prometheus und Grafana zu aktivieren. Setzen SieenablePrometheus
auffalse
, um Prometheus und Grafana zu deaktivieren.apiVersion: addons.k8s.io/v1alpha1 kind: Monitoring metadata: labels: k8s-app: monitoring-operator name: monitoring-sample namespace: kube-system spec: channel: stable ... enablePrometheus: true
Schließen Sie die Bearbeitungssitzung, um Ihre Änderungen zu speichern.
Bekanntes Problem
In Nutzerclustern werden Prometheus und Grafana während des Upgrades automatisch deaktiviert. Die Konfigurations- und Messwertdaten gehen jedoch nicht verloren.
Zur Umgehung dieses Problems öffnen Sie nach dem Upgrade monitoring-sample
zum Bearbeiten. Setzen Sie enablePrometheus
auf true
.
Über Grafana-Dashboards auf Monitoring-Messwerte zugreifen
Grafana zeigt Messwerte aus Ihren Clustern an. Zur Anzeige dieser Messwerte müssen Sie auf die Dashboards von Grafana zugreifen:
Rufen Sie den Namen des im
kube-system
-Namespace eines Nutzerclusters ausgeführten Grafana-Pods ab:kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system get pods
Dabei ist [USER_CLUSTER_KUBECONFIG] die kubeconfig-Datei des Nutzerclusters.
Der Container im Grafana-Pod überwacht den TCP-Port 3000. Leiten Sie einen lokalen Port zu Port 3000 im Pod weiter, damit Sie sich die Dashboards von Grafana in einem Webbrowser ansehen können.
Nehmen wir an, der Name des Pods lautet
grafana-0
. Um Port 50000 zu Port 3000 im Pod weiterzuleiten, geben Sie folgenden Befehl ein:kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system port-forward grafana-0 50000:3000
Gehen Sie in einem Webbrowser zu
http://localhost:50000
. Das Grafana Home Dashboard des Nutzerclusters sollte geladen werden.Sie können auf andere Dashboards zugreifen, wenn Sie links oben auf der Seite auf das Drop-down-Menü Startseite klicken.
Ein Beispiel für die Verwendung von Grafana finden Sie unter Grafana-Dashboard erstellen.
Auf Benachrichtigungen zugreifen
Der Prometheus Alertmanager erfasst Benachrichtigungen vom Prometheus-Server. Sie können sich diese Benachrichtigungen in einem Grafana-Dashboard ansehen. Dazu müssen Sie auf das Dashboard zugreifen:
Der Container im Pod
alertmanger-0
überwacht den TCP-Port 9093. Leiten Sie einen lokalen Port zu Port 9093 im Pod weiter:kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward \ -n kube-system alertmanager-0 50001:9093
Gehen Sie in einem Webbrowser zu
http://localhost:50001
.
Prometheus Alertmanager-Konfiguration ändern
Sie können die Standardkonfiguration von Prometheus Alertmanager ändern, wenn Sie die Datei monitoring.yaml
Ihres Nutzerclusters bearbeiten. Sie sollten dies tun, wenn Sie Benachrichtigungen an ein bestimmtes Ziel weiterleiten möchten, anstatt sie im Dashboard zu belassen. In der Prometheus-Dokumentation zur Konfiguration erfahren Sie, wie Sie Alertmanager konfigurieren.
So ändern Sie die Alertmanager-Konfiguration:
Kopieren Sie die Manifestdatei
monitoring.yaml
des Nutzerclusters:kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system \ get monitoring monitoring-sample -o yaml > monitoring.yaml
Nehmen Sie Änderungen an den Feldern unter
spec.alertmanager.yml
vor, um den Alertmanager zu konfigurieren. Wenn Sie fertig sind, speichern Sie das geänderte Manifest.Wenden Sie das Manifest auf Ihren Cluster an:
kubectl apply --kubeconfig [USER_CLUSTER_KUBECONIFG] -f monitoring.yaml
Prometheus-Ressourcen skalieren
Die Standardkonfiguration für das Monitoring unterstützt bis zu fünf Knoten. Bei größeren Clustern können Sie die Prometheus-Server-Ressourcen anpassen. Der empfohlene Wert pro Clusterknoten für CPU ist "50m" und der für Arbeitsspeicher "500Mi". Achten Sie darauf, dass Ihr Cluster zwei Knoten enthält, die jeweils genügend Ressourcen für Prometheus haben. Weitere Informationen finden Sie unter Größe eines Nutzerclusters anpassen.
Führen Sie die folgenden Schritte aus, um Prometheus-Server-Ressourcen zu ändern:
Kopieren Sie die Manifestdatei
monitoring.yaml
des Nutzerclusters:kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system get monitoring monitoring-sample -o yaml > monitoring.yaml
Wenn Sie Ressourcen überschreiben möchten, ändern Sie die Felder unter
spec.resourceOverride
. Wenn Sie fertig sind, speichern Sie das geänderte Manifest. Beispiel:spec: resourceOverride: - component: Prometheus resources: requests: cpu: 300m memory: 3000Mi limits: cpu: 300m memory: 3000Mi
Wenden Sie das Manifest auf Ihren Cluster an:
kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] apply -f monitoring.yaml
Grafana-Dashboard erstellen
Sie haben eine Anwendung bereitgestellt, die einen Messwert bereitstellt, prüft, ob der Messwert verfügbar ist, und prüft, ob Prometheus den Messwert entfernt. Jetzt können Sie den Messwert auf Anwendungsebene einem benutzerdefinierten Grafana-Dashboard hinzufügen.
So erstellen Sie ein Grafana-Dashboard:
- Greifen Sie bei Bedarf auf Grafana zu.
- Klicken Sie im Dashboard auf der Startseite links oben auf das Drop-down-Menü auf Startseite.
- Klicken Sie im Menü auf der rechten Seite auf Neues Dashboard.
- Klicken Sie im Bereich New panel auf Graph. Ein leeres Grafik-Dashboard wird angezeigt.
- Klicken Sie auf Steuerfeldtitel und anschließend auf Bearbeiten. Im unteren Bereich Grafik wird der Tab Messwerte geöffnet.
- Wählen Sie im Drop-down-Menü der Datenquelle die Option Nutzer aus. Klicken Sie auf Abfrage hinzufügen und geben Sie
foo
in das Feld Suche ein. - Klicken Sie rechts oben auf die Schaltfläche Zurück zum Dashboard. Ihr Dashboard wird angezeigt.
- Zum Speichern des Dashboards klicken Sie rechts oben auf Dashboard speichern. Wählen Sie einen Namen für das Dashboard aus und klicken Sie auf Speichern.
Monitoring im Cluster deaktivieren
Geben Sie den folgenden Befehl ein, um das Monitoring im Cluster zu deaktivieren:
kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system delete monitoring monitoring-sample
Beispiel: Messwerte auf Anwendungsebene zu einem Grafana-Dashboard hinzufügen
In den folgenden Abschnitten erfahren Sie, wie Sie Messwerte für eine Anwendung hinzufügen. In diesem Abschnitt führen Sie die folgenden Aufgaben aus:
- Eine Beispielanwendung bereitstellen, die einen Messwert namens
foo
enthält - Prüfen, ob Prometheus den Messwert verfügbar macht und extrahiert
- Benutzerdefiniertes Grafana-Dashboard erstellen
Beispielanwendung bereitstellen
Die Beispielanwendung wird in einem einzelnen Pod ausgeführt. Der Container des Pods weist den Messwert foo
mit einem konstanten Wert von 40
auf.
Erstellen Sie das folgende Pod-Manifest pro-pod.yaml
:
apiVersion: v1
kind: Pod
metadata:
name: prometheus-example
annotations:
prometheus.io/scrape: 'true'
prometheus.io/port: '8080'
prometheus.io/path: '/metrics'
spec:
containers:
- image: registry.k8s.io/prometheus-dummy-exporter:v0.1.0
name: prometheus-example
command:
- /bin/sh
- -c
- ./prometheus_dummy_exporter --metric-name=foo --metric-value=40 --port=8080
Wenden Sie dann das Pod-Manifest auf Ihren Nutzercluster an:
kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] apply -f pro-pod.yaml
Prüfen, ob der Messwert verfügbar ist und extrahiert wurde
Der Container im Pod
prometheus-example
überwacht den TCP-Port 8080. Leiten Sie einen lokalen Port zu Port 8080 im Pod weiter:kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward prometheus-example 50002:8080
Führen Sie den folgenden Befehl aus, um zu prüfen, ob die Anwendung den Messwert verfügbar macht:
curl localhost:50002/metrics | grep foo
Der Befehl gibt die folgende Ausgabe zurück:
# HELP foo Custom metric # TYPE foo gauge foo 40
Der Container im Pod
prometheus-0
überwacht den TCP-Port 9090. Leiten Sie einen lokalen Port zu Port 9090 im Pod weiter:kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward prometheus-0 50003:9090
Wenn Sie prüfen möchten, ob Prometheus den Messwert erfasst, rufen Sie http://localhost:50003/targets auf. Dadurch sollten Sie zum Pod
prometheus-0
unter der Zielgruppeprometheus-io-pods
gelangen.Rufen Sie zum Ansehen von Messwerten in Prometheus http://localhost:50003/graph auf. Geben Sie im Feld Suche
foo
ein und klicken Sie auf Ausführen. Auf der Seite sollte der Messwert angezeigt werden.