Mittwoch, 22. Januar 2020

Kurz und Gut: Software Metriken

Metriken helfen den Zustand von laufender Software zu überwachen (Monitoring) und Fehler frühzeitig zu erkennen. Das passiert dann mittels Alerts, die meist auf Metriken aufsetzen. Man kann in der Regel drei grundsätzlichen Arten von Metriken unterscheiden:
  1. Counter
  2. Meter bzw. Histogramm
  3. Gauge
Aber wo ist der der Unterschied zwischen den Metrik Typen? 

Hier ein Real Word Beispiel:
Ein Gauge gibt an wie hoch der Wasserstand in deiner Badewanne ist.
Ein Counter dagegen gibt an, wie oft jemand mit einem Eimer Wasser die Badewanne befüllt.

Hier jetzt das Software Beispiel:
Ein Gauge gibt an wie viele Einträge in deiner Datenbank sind.
Ein Counter gibt an wie viele Elemente hinzugefügt wurden.


  • Gauges:
    • Benutzter Speicherplatz (RAM, Heap, Disk, ...)
    • CPU Usage
    • Anzahl von Einträgen in einer Datenbanktabelle
    • Load
  • Counter:
    • Requests
    • Laufzeit
    • Fehler
    • Transaktionen
    • Logzeilen 


Kurz gesagt:
Ein Gauge zeigt einen Zustand an, ein Counter zählt Events.

Ich empfehle die Benutzung von Countern und Gauges.

Warum ich den dritten Metriktyp Meter und Histogramm nicht empfehle.

Meter neigen dazu zu lügen, oft werden die zusätzlichen Informationen nicht gebraucht und sie erhöhen den Aufwand. 
Das Hauptproblem ist aber das die oft wenigen Daten die in einem Metrikpunkt akkumuliert werden. Sie erzeugen bei den verwendeten Aggregationen wie in Histogramm und Meter ein falsches Bild von den Daten. Ein ist Quantilberechnung über 5 Werte ist 95% Sinn frei.

Zusammenfassung 

  1. KISS: Keep it simple an stupid - eine Metrik ist nur ein Float Wert und ein Name. So sollte auch der Code aussehen.
  2. Benutzt Counter und Gauge, je nach Anwendungskontext.
  3. Vermeidet die Metrik-Typen  Meter und Histogramm, es sei denn ihr wisst genau was ihr tut.
  4. Metriken helfen den Zustand von laufender Software zu überwachen und Fehler frühzeitig zu erkennen.
  5. Metriken ersetzen kein Logging.
  6. Metriken sind nicht mit Observability zu verwechseln.

Keine Kommentare:

Kommentar veröffentlichen