Hat jemand Formeln oder einige Beispieldaten aus seiner Umgebung, mit denen ich abschätzen kann, wie viel Speicherplatz von Graphit pro Datenpunkt belegt wird?
Hat jemand Formeln oder einige Beispieldaten aus seiner Umgebung, mit denen ich abschätzen kann, wie viel Speicherplatz von Graphit pro Datenpunkt belegt wird?
Antworten:
whisper-info.py
gibt Ihnen viel Einblick, was und wie jede Datei aggregiert wird, einschließlich der Dateigröße.
Es ist jedoch nur für vorhandene Whisper-Dateien nützlich.
Wenn Sie die prädiktive Größenbestimmung eines Schemas vor dem Einsetzen anzeigen möchten, versuchen Sie es mit einem Flüstern-Rechner, wie er beispielsweise unter https://gist.github.com/jjmaestro/5774063 verfügbar ist
BEARBEITEN:
Auf die Frage nach einem Beispiel ...
Speicherschema:
{
:catchall => {
:priority => "100",
:pattern => "^\.*",
:retentions => "1m:31d,15m:1y,1h:5y"
}
}
Ein Blick auf meine Datei applied-in-last-hour.wsp
, ls -l
Ausbeuten
-rwxr-xr-x 1 root root 4415092 Sep 16 08:26 applied-in-last-hour.wsp
und whisper-info.py ./applied-in-last-hour.wsp
Erträge
maxRetention: 157680000
xFilesFactor: 0.300000011921
aggregationMethod: average
fileSize: 4415092
Archive 0
retention: 604800
secondsPerPoint: 10
points: 60480
size: 725760
offset: 52
Archive 1
retention: 2678400
secondsPerPoint: 60
points: 44640
size: 535680
offset: 725812
Archive 2
retention: 157680000
secondsPerPoint: 600
points: 262800
size: 3153600
offset: 1261492
Im Grunde genommen kombinieren Sie Ihre Hosts pro Aufbewahrungs-Match pro Aufbewahrungszeitraum-Segment pro Statistik, multiplizieren dies mit einem Faktor von Systemen, die Sie ebenfalls anwenden möchten, und berücksichtigen die Anzahl der neuen Statistiken, die Sie verfolgen werden. Dann nehmen Sie jede Menge Speicherplatz und verdoppeln ihn mindestens (weil wir Speicher kaufen und wissen, dass wir ihn verwenden werden ...)
ls -l
, nehme ich das als Byte. Wenn ich die Größe der Archive in der .wsp-Datei addiere (wie von gemeldet whisper-info.py
), entsprechen sie in etwa der Gesamtgröße der .wsp-Datei (der Rest sind vermutlich Metadaten usw.). Dies sollte die Größe der Datei für alle sein Zeit, da Daten auf niedrigere Datenauflösungen herunterfallen und alte Datenpunkte verworfen werden
ServerCount * MetricCount * 4.5MBytes
In der Dokumentation für statsd geben sie ein Beispiel für eine Richtlinie zur Vorratsdatenspeicherung.
Die Retentionen sind 10s:6h,1min:7d,10min:5y
2160 + 10080 + 262800 = 275040 Datenpunkte und ergeben eine Archivgröße von 3,2 MiB .
Unter der Annahme einer linearen Beziehung wären dies ungefähr 12,2 Bytes pro Datenpunkt .
Keine direkte Erfahrung mit Graphite, aber ich stelle mir die gleiche Logik vor, die wir für Cacti verwendet haben, oder irgendetwas anderes, das für RRD oder Time-Rollover gilt.
Die schnelle Antwort lautet: "Wahrscheinlich nicht so viel Platz, wie Sie für nötig halten."
Die lange Antwort beinhaltet einige ortsspezifische Mathematik. Für unser Überwachungssystem (InterMapper) berechne ich die Aufbewahrungsfristen, Auflösungen und die Datenpunktgröße, multipliziere sie und füge Overhead hinzu.
Als Beispiel verwende ich Speicherplatz - wir speichern Zahlen mit einer Genauigkeit von 5 Minuten für 30 Tage, einer Genauigkeit von 15 Minuten für weitere 60 Tage und einer stündlichen Genauigkeit für weitere 300 Tage, und wir verwenden eine 64 -bit (8 Byte) Ganzzahl zum Speichern:
Bei 8 Bytes pro Sample, das sind ungefähr 173 KB, zuzüglich eines gesunden Overheads für die Speicherindizierung und dergleichen, beträgt dieser für die Datennutzung einer Partition ungefähr 200 KB (ein Fehler, der zu einer Überschätzung neigt).
Anhand der Basismetriken kann ich eine durchschnittliche Größe "pro Computer" ermitteln (10 Festplattenpartitionen, Auslagerungsspeicher, RAM, Lastdurchschnitt, Netzwerktransfer und einige andere Dinge) - entspricht etwa 5 MB pro Computer.
Ich addiere auch gesunde 10% zu der endgültigen Zahl und rechne auf, sodass ich die Dinge mit 6 MB pro Maschine dimensioniere.
Dann schaue ich mir die 1 TB Speicherplatz an, die ich zum Speichern von Metrikdaten für Diagramme zur Verfügung habe, und sage: "Ja, mir geht in meinem Leben wahrscheinlich nicht der Speicherplatz aus, es sei denn, wir wachsen sehr stark!" :-)
Ich habe 70 Knoten, die viele Daten erzeugen. Mit Carbon / Whisper erstellte ein Knoten allein 91k Dateien (der Knoten generiert mehrere Schemata mit jeweils mehreren Zählern und variablen Feldern, die auswählbar sein müssen, z. B .: (Knotenname). (Schema). (Zähler). (Unterzähler). (Etc )....und so weiter).
Dies lieferte die Granularität, die ich brauchte, um jedes gewünschte Diagramm zu zeichnen. Nachdem ich das Skript zum Auffüllen der verbleibenden 69 Knoten ausgeführt hatte, hatte ich 1,3 TB Daten auf der Festplatte. Und das sind nur 6 Stunden Daten / Knoten. Was ich bekomme, ist die tatsächliche flache CSV-Datei für 6 Stunden im Wert von Daten über 230 MB / Knoten. 70 Knoten sind ~ 16 GB Daten. Mein Speicherschema war 120s: 365d.
Ich bin relativ neu in Datenbanken, daher kann es sein, dass ich etwas falsch mache, aber ich schätze, es ist der gesamte Aufwand für jede Stichprobe.
Es war also ein lustiges Experiment, aber ich halte es nicht für sinnvoll, Flüstern für die Art von Daten zu verwenden, die ich speichere. MongoDB scheint eine bessere Lösung zu sein, aber ich muss herausfinden, wie man es als Backend für Grafana verwendet.