So richtet man TOBS, den Observability Stack, für die Kubernetes-Überwachung ein

Status: Veraltet

Dieser Artikel ist veraltet und wird nicht mehr gewartet.

Grund

Der TOBS-Installer wurde im Upstream veraltet.

Siehe stattdessen

Die offizielle TOBS-Dokumentation.

Einführung

TOBS, kurz für The Observability Stack, ist eine vorgefertigte Distribution von Überwachungswerkzeugen und Dashboard-Schnittstellen, die in jeden vorhandenen Kubernetes-Cluster installiert werden kann. Es enthält viele der beliebtesten Open-Source-Überwachungswerkzeuge mit Prometheus und Grafana als Basis, darunter Promlens, TimescaleDB, Alertmanager und andere. Zusammen bieten sie eine unkomplizierte, wartbare Lösung zur Analyse des Serververkehrs und zur Identifizierung möglicher Probleme bei einer Bereitstellung bis hin zu sehr großen Maßstäben.

TOBS verwendet standardmäßige Kubernetes Helm-Charts, um Bereitstellungen zu konfigurieren und zu aktualisieren. Es kann in jeden Kubernetes-Cluster installiert werden, aber es kann effektiver demonstriert werden, wenn Sie kubectl verwenden, um Ihren Cluster von einer lokalen Maschine aus zu verwalten, anstatt von einem entfernten Knoten. Das Managed Kubernetes von DigitalOcean stellt Ihnen standardmäßig eine Konfiguration wie diese bereit.

In diesem Tutorial installieren Sie TOBS in einem vorhandenen Kubernetes-Cluster und lernen, wie Sie seine Komponenten-Dashboards aktualisieren, konfigurieren und durchsuchen.

Voraussetzungen

Um diesem Tutorial folgen zu können, benötigen Sie:

Schritt 1 — Überprüfen Ihrer Kubernetes-Konfiguration

Um TOBS zu installieren, sollten Sie zunächst eine gültige Kubernetes-Konfiguration mit kubectl eingerichtet haben, über die Sie Ihre Worker-Knoten pingen können. Sie können dies testen, indem Sie kubectl get nodes ausführen:

  1. kubectl get nodes

Wenn kubectl in der Lage ist, eine Verbindung zu Ihrem Kubernetes-Cluster herzustellen und wie erwartet ausgeführt wird, gibt dieser Befehl eine Liste der Knoten mit dem Status Ready zurück:

Output
NAME STATUS ROLES AGE VERSION pool-uqv8a47h0-ul5a7 Ready <none> 22m v1.21.5 pool-uqv8a47h0-ul5am Ready <none> 21m v1.21.5 pool-uqv8a47h0-ul5aq Ready <none> 21m v1.21.5

Wenn dies erfolgreich ist, können Sie mit Schritt 2 fortfahren. Wenn nicht, sollten Sie Ihre Konfigurationsdetails auf mögliche Probleme überprüfen.

Standardmäßig sucht kubectl nach einer Datei unter ~/.kube/config, um Ihre Umgebung zu verstehen. Um zu überprüfen, ob diese Datei existiert und gültige YAML-Syntax enthält, können Sie head darauf ausführen, um die ersten mehreren Zeilen anzuzeigen, z.B.:

  1. head ~/.kube/config
Output
apiVersion: v1 clusters: - cluster: certificate-authority-data: …

Wenn die Datei nicht existiert, stellen Sie sicher, dass Sie als derselbe Benutzer angemeldet sind, mit dem Sie Kubernetes konfiguriert haben. ~/-Pfade spiegeln die persönlichen Benutzerverzeichnisse wider, und Kubernetes-Konfigurationen werden standardmäßig pro Benutzer gespeichert.

Wenn Sie DigitalOcean’s Managed Kubernetes verwenden, stellen Sie sicher, dass Sie den Befehl doctl kubernetes cluster kubeconfig save ausgeführt haben, nachdem Sie einen Cluster eingerichtet haben, damit sich Ihre lokale Maschine authentifizieren kann. Dies wird eine ~/.kube/config-Datei erstellen:

  1. doctl kubernetes cluster kubeconfig save your-cluster-name

