Hoe TOBS, The Observability Stack, in te stellen voor Kubernetes-monitoring

Status: Verouderd

Dit artikel is verouderd en wordt niet langer onderhouden.

Reden

De TOBS-installateur is verouderd in de broncode.

Zie in plaats daarvan

De officiële TOBS-documentatie.

Inleiding

TOBS, afkorting voor The Observability Stack, is een voorgeconfigureerde distributie van monitoringtools en dashboardinterfaces die kunnen worden geïnstalleerd in elke bestaande Kubernetes-cluster. Het bevat veel van de meest populaire open-source observability-tools, met Prometheus en Grafana als basis, inclusief Promlens, TimescaleDB, Alertmanager en anderen. Samen bieden deze een eenvoudige, onderhoudsvriendelijke oplossing voor het analyseren van serververkeer en het identificeren van mogelijke problemen bij implementaties tot zeer grote schaal.

TOBS maakt gebruik van standaard Kubernetes Helm-grafieken om implementaties te configureren en bij te werken. Het kan worden geïnstalleerd in elke Kubernetes-cluster, maar het kan effectiever worden gedemonstreerd als u kubectl gebruikt om uw cluster vanaf een lokale machine te beheren in plaats vanaf een externe node. De Managed Kubernetes van DigitalOcean zal u standaard een configuratie zoals deze bieden.

In deze tutorial installeert u TOBS in een bestaande Kubernetes-cluster en leert u hoe u updates kunt uitvoeren, configureren en de dashboards van de componenten kunt bekijken.

Vereisten

Om deze tutorial te volgen, heeft u nodig:

Stap 1 — Verifieer uw Kubernetes-configuratie

Om TOBS te installeren, moet u eerst een geldige Kubernetes-configuratie hebben ingesteld met kubectl van waaruit u uw worker nodes kunt pingen. U kunt dit testen door kubectl get nodes uit te voeren:

  1. kubectl get nodes

Als kubectl in staat is om verbinding te maken met uw Kubernetes-cluster en het draait zoals verwacht, zal dit commando een lijst van nodes retourneren met de status Ready:

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

Als dit succesvol is, kunt u doorgaan naar Stap 2. Zo niet, dan moet u uw configuratiedetails controleren op eventuele problemen.

Standaard zoekt kubectl naar een bestand op ~/.kube/config om uw omgeving te begrijpen. Om te verifiëren dat dit bestand bestaat en geldige YAML-syntaxis bevat, kunt u head erop uitvoeren om de eerste paar regels te bekijken, bijvoorbeeld:

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

Als het bestand niet bestaat, zorg er dan voor dat u bent ingelogd als dezelfde gebruiker waarmee u Kubernetes hebt geconfigureerd. ~/ paden weerspiegelen de home-directories van individuele gebruikers, en Kubernetes-configuraties worden standaard per gebruiker opgeslagen.

Als u DigitalOcean’s Managed Kubernetes gebruikt, zorg er dan voor dat u het commando doctl kubernetes cluster kubeconfig save hebt uitgevoerd nadat u een cluster hebt ingesteld, zodat uw lokale machine hiervan kan worden geauthenticeerd. Dit zal een ~/.kube/config-bestand aanmaken:

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

Als u deze machine gebruikt om toegang te krijgen tot meerdere clusters, dient u de Kubernetes-documentatie te raadplegen over het gebruik van omgevingsvariabelen en meerdere configuratiebestanden om conflicten te vermijden. Nadat u uw kubectl-omgeving hebt geconfigureerd, kunt u doorgaan met het installeren van TOBS in de volgende stap.

Stap 2 — TOBS installeren en uw endpoints testen

TOBS bevat de volgende componenten:

  • Prometheus is een tijdreeksdatabase en monitoringtool die werkt door metrische eindpunten te peilen en de gegevens blootgesteld door deze eindpunten te schrapen en te verwerken. Het stelt u in staat om deze gegevens te bevragen met behulp van PromQL, een querytaal voor tijdreeksgegevens.
  • Alertmanager, meestal naast Prometheus ingezet, vormt de waarschuwingslaag van de stack, waarbij waarschuwingen gegenereerd door Prometheus worden afgehandeld en gedupliceerd, gegroepeerd en doorgestuurd naar integraties zoals e-mail of PagerDuty. Raadpleeg voor meer informatie over Alertmanager de Prometheus-documentatie over waarschuwingen.
  • Grafana is een data visualisatie- en analysetool waarmee u dashboards en grafieken kunt maken voor uw metrische gegevens.
  • kube-state-metrics is een add-on agent die luistert naar de Kubernetes API-server en metrische gegevens genereert over de status van Kubernetes-objecten zoals Deployments en Pods. Deze metrische gegevens worden als platte tekst geserveerd op HTTP-eindpunten en geconsumeerd door Prometheus.
  • Als laatste is node-exporter een Prometheus-exporteur die wordt uitgevoerd op clusternodes en OS- en hardware-metrieken zoals CPU- en geheugengebruik levert aan Prometheus. Deze metrieken worden ook als platte tekst geserveerd op HTTP-eindpunten en worden geconsumeerd door Prometheus.

Om TOBS te installeren, moet je eerst de TOBS-installatieprogramma uitvoeren op je controlepaneel. Dit zal de tobs opdracht en configuratiemappen instellen. Zoals vermeld in de vereisten, is de tobs opdracht alleen ontworpen om te werken op Linux/macOS/BSD-systemen (zoals de officiële Kubernetes-binaries), dus als je tot nu toe Windows hebt gebruikt, moet je werken in de Windows Subsysteem voor Linux omgeving.

Haal de TOBS-installatieprogramma op en voer het uit:

  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.

Je kunt nu TOBS naar je Kubernetes-cluster pushen. Dit wordt gedaan met een enkele opdracht met behulp van je nieuw geleverde tobs opdracht:

  1. tobs install

Dit genereert verschillende regels output en kan enkele momenten duren. Afhankelijk van je exacte versie van Kubernetes kunnen er verschillende waarschuwingen in de output zijn, maar je kunt deze negeren zolang je uiteindelijk het Welkom bij tobs bericht ontvangt:

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 …

Vanaf dit punt bevat de output instructies voor het verbinden met elk van de web-eindpunten van Prometheus, TimescaleDB, PromLens en Grafana in je browser. Het wordt hieronder volledig gereproduceerd ter referentie:

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>

Elk van deze wordt geleverd met een DNS-naam intern aan uw cluster, zodat ze kunnen worden benaderd vanaf een van uw werknodes, bijvoorbeeld tobs-kube-prometheus-alertmanager.default.svc.cluster.local voor Prometheus. Bovendien is er een port forwarding-opdracht geconfigureerd voor elk van hen waarmee u ze kunt benaderen vanuit een lokale webbrowser.

In een nieuw terminalvenster voert u tobs prometheus port-forward uit:

  1. tobs prometheus port-forward

Dit zal de terminal bezet houden zolang het doorsturen van de poort actief is. U kunt Ctrl+C indrukken om een blokkerend proces zoals dit op een ordelijke manier te stoppen wanneer u het doorsturen van de poort wilt stoppen. Vervolgens gaat u in een webbrowser naar de URL http://127.0.0.1:9090/. U zou de volledige Prometheus-interface moeten zien draaien en metingen produceren vanuit uw cluster:

U kunt hetzelfde doen voor Grafana, dat toegankelijk is op http://127.0.0.1:8080/ zolang het doorsturen van de poort actief is in een ander proces. Eerst moet u de get-password-opdracht gebruiken die wordt geleverd door de uitvoer van de installateur:

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

U kunt dan dit wachtwoord gebruiken om in te loggen op de Grafana-interface door de opdracht voor het doorsturen van de poort uit te voeren en http://127.0.0.1:8080/ te openen in uw browser.

  1. tobs grafana port-forward

U heeft nu een werkende TOBS-stack draaien in uw Kubernetes-cluster. U kunt de documentatie van de afzonderlijke componenten raadplegen om hun respectievelijke functies te leren kennen. In de laatste stap van deze tutorial leert u hoe u updates kunt maken naar de configuratie van TOBS zelf.

Stap 3 — Bewerken van TOBS Configuraties en Upgraden

De configuratie van TOBS bevat enkele parameters voor de individuele applicaties in de stack, evenals enkele parameters voor de implementatie van TOBS zelf. Het wordt gegenereerd en opgeslagen als een Kubernetes Helm-grafiek. U kunt uw huidige configuratie uitvoeren door tobs helm show-values uit te voeren. Dit zal echter de volledige lange configuratie naar uw terminal uitvoeren, wat moeilijk te lezen kan zijn. U kunt in plaats daarvan de uitvoer naar een bestand omleiden met de .yaml-extensie, omdat Helm-grafieken allemaal geldige YAML-syntax hebben:

  1. tobs helm show-values > values.yaml

De bestandsinhoud zal er als volgt uitzien:

~/values.yaml
2022/01/10 11:56:37 Transport: unhandled response frame type *http.http2UnknownFrame
# Waarden voor het configureren van de implementatie van TimescaleDB
# De README van de grafiek bevindt zich op:
#    https://github.com/timescale/timescaledb-kubernetes/tree/master/charts/timescaledb-single
# Bekijk de verschillende configuratieopties (beheergids) op:
#    https://github.com/timescale/timescaledb-kubernetes/blob/master/charts/timescaledb-single/admin-guide.md
cli: false

# Overschrijf de implementatienamespace
namespaceOverride: ""
…

U kunt de aanvullende parameters bekijken die beschikbaar zijn voor de configuratie van TOBS door de TOBS-documentatie te lezen

Als u ooit dit bestand wijzigt om uw implementatie bij te werken, kunt u TOBS opnieuw installeren over zichzelf met behulp van de bijgewerkte configuratie. Geef gewoon de -f-optie door aan het tobs install-commando met het YAML-bestand als extra argument:

  1. tobs install -f values.yaml

Eindelijk kunt u TOBS upgraden met de volgende opdracht:

  1. tobs upgrade

Dit voert het equivalent uit van een helm upgrade door het nieuwste upstream-diagram op te halen.

Conclusie

In deze tutorial heb je geleerd hoe je TOBS, The Observability Stack, implementeert en configureert op een bestaande Kubernetes-cluster. TOBS is bijzonder nuttig omdat het de noodzaak elimineert om individuele configuratiedetails voor elk van deze apps afzonderlijk te onderhouden, terwijl het gestandaardiseerde monitoring biedt voor de applicaties die op uw cluster worden uitgevoerd.

Hierna wilt u misschien leren hoe u Cert-Manager gebruikt om HTTPS-ingress naar uw Kubernetes-cluster te beheren.

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