Graphite ist ein hoch skalierbares Echtzeit-Grafiksystem und Überwachungstool auf Unternehmensebene. Wird zum Sammeln von Website-Informationen in Echtzeit und zum Erstellen von Statistiken verwendet und kann verschiedene Informationen zum Betriebsstatus von Website-Diensten sammeln.
Wer sollte Graphit verwenden?
Jeder, der einen beliebigen Zahlenwert langfristig verfolgen möchte. Wenn Sie eine Zahl haben, die sich im Laufe der Zeit ändern kann, und Sie diesen Wert möglicherweise im Zeitverlauf grafisch darstellen möchten, ist Graphite möglicherweise das Richtige für Sie.
Graphite ist insbesondere für die Verarbeitung numerischer Zeitreihendaten konzipiert. Graphit eignet sich beispielsweise hervorragend für die grafische Darstellung von Aktienkursen, da es sich dabei um Zahlen handelt, die sich im Laufe der Zeit ändern. Ob es sich um ein paar Datenpunkte oder Dutzende Leistungsmetriken von Tausenden von Servern handelt, dann ist Graphite genau das Richtige für Sie. Als Bonus müssen Sie die Namen dieser Dinge nicht im Voraus kennen (wer möchte eine so große Konfiguration verwalten?); Sie senden einfach einen Metriknamen, einen Zeitstempel und einen Wert, und Graphite kümmert sich um den Rest.
Wie skalierbar ist Graphit?
Aus CPU-Sicht skaliert Graphite sowohl im Frontend als auch im Backend horizontal, was bedeutet, dass Sie einfach weitere Maschinen hinzufügen können, um einen höheren Durchsatz zu erzielen. Es ist außerdem fehlertolerant, d. h. der Verlust einer Back-End-Maschine führt zu minimalem Datenverlust (unabhängig davon, was diese Maschine im Speicher zwischengespeichert hat) und führt nicht zum Ausfall des Systems, wenn Sie über genügend verbleibende Kapazität verfügen, um die Last zu bewältigen.
Aus der E/A-Perspektive führt Graphite unter Last sehr schnell viele kleine E/A-Vorgänge für viele verschiedene Dateien aus. Dies liegt daran, dass jede an Graphite gesendete unterschiedliche Metrik in einer eigenen Datenbankdatei gespeichert wird, ähnlich wie viele auf RRD basierende Tools (drraw, Cacti, Centreon usw.) funktionieren. Tatsächlich nutzte Graphite zunächst RRD für die Speicherung, bis grundlegende Einschränkungen auftraten, die eine neue Speicher-Engine erforderten.
Eine hohe Kapazität (Tausende verschiedene Metriken werden pro Minute aktualisiert) erfordert fast ein gutes RAID-Array und/oder SSD. Wenn die Festplatte nicht mit der großen Anzahl kleiner Schreibvorgänge mithalten kann (nur ein paar Bytes pro Datenpunkt, aber die meisten Standardfestplatten können nicht mehr als ein paar tausend E/A-Vorgänge pro Sekunde verarbeiten, selbst wenn sie es wären). klein), Graphites Backend Eingehende Daten werden zwischengespeichert. Wenn dies geschieht, flüstert die Datenbank-Engine von Graphite, indem sie Carbon erlaubt, mehrere Datenpunkte gleichzeitig zu schreiben, wodurch der Gesamtdurchsatz erhöht wird, allerdings auf Kosten der Zwischenspeicherung der überschüssigen Daten im Speicher, bis sie geschrieben werden können.
Graphite unterstützt auch alternative Speicher-Backends, die diese Funktionen erheblich verändern können.
Wie aktuell ist das Diagramm?
Sehr Echtzeit. Selbst unter hoher Last, wenn die Anzahl der eingehenden Metriken pro Zeitintervall viel größer ist als die Geschwindigkeit, mit der das Speichersystem E/A-Vorgänge ausführen kann, und eine große Anzahl von Datenpunkten in der Speicherpipeline zwischengespeichert wird (siehe Erklärung der vorherigen Frage). ) kann Graphite weiterhin Echtzeitdiagramme zeichnen. Der Trick besteht darin, dass die Graphite-Webanwendung, wenn sie eine Anfrage zum Zeichnen des Diagramms erhält, die Daten sowohl von der Festplatte als auch aus dem Pre-Storage-Cache abruft (der Cache kann verteilt sein, wenn Sie mehrere Backend-Server haben) und die beiden Datenquellen kombiniert Kombiniert, um ein Echtzeitdiagramm zu erstellen.
Wer nutzt Graphite bereits?
Graphite wurde intern von Orbitz entwickelt und wird dort zur Visualisierung einer Vielzahl wichtiger Betriebsdaten verwendet, darunter Anwendungsmetriken, Datenbankmetriken, Verkäufe und mehr. Zum jetzigen Zeitpunkt kann das Produktionssystem von Orbitz etwa 160.000 verschiedene Metriken pro Minute verarbeiten und läuft auf zwei niagra-2 Sun-Servern in einem Hochgeschwindigkeits-SAN.
Worin ist Graphit geschrieben?
Die Graphite-Webanwendung basiert auf dem Django-Webframework und verwendet das ExtJS-Javascript-GUI-Toolkit. Die Grafikwiedergabe erfolgt mithilfe der Cairo-Grafikbibliothek. Das Backend und die Datenbank sind in reinem Python geschrieben.
Wer wird Graphite schreiben und warten?
Graphit wurde ursprünglich von Chris Davis von Orbitz entwickelt. Orbitz ist seit langem Teil der Open-Source-Community und hat eine Reihe weiterer intern entwickelter Produkte veröffentlicht.
Graphite wird derzeit von einem Team von Freiwilligen im Rahmen der GitHub-Organisation Graphite-Project entwickelt.