Wenn Sie diese Maschine verwenden, um auf mehrere Cluster zuzugreifen, sollten Sie die Kubernetes-Dokumentation zu Verwendung von Umgebungsvariablen und mehreren Konfigurationsdateien überprüfen, um Konflikte zu vermeiden. Nachdem Sie Ihre kubectl-Umgebung konfiguriert haben, können Sie mit der Installation von TOBS im nächsten Schritt fortfahren.

Schritt 2 — Installation von TOBS und Testen Ihrer Endpunkte

TOBS umfasst die folgenden Komponenten:

  • Prometheus ist eine Zeitreihendatenbank und ein Überwachungstool, das funktioniert, indem es Metrik-Endpunkte abfragt und die von diesen Endpunkten freigegebenen Daten abruft und verarbeitet. Es ermöglicht Ihnen, diese Daten mithilfe von PromQL, einer Abfragesprache für Zeitreihendaten, abzufragen.
  • Alertmanager, der normalerweise zusammen mit Prometheus bereitgestellt wird, bildet die Alarmierungsschicht des Stapels. Er behandelt von Prometheus generierte Alarme und dupliziert, gruppiert und leitet sie an Integrationen wie E-Mail oder PagerDuty weiter. Um mehr über Alertmanager zu erfahren, konsultieren Sie die Prometheus-Dokumentation zur Alarmierung.
  • Grafana ist ein Datenvisualisierungs- und Analysetool, mit dem Sie Dashboards und Graphen für Ihre Metrikdaten erstellen können.
  • kube-state-metrics ist ein Add-On-Agent, der dem Kubernetes-API-Server zuhört und Metriken zum Zustand von Kubernetes-Objekten wie Bereitstellungen und Pods generiert. Diese Metriken werden als Klartext auf HTTP-Endpunkten bereitgestellt und von Prometheus konsumiert.
  • Zuletzt ist node-exporter ein Prometheus-Exporter, der auf Cluster-Knoten ausgeführt wird und Betriebssystem- und Hardware-Metriken wie CPU- und Speicherauslastung an Prometheus liefert. Diese Metriken werden auch als Klartext an HTTP-Endpunkten bereitgestellt und von Prometheus verbraucht.

Um TOBS zu installieren, müssen Sie zunächst den TOBS-Installer auf Ihrem Steuerungsplan ausführen. Dadurch werden das tobs-Befehl und Konfigurationsverzeichnisse eingerichtet. Wie in den Voraussetzungen erwähnt, ist der tobs-Befehl nur für Linux/macOS/BSD-Systeme (wie die offiziellen Kubernetes-Binärdateien) konzipiert. Wenn Sie bisher Windows verwendet haben, sollten Sie in der Windows-Subsystem für Linux-Umgebung arbeiten.

Holen Sie sich den TOBS-Installer und führen Sie ihn aus:

  1. curl --proto '=https' --tlsv1.2 -sSLf https://tsdb.co/install-tobs-sh |sh
Output
tobs 0.7.0 was successfully installed ? Binary is available at /root/.local/bin/tobs.

Jetzt können Sie TOBS auf Ihren Kubernetes-Cluster übertragen. Dies geschieht durch einen Einzeiler mit Ihrem neu bereitgestellten tobs-Befehl:

  1. tobs install

Dies erzeugt mehrere Zeilen Ausgabe und kann einige Momente dauern. Abhängig von Ihrer genauen Version von Kubernetes können in der Ausgabe mehrere Warnungen vorhanden sein, aber diese können ignoriert werden, solange Sie schließlich die Nachricht Willkommen bei tobs erhalten:

