Zum Hauptinhalt springen
  1. Beiträge/
  2. Kleines Homelab/
  3. k3s-prod: Kubernetes Cluster Konfiguration und Anwendungsbereitstellung/

OpenObserve

Inhaltsverzeichnis

OpenObserve
#

OpenObserve ist eine Beobachtungsplattform für Logs, Metriken und Traces. Sie tritt an die Stelle eines Elastic- oder Loki-Stapels und kommt mit deutlich weniger Betriebsmitteln aus.

Quelle
#

Zwei Helm-Charts in einem Kustomize-Verbund:

Chart Herkunft Zweck
openobserve charts.openobserve.ai Die Anwendung selbst
cloudnative-pg cloudnative-pg.github.io/charts PostgreSQL-Operator für die Metadaten

Dokumentation
#

Funktion
#

Daten werden über die HTTP-Schnittstelle eingeliefert, üblicherweise von Fluent Bit aus dem Cluster. OpenObserve legt die Datenströme als komprimierte Parquet-Dateien ab und fragt sie über DataFusion ab.

Die Trennung ist wesentlich: die Nutzdaten liegen auf Platte im Container, die Metadaten — Organisationen, Datenströme, Benutzer, gespeicherte Abfragen — in PostgreSQL.

Lokale Anpassungen
#

Die Konfiguration erfolgt vollständig über values.yaml.

Wichtige Einstellungen
#

Schlüssel Wert Bedeutung
ZO_LOCAL_MODE true Einzelknotenbetrieb, alle Rollen in einem Pod
ZO_LOCAL_MODE_STORAGE disk Ablage auf Platte statt in einem Objektspeicher
ZO_META_STORE postgres Metadaten in PostgreSQL
ZO_HTTP_PORT 5080 Weboberfläche und Einlieferungsschnittstelle
ZO_GRPC_PORT 5081 Interne Knotenkommunikation
  • Ingress: Traefik am websecure-EntryPoint. Die Middleware localnet beschränkt den Zugriff auf das lokale Netz — die Oberfläche ist aus dem Internet nicht erreichbar.
  • Zertifikat: certs.yaml fordert über cert-manager und den ClusterIssuer letsencrypt-production ein Zertifikat an.
  • Zugangsdaten: Der Erstbenutzer und die Anbindungen an SMTP und Objektspeicher stehen im auth-Block der values.yaml.

Betriebsmittel
#

ZO_LOCAL_MODE=true bedeutet einen Knoten ohne Ausfallsicherheit. Für diesen Cluster ist das die passende Größe; ein verteilter Betrieb erfordert einen Objektspeicher statt der lokalen Platte.

Die Speicherbelegung folgt der Aufbewahrungsdauer der Datenströme. Diese wird in der Oberfläche je Datenstrom gesetzt, nicht in der values.yaml — ohne Begrenzung wächst die Ablage unbegrenzt.

Installation
#

Bereitgestellt über ArgoCD mit Kustomize und Helm. Von Hand:

1kubectl kustomize --enable-helm apps/openobserve | kubectl apply -n openobserve -f -

Der CloudNativePG-Operator muss vorhanden sein, bevor die Datenbank angelegt werden kann — im Kustomize-Verbund wird er mitinstalliert.

Abhängigkeiten
#

  • Traefik als Ingress-Controller, samt der Middleware localnet
  • cert-manager für das TLS-Zertifikat
  • CloudNativePG für die Metadatenbank
  • Fluent Bit als Lieferant der Cluster-Logs
Fabrice Kirchner
Autor
Fabrice Kirchner
stolzer Vater, Nerd, Admin