Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Praxiseinstieg in Prometheus

Praxiseinstieg in Prometheus

Prometheus ist ein Monitoring-System, welches zur Realzeit Metriken von Systemen und Software erfasst und in einer Time-Series Database abspeichert. Dazu werden Key-Value Paare, bestehend aus einem Metrik-Namen sowie dem dazugehörigen Wert zu dem Zeitstempel abgespeichert.

Basierend auf diesen Daten lassen sich so Systeme über einen Zeitraum überwachen und Alarme generieren. Dazu existiert die Query-Language PromQL, die eigens für Prometheus entwickelt wurde.

Dieser Vortrag gibt einen Praxiseinstieg in Prometheus. Zunächst erfolgt eine grundsätzliche Erklärung wie Prometheus funktioniert und wie man erste Systeme zum Erfassen der Metriken hinzufügen kann. Danach folgt auch direkt ein Einstieg in das Schreiben von eigenen Queries in PromQL und die Einbindung von Graphen in Grafana. Anschließend wird auch noch erläutert, wie man Skripte schreibt, um eigene Metriken zu exportieren, die von Prometheus erfasst werden.

Sujeevan Vijayakumaran

August 11, 2019
Tweet

More Decks by Sujeevan Vijayakumaran

Other Decks in Programming

Transcript

  1. Prometheus Worum geht es hier eigentlich? • Prometheus, Science-Fiction-Film (2012)

    • Prometheus, Gestalt der griechischen Mythologie • Prometheus, Monitoring @svijee Praxiseinstieg in Prometheus 2
  2. Worum geht es in diesen Talk Praxiseinstieg für Einsteiger •

    Grundlagen • Instrumentation • Architektur • PromQL Disclaimer: Ich bin kein Experte! @svijee Praxiseinstieg in Prometheus 3
  3. Merkmale • initial bei SoundCloud entwickelt (2012) • stabile Version

    im Juli 2016 • geschrieben in Go • Graduated Cloud Native Computing Foundation (CNCF) Project • Time-Series Database • Monitoring und Alerting mittels Metriken @svijee Praxiseinstieg in Prometheus 4
  4. Grundlagen Prometheus ist recht einfach gehalten: • keine Hochverfügbarkeit •

    keine Cluster-Fähigkeit per se • keine Langzeitspeicherung • Storage auf lokalen Filesystem @svijee Praxiseinstieg in Prometheus 5
  5. Installation Diverse Installationsmöglichkeiten sind vorhanden: • Binary mit Config und

    systemd Unit-File ausrollen • prometheus-server aus den Paketquellen installieren (Ubuntu, Debian, ...) • Docker Container @svijee Praxiseinstieg in Prometheus 6
  6. Instrumentation • Erfassung und Bereistellung von Metriken • durch Exporter

    • inkludiert in Software @svijee Praxiseinstieg in Prometheus 9
  7. Wir fangen klein an... Der Prometheus Server ist bereits installiert.

    Es fehlt: • Prometheus Node Exporter @svijee Praxiseinstieg in Prometheus 10
  8. Prometheus Node Exporter Was macht der Prometheus Node Exporter? •

    ein Dienst • ermittelt Daten des Nodes (Host) • REST-Schnittstelle @svijee Praxiseinstieg in Prometheus 11
  9. Prometheus Node Exporter Was für Daten stehen da so drin?

    • CPU-Auslastung • RAM-Nutzung • Disk-IO, Disk-Füllstand, ... • Netzwerk @svijee Praxiseinstieg in Prometheus 13
  10. Wie sammelt der Prometheus-Server die Daten? Pull statt Push! Prometheus

    Server scrapet Targets @svijee Praxiseinstieg in Prometheus 15
  11. Metriken node_disk_written_bytes_total{device="dm-0"} 2.1890244608e+10 node_disk_written_bytes_total{device="nvme0n1"} 2.1928897536e+10 • Metrik-Name: node_disk_written_bytes_total • Label:

    device='dm-0' • Value: 2.1890244608e+10 Mehrere Dimensionen durch mehrere Labels ist Standard. @svijee Praxiseinstieg in Prometheus 18
  12. Instrumentation-Label vs. Target-Label Zwei Arten von Label: • Instrumentation-Label: An

    der Metrik • Target-Label: Konfigurierbar über Prometheus-Server Konfiguration @svijee Praxiseinstieg in Prometheus 19
  13. Target-Labels Wofür Target-Labels einsetzen? Informationen ergänzen zu: • Stage •

    Cluster • etc. Einfacheres Filtern von Daten mittels (zusätzlichen) Target-Labels möglich! @svijee Praxiseinstieg in Prometheus 20
  14. Weitere Exporter Offizielle: • MySQL • HAProxy • Consul •

    Memcached • etc. Inoffizielle: • PostgreSQL • Nginx • Apache • uvm. @svijee Praxiseinstieg in Prometheus 21
  15. Eigenen Exporter schreiben • in allen möglichen Programmiersprachen • offizielle

    Client-Libraries für: • Go • Java • Python • Ruby • inoffizielle Client-Libraries für: • Bash • C++ • Perl • PHP • ... @svijee Praxiseinstieg in Prometheus 23
  16. Textfile Collector mit Node Exporter • Node Exporter muss laufen

    • Script schreibt Text-File auf das Dateisystem • Node Exporter liefert Daten des Textfiles aus @svijee Praxiseinstieg in Prometheus 25
  17. Service-Discovery • ständiges Hinzufügen von Target-Endpoints ist aufwändig • Automatisierung

    durch Service-Discovery • Consul, File, kubernetes, etc. @svijee Praxiseinstieg in Prometheus 27
  18. Service-Discovery mit Consul • Consul Agent läuft auf jedem Host

    • Consul Agents sprechen untereinander (Port: 8301, 8302) • Consul Agents sprechen mit Consul Server (Port: 8300) • Konfiguration von Services für Consul @svijee Praxiseinstieg in Prometheus 28
  19. Service-Discovery mit Consul • prometheus.yml: Einbindung von Consul • Endpoints

    werden automatisch gescrapet • Vorteil: keine manuelle List von zahlreichen Hosts notwendig • Nachteil: Netzwerkfreigaben zwischen den Netzen müssen existieren, Ausrollen des Consul Agents @svijee Praxiseinstieg in Prometheus 29
  20. Prometheus Query Language (PromQL) • Abfragesprache • Zeichnen von Graphen

    • keine Ähnlichkeiten zu SQL @svijee Praxiseinstieg in Prometheus 30
  21. Prometheus Query Language (PromQL) Vier Typen: • Instant Vector -

    Time Series mit einem einzelnen Wert für jede Time Series mit gleichen Zeitstempel • Range Vector - Time Series mit einem Wert zu mehreren Zeiten • Scalar - numerische Gleitkommazahl • String - ungenutzt @svijee Praxiseinstieg in Prometheus 31
  22. Funktionen Akzeptieren Instant Vector oder Range Vector als Argument Beispiel:

    • avg() • avg_over_time() @svijee Praxiseinstieg in Prometheus 34
  23. Prometheus-basierte Projekte Prometheus hat einige Schwächen. • Cortex: horizontally scalable,

    highly available, multi-tenant, long term storage for Prometheus. • Thanos: Highly available Prometheus setup with long term storage capabilities. @svijee Praxiseinstieg in Prometheus 37
  24. Fragen? Vielen Dank für die Aufmerksamkeit! Folien in Kürze auf

    https://svij.org/talks @svijee Praxiseinstieg in Prometheus 37