Output
WARNING: Using a generated self-signed certificate for TLS access to TimescaleDB. This should only be used for development and demonstration purposes. To use a signed certificate, use the "--tls-timescaledb-cert" and "--tls-timescaledb-key" flags when issuing the tobs install command. Creating TimescaleDB tobs-certificate secret Creating TimescaleDB tobs-credentials secret skipping to create TimescaleDB s3 backup secret as backup option is disabled. 2022/01/10 11:25:34 Transport: unhandled response frame type *http.http2UnknownFrame 2022/01/10 11:25:35 Transport: unhandled response frame type *http.http2UnknownFrame 2022/01/10 11:25:35 Transport: unhandled response frame type *http.http2UnknownFrame Installing The Observability Stack 2022/01/10 11:25:37 Transport: unhandled response frame type *http.http2UnknownFrame W0110 11:25:55.438728 75479 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ W0110 11:25:55.646392 75479 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ … ?? Welcome to tobs, The Observability Stack for Kubernetes …

Die Ausgabe ab diesem Zeitpunkt enthält Anweisungen zum Verbinden mit den Web-Endpunkten von Prometheus, TimescaleDB, PromLens und Grafana in Ihrem Browser. Sie wird unten vollständig zur Referenz wiedergegeben:

Output
############################################################################### ? PROMETHEUS NOTES: ############################################################################### Prometheus can be accessed via port 9090 on the following DNS name from within your cluster: tobs-kube-prometheus-prometheus.default.svc.cluster.local Get the Prometheus server URL by running these commands in the same shell: tobs prometheus port-forward The Prometheus alertmanager can be accessed via port 9093 on the following DNS name from within your cluster: tobs-kube-prometheus-alertmanager.default.svc.cluster.local Get the Alertmanager URL by running these commands in the same shell: export POD_NAME=$(kubectl get pods --namespace default -l "app=alertmanager,alertmanager=tobs-kube-prometheus-alertmanager" -o jsonpath="{.items[0].metadata.name}") kubectl --namespace default port-forward $POD_NAME 9093 WARNING! Persistence is disabled on AlertManager. You will lose your data when the AlertManager pod is terminated. ############################################################################### ? TIMESCALEDB NOTES: ############################################################################### TimescaleDB can be accessed via port 5432 on the following DNS name from within your cluster: tobs.default.svc.cluster.local To get your password for superuser run: tobs timescaledb get-password -U <user> To connect to your database, chose one of these options: 1. Run a postgres pod and connect using the psql cli: tobs timescaledb connect -U <user> 2. Directly execute a psql session on the master node tobs timescaledb connect -m ############################################################################### ? PROMLENS NOTES: ############################################################################### PromLens is a PromQL query builder, analyzer, and visualizer. You can access PromLens via a local browser by executing: tobs promlens port-forward Then you can point your browser to http://127.0.0.1:8081/. ############################################################################### ? GRAFANA NOTES: ############################################################################### 1. The Grafana server can be accessed via port 80 on the following DNS name from within your cluster: tobs-grafana.default.svc.cluster.local You can access grafana locally by executing: tobs grafana port-forward Then you can point your browser to http://127.0.0.1:8080/. 2. The 'admin' user password can be retrieved by: tobs grafana get-password 3. You can reset the admin user password with grafana-cli from inside the pod. tobs grafana change-password <password-you-want-to-set>

Jedes davon ist mit einem DNS-Namen intern in Ihrem Cluster versehen, sodass sie von jedem Ihrer Worker-Nodes aus erreicht werden können, z.B. tobs-kube-prometheus-alertmanager.default.svc.cluster.local für Prometheus. Darüber hinaus ist für jeden eine Portweiterleitungsanweisung konfiguriert, die es Ihnen ermöglicht, über einen lokalen Webbrowser darauf zuzugreifen.

In einem neuen Terminal führen Sie tobs prometheus port-forward aus:

  1. tobs prometheus port-forward

Dies beansprucht das Terminal, solange der Portweiterleitungsprozess aktiv ist. Sie können Strg+C drücken, um einen blockierenden Prozess wie diesen ordnungsgemäß zu beenden, wenn Sie die Weiterleitung des Ports beenden möchten. Öffnen Sie dann in einem Webbrowser die URL http://127.0.0.1:9090/. Sie sollten die vollständige Prometheus-Benutzeroberfläche sehen, die Metriken aus Ihrem Cluster generiert:

Sie können dasselbe für Grafana tun, das unter http://127.0.0.1:8080/ erreichbar ist, solange die Portweiterleitung in einem anderen Prozess aktiv ist. Zuerst müssen Sie den Befehl get-password verwenden, der in der Ausgabe des Installationsprogramms bereitgestellt wird:

  1. tobs grafana get-password
Output
your-grafana-password

Sie können dann dieses Passwort verwenden, um sich in die Grafana-Benutzeroberfläche einzuloggen, indem Sie seinen Portweiterleitungs-Befehl ausführen und http://127.0.0.1:8080/ in Ihrem Browser öffnen.

  1. tobs grafana port-forward

Sie haben jetzt einen funktionierenden TOBS-Stack in Ihrem Kubernetes-Cluster. Sie können sich auf die Dokumentation der einzelnen Komponenten beziehen, um ihre jeweiligen Funktionen kennenzulernen. Im letzten Schritt dieses Tutorials erfahren Sie, wie Sie Aktualisierungen an der TOBS-Konfiguration selbst vornehmen können.

Schritt 3 — Bearbeiten von TOBS-Konfigurationen und Aktualisieren

Die Konfiguration von TOBS enthält einige Parameter für die einzelnen Anwendungen im Stapel sowie einige Parameter für die TOBS-Bereitstellung selbst. Sie wird generiert und als Kubernetes Helm-Chart gespeichert. Sie können Ihre aktuelle Konfiguration ausgeben, indem Sie tobs helm show-values ausführen. Dies gibt jedoch die gesamte lange Konfiguration auf Ihrem Terminal aus, was schwer zu lesen sein kann. Sie können stattdessen die Ausgabe in eine Datei mit der Erweiterung .yaml umleiten, da Helm-Charts alle gültige YAML-Syntax haben:

  1. tobs helm show-values > values.yaml

Der Dateiinhalt wird wie folgt aussehen:

~/values.yaml
2022/01/10 11:56:37 Transport: unhandled response frame type *http.http2UnknownFrame
# Werte zur Konfiguration der Bereitstellung von TimescaleDB
# Die README der Charts befindet sich unter:
#    https://github.com/timescale/timescaledb-kubernetes/tree/master/charts/timescaledb-single
# Überprüfen Sie die verschiedenen Konfigurationsoptionen (Verwaltungsanleitung) unter:
#    https://github.com/timescale/timescaledb-kubernetes/blob/master/charts/timescaledb-single/admin-guide.md
cli: false

# Überschreiben Sie den Bereitstellungsnamespace
namespaceOverride: ""
…

Sie können die zusätzlichen Parameter für die TOBS-Konfiguration überprüfen, indem Sie die TOBS-Dokumentation lesen

Wenn Sie diese Datei jemals bearbeiten, um Ihre Bereitstellung zu aktualisieren, können Sie TOBS einfach über sich selbst neu installieren, indem Sie die aktualisierte Konfiguration übergeben. Geben Sie einfach das -f-Option an das tobs install-Befehl mit der YAML-Datei als zusätzliches Argument:

  1. tobs install -f values.yaml

Schließlich können Sie TOBS mit dem folgenden Befehl aktualisieren:

  1. tobs upgrade

Dies führt das Äquivalent eines helm upgrade aus, indem es das neueste Upstream-Chart abruft.

Zusammenfassung

In diesem Tutorial haben Sie gelernt, TOBS, The Observability Stack, auf einem vorhandenen Kubernetes-Cluster bereitzustellen und zu konfigurieren. TOBS ist besonders hilfreich, da es nicht erforderlich ist, Konfigurationsdetails für jede dieser Anwendungen individuell zu pflegen, während es standardisiertes Monitoring für die auf Ihrem Cluster ausgeführten Anwendungen bietet.

Als nächstes möchten Sie möglicherweise lernen, wie Sie Cert-Manager verwenden können, um HTTPS-Ingress für Ihren Kubernetes-Cluster zu behandeln.

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-tobs-the-observability-stack-for-kubernetes-monitoring