In dieser Anleitung erfahren Sie, wie Sie Aktivitätsprüfungen für Anwendungsmikrodienste einrichten, die mit Open-Source-Prometheus in Google Kubernetes Engine (GKE) bereitgestellt werden.
In dieser Anleitung wird Open-Source-Prometheus verwendet. Jeder GKE Autopilot-Cluster stellt jedoch automatisch Managed Service for Prometheus bereit, die vollständig verwaltete, projektübergreifende Multi-Cloud-Lösung vonGoogle Cloudfür Prometheus-Messwerte. Mit Managed Service for Prometheus können Sie Ihre Arbeitslasten mithilfe von Prometheus global überwachen und Benachrichtigen dazu senden, ohne Prometheus manuell in großem Umfang verwalten und betreiben zu müssen.
Sie können auch Open-Source-Tools wie Grafana verwenden, um von Prometheus erfasste Messwerte zu visualisieren.
Umgebung vorbereiten
In dieser Anleitung verwenden Sie Cloud Shell zum Verwalten von Ressourcen, die inGoogle Cloudgehostet werden.
Legen Sie die Standardumgebungsvariablen fest:
gcloud config set project PROJECT_ID gcloud config set compute/region CONTROL_PLANE_LOCATION
Ersetzen Sie Folgendes:
PROJECT_ID
: Ihre Google Cloud Projekt-ID.CONTROL_PLANE_LOCATION
: die Compute Engine-Region der Steuerungsebene des Clusters. In dieser Anleitung ist die Regionus-central1
. Normalerweise sollten Sie eine Region auswählen, die sich in Ihrer Nähe befindet.
Klonen Sie das in dieser Anleitung verwendete Beispiel-Repository:
git clone https://github.com/GoogleCloudPlatform/bank-of-anthos.git cd bank-of-anthos/
Erstellen Sie einen Cluster.
gcloud container clusters create-auto CLUSTER_NAME \ --release-channel=CHANNEL_NAME \ --location=CONTROL_PLANE_LOCATION
Dabei gilt:
CLUSTER_NAME
: ein Name für den neuen Cluster.CHANNEL_NAME
: der Name einer Release-Version.
Prometheus bereitstellen
Verwenden Sie das Beispiel-Helm-Diagramm, um Prometheus zu installieren:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install tutorial bitnami/kube-prometheus \
--version 8.2.2 \
--values extras/prometheus/oss/values.yaml \
--wait
Mit diesem Befehl wird Prometheus mit den folgenden Komponenten installiert:
- Prometheus-Operator:: eine beliebte Methode zum Bereitstellen und Konfigurieren von Open-Source-Prometheus.
- Alertmanager: verwaltet vom Prometheus-Server gesendete Benachrichtigungen und leitet sie an Anwendungen wie Slack weiter.
- Blackbox-Exporter: ermöglicht es Prometheus, Endpunkte mit HTTP, HTTPS, DNS, TCP, ICMP und gRPC zu prüfen.
Bank of Anthos bereitstellen
Stellen Sie die Bank of Anthos-Beispielanwendung bereit:
kubectl apply -f extras/jwt/jwt-secret.yaml
kubectl apply -f kubernetes-manifests
Slack-Benachrichtigungen
Zum Einrichten von Slack-Benachrichtigungen müssen Sie eine Slack-Anwendung erstellen, eingehende Webhooks für die Anwendung aktivieren und die Anwendung in einem Slack-Workspace installieren.
Slack-Anwendung erstellen
Um einem Slack-Workspace beizutreten, registrieren Sie sich entweder mit Ihrer E-Mail-Adresse oder nutzen eine von einem Workspace-Administrator gesendete Einladung.
Melden Sie sich bei Slack an. Verwenden Sie hierfür den Namen Ihres Arbeitsbereichs und die Anmeldedaten für Ihr Slack-Konto.
-
- Klicken Sie im Dialogfeld Anwendung erstellen auf Neu erstellen.
- Geben Sie einen Anwendungsnamen an und wählen Sie Ihren Slack-Workspace aus.
- Klicken Sie auf Create App (App erstellen).
- Klicken Sie unter Features und Funktionen hinzufügen auf Eingehende Webhooks.
- Klicken Sie auf die Schaltfläche Eingehende Webhooks aktivieren.
- Klicken Sie im Abschnitt Webhook-URLs für Ihren Arbeitsbereich auf Neuen Webhook zu Arbeitsbereich hinzufügen.
- Wählen Sie auf der angezeigten Autorisierungsseite einen Kanal aus, um Benachrichtigungen zu erhalten.
- Klicken Sie auf Zulassen.
- Ein Webhook für Ihre Slack-Anwendung wird im Abschnitt Webhook-URLs für Ihren Arbeitsbereich angezeigt. Speichern Sie die URL für eine spätere Verwendung.
Alertmanager konfigurieren
Erstellen Sie ein Kubernetes-Secret, um die Webhook-URL zu speichern:
kubectl create secret generic alertmanager-slack-webhook --from-literal webhookURL=SLACK_WEBHOOK_URL
kubectl apply -f extras/prometheus/oss/alertmanagerconfig.yaml
Ersetzen Sie SLACK_WEBHOOK_URL
durch die URL des Webhooks aus dem vorherigen Abschnitt.
Prometheus konfigurieren
Prüfen Sie das folgende Manifest:
Dieses Manifest beschreibt Prometheus-Aktivitätsprüfungen und enthält die folgenden Felder:
spec.jobName
: Der Jobname, der den extrahierten Messwerten zugewiesen ist.spec.prober.url
: die Dienst-URL des Blackbox-Exporters. Dazu gehört auch der Standardport für den Blackbox-Exporter, der im Helm-Chart definiert ist.spec.prober.path
: der Pfad der Messwerterfassung.spec.targets.staticConfig.labels
: die Labels, die allen Messwerten zugewiesen sind, die aus den Zielen extrahiert werden.spec.targets.staticConfig.static
: die Liste von zu prüfenden Hosts.
Wenden Sie das Manifest auf Ihren Cluster an:
kubectl apply -f extras/prometheus/oss/probes.yaml
Prüfen Sie das folgende Manifest:
Dieses Manifest beschreibt einen
PrometheusRule
und enthält die folgenden Felder:spec.groups.[*].name
: der Name der Regelgruppe.spec.groups.[*].interval
: wie oft Regeln in der Gruppe ausgewertet werden.spec.groups.[*].rules[*].alert
: der Name der Benachrichtigung.spec.groups.[*].rules[*].expr
: der PromQL-Ausdruck, der ausgewertet wird.spec.groups.[*].rules[*].for
: die Zeitspanne, in der Benachrichtigungen zurückgegeben werden müssen, bevor sie als ausgelöst gelten.spec.groups.[*].rules[*].annotations
: eine Liste von Annotationen, die jeder Benachrichtigung hinzugefügt werden sollen. Dies gilt nur für Benachrichtigungsregeln.spec.groups.[*].rules[*].labels
: die Labels, die hinzugefügt oder überschrieben werden sollen.
Wenden Sie das Manifest auf Ihren Cluster an:
kubectl apply -f extras/prometheus/oss/rules.yaml
Ausfall simulieren
Simulieren Sie einen Ausfall, indem Sie das
contacts
-Deployment auf null skalieren:kubectl scale deployment contacts --replicas 0
In Ihrem Slack-Workspace-Kanal sollten Sie eine Benachrichtigung sehen. Es kann bis zu fünf Minuten dauern, bis GKE das Deployment skaliert hat.
Stellen Sie das Deployment
contacts
wieder her:kubectl scale deployment contacts --replicas 1
Im Slack-Workspace-Kanal sollten Sie eine Benachrichtigung zur Auflösung sehen können. Es kann bis zu fünf Minuten dauern, bis GKE das Deployment skaliert hat.