Skip to content

Graphite

[Graphite][grapihte] stellt eine alternative oder eigentlich den Nachfolger zu Collectd und RRD dar. Open Source Projekt

Was ist das

TSDB und API in einem. Geschrieben in python.

System

whisper

Das ist die eigentliche TSDB. Für jede Metrik die verarbeitet wurde gibt es eine wsp Datei. Metriken werden durch "." getrennt. Diese Trenner spiegeln dann die Verzeichnisstruktur wieder:

icinga2/
└── icinga2
    ├── host
    │   └── hostalive
    │       ├── metadata
    │       │   ├── acknowledgement.wsp
    │       │   ├── current_attempt.wsp
    │       │   ├── downtime_depth.wsp
    │       │   ├── execution_time.wsp
    │       │   ├── latency.wsp
    │       │   ├── max_check_attempts.wsp
    │       │   ├── reachable.wsp
    │       │   ├── state_type.wsp
    │       │   └── state.wsp
    │       └── perfdata
    │           ├── pl
    │           │   ├── crit.wsp
    │           │   ├── value.wsp
    │           │   └── warn.wsp
    │           └── rta
    │               ├── crit.wsp
    │               ├── value.wsp
    │               └── warn.wsp
    └── services
        [...]

carbon-cache

Caches stellen die (direkte) Schnittstelle zu den Whisper-Files. Über definierte Ports lassen sich Metriken einkippen bzw abfragen. Auf einer Nodes können mehrere caches laufen.

carbon-relay

Relays werden vor Caches geschalten. Sie können Als buffer eingesetzt werden um den Caches zeit zum Schreiben zu verschaffen. Relays haben Consistent Hashing integrirert. So verteilen sich metriken über caches hinweg.

Auf einer Node können mehrere Relays laufen

graphite-web

API

Features

Datein einliefern

Wenn man Daten einliefern will, ist das verdammt einfach

# echo "foo.bar 1 `date +%s`" | nc graphite.example.com 2003

Daten Rendern

http://graphite.example.com:8080/render?target=groupByNode(collect.host1_example_com.cpu.*,3,"avg")

Fazit

Pros

  • Skalliert überhaupt im Gegensatz zu Collectd
  • Natives Consisten Hashing
  • HTTP API
  • Einfache Datenstruktur
  • Bereits vorhandener Puppet/Hiera code

Contras

  • TSDB hat ein Flaches/"dummes" datenmodell
  • Whisper erzeugt viele Dateien
  • Updates erzeugen verdammt viele IOPs
  • Mäßig wartbar

Last update: April 13, 2020