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

Prometheus

Inhaltsverzeichnis

Prometheus
#

Prometheus is an open-source monitoring and alerting toolkit designed for reliability and efficiency, particularly in cloud-native environments. It collects and stores metrics as time series data.

Deployment
#

Argo Deployment

Components
#

This Prometheus deployment includes:

  • Prometheus Server: The core component for scraping, storing, and querying metrics.
  • Prometheus Node Exporter: Collects host-level metrics (CPU, memory, disk I/O, network statistics) from Kubernetes nodes.
  • Kube-State-Metrics: Exposes metrics about the state of Kubernetes objects (e.g., deployments, pods, nodes).
  • Prometheus Pushgateway: Ermöglicht kurzlebigen und Batch-Jobs, ihre Metriken Prometheus zur Verfügung zu stellen.

Quelle
#

Dokumentation
#

Die offizielle Dokumentation von Prometheus ist unter prometheus.io/docs zu finden.

Funktion
#

Prometheus ist ein Pull-basiertes Monitoring-System. Es fragt in regelmäßigen Abständen Metrik-Endpunkte von verschiedenen Zielen (targets) ab, speichert die Ergebnisse und stellt eine leistungsstarke Abfragesprache (PromQL) zur Analyse dieser Daten bereit. In diesem Cluster wird es verwendet, um Metriken von:

  • Kubernetes-Komponenten: API-Server, kubelet, etc.
  • Node Exporter: Stellt Hardware- und Betriebssystem-Metriken der einzelnen Nodes bereit.
  • Anwendungen: Viele der im Cluster laufenden Anwendungen (z.B. ArgoCD, cert-manager) stellen eigene Prometheus-kompatible Metrik-Endpunkte bereit, die automatisch über ServiceMonitor-Ressourcen erkannt werden.

Der Alertmanager ist in diesem Setup deaktiviert.

Lokale Anpassungen
#

Die Konfiguration erfolgt über die values.yaml-Datei.

Wichtige Einstellungen
#

  • Speicher: Die Prometheus-Datenbank (TSDB) wird auf einem Persistent Volume mit einer Größe von 5 GB gespeichert, das über den nfs-client (NFS) bereitgestellt wird.
  • Ingress: Der direkte Zugriff auf die Prometheus-Weboberfläche über einen Ingress ist derzeit deaktiviert. Die Daten werden typischerweise über ein Dashboard-Tool wie Grafana visualisiert.
  • Komponenten: Das Helm-Chart installiert neben dem Prometheus-Server auch den prometheus-node-exporter (als DaemonSet auf jedem Node) und kube-state-metrics, um eine umfassende Überwachung des Clusters zu gewährleisten.

Installation
#

Die Anwendung wird mittels Kustomize und Helm durch ArgoCD im Kubernetes-Cluster bereitgestellt. Die Konfiguration befindet sich im apps/prometheus-Verzeichnis. Eine manuelle Installation kann mit folgendem Befehl durchgeführt werden:

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

Abhängigkeiten
#

  • Ein laufender Kubernetes-Cluster.
  • Eine konfigurierte StorageClass (nfs-client in diesem Fall) für persistenten Speicher.
Per E-Mail antworten
Fabrice Kirchner
Autor
Fabrice Kirchner
stolzer Vater, Nerd, Admin