Eine Anwendung, ein System, ein Produkt oder ein Prozess verfügt über mehrere wichtige Leistungsmetriken, die Ihnen einen Einblick in den Status und die Stärke dieses Systems geben sollen. Eine dieser wichtigen Metrikrollen ist die Funktionsweise eines bestimmten Parameters oder Datenpunkts im Zeitverlauf. Was ist, wenn Sie die Datenbanklatenz in Sekunden überwachen möchten oder wenn Sie die Anzahl der Treffer auf einem API-Endpunkt in einem bestimmten Zeitrahmen oder nur die Zeit überwachen möchten, die zum Ausführen eines bestimmten Prozesses erforderlich ist? Ein einzelner Datenpunkt, der zu diesem Zeitpunkt erfasst wird, liefert allein nicht viele Informationen. Die Verfolgung derselben Punkte im Zeitverlauf zeigt jedoch viel mehr, z. B. die Auswirkungen von Änderungen auf eine bestimmte Metrik.
Wenn Sie beispielsweise wissen möchten, wie sich ein neues Benutzeroberflächendesign oder ein neues API-Dokument auf die Anzahl der API-Treffer auswirkt oder wie sich ein bestimmtes Software-Update auf die Datenbanklatenz auswirkt, führen Sie den aktuellen Wert früher aus. Vergleichen Sie mit dem Wert. Es ist hilfreich, diesen Einblick zu gewähren, bevor die Änderungen eingeführt werden. Dies ist der Wert von Zeitreihendaten.
Graphite wurde auf der Basis eines Open-Source-Tools entwickelt, das Zeitreihendaten überwacht und Informationen auf einem einfach zu lesenden Dashboard anzeigt. Hosted Graphite, ein Produkt von MetricFire, führt Graphite aus und bietet Zuverlässigkeit und Benutzerfreundlichkeit, die intern nur schwer möglich sind. Sie können sich jetzt für eine kostenlose Testversion von Metric Fire anmelden und noch heute mit dem Senden Ihrer Metriken beginnen. In dieser Anleitung zur Installation von Graphite unter Ubuntu erfahren Sie, was Sie selbst tun müssen.
Es gibt verschiedene Tools, deren Hauptzweck darin besteht, mithilfe von Zeitreihendaten nützliche Erkenntnisse zu sammeln, zu überwachen und bereitzustellen. Ein Beispiel für ein solches Werkzeug ist Graphit.
Graphite ist ein Überwachungs- und Grafiktool für Unternehmen, das auf Cloud-Infrastrukturen oder billiger Hardware gleichermaßen gut funktioniert. Unternehmen können Graphite verwenden, um die Leistung von Anwendungen, Websites, Netzwerkservern und Geschäftsdiensten zu verfolgen. Dies war ein wegweisendes Produkt bei der Generierung von Überwachungstools. Mit dem Aufkommen von Graphite war das Teilen, Abrufen, Speichern und Visualisieren von Zeitreihendaten nie einfacher.
Grundsätzlich macht Graphit zwei Dinge. Speichert Zeitreihendaten von Zahlen und rendert Diagramme dieser Daten bei Bedarf. Graphite selbst sammelt keine Daten. Um sie zu sammeln, müssen Sie sie mit minimalem Aufwand und Codeänderungen sammeln. Derzeit gibt es viele Tools, mit denen Daten an Graphit gesendet werden können. Eine Liste solcher Tools finden Sie auf der Graphit-Dokumentationsseite (https://graphite.readthedocs.io/en/latest/tools.html).
Die Aufschlüsselung der Graphitarchitektur zeigt, dass sie aus drei Softwarekomponenten besteht:
** Carbon ** - Graphite sammelt keine Daten, verwendet jedoch die Carbon-Komponente, einen Twisted-Daemon, der passiv auf Zeitreihendaten wartet.
** Whisper ** - Dies ist eine einfache Datenbankbibliothek zum Speichern von Zeitreihendaten (Design ähnlich wie RRD)
** Graphite WebApp ** - Django WebApp, die Diagramme bei Bedarf mit Kairo rendert.
Im vereinfachten Anwendungsfall von Graphite müssen Sie eine Anwendung schreiben, die numerische Zeitreihendaten sammelt, die Sie grafisch darstellen möchten (diese Daten werden normalerweise von einem anderen Tool oben gesammelt). Die App sendet die Daten dann an das Verarbeitungs-Backend von Graphite, Carbon, das die Daten in der dedizierten Graphite-Datenbank Whisper speichert. Die Daten können dann über die Graphite-Weboberfläche Graphite Web App visualisiert werden.
Nachdem Sie einen Überblick über Graphite erhalten haben, konzentriert sich der Rest dieses Artikels speziell auf die Installation von Graphite auf dem Ubuntu-Betriebssystem.
Die Installation von Graphite aus dem Quellcode kann ein komplexer Prozess sein, aber zum Glück gibt es Docker in dieser Ära! Wenn Sie das Graphite-Image mit Docker installieren, können Sie Graphite in wenigen Minuten starten und ausführen. Dies ermöglicht eine schnelle und sehr tragbare Installation. Um Graphite mit Docker zu installieren, führen Sie einfach den folgenden Befehl aus:
docker run -d\
--name graphite\
--restart=always\
-p 80:80\
-p 2003-2004:2003-2004\
-p 2023-2024:2023-2024\
-p 8125:8125/udp\
-p 8126:8126\
graphiteapp/graphite-statsd
Dieser Befehl startet einen Container namens Graphit, der die folgenden Komponenten enthält:
Beachten Sie außerdem, dass Sie die Zuordnung von Container-Ports zu einem beliebigen Host-Port ändern können, wenn die entsprechenden im obigen Befehl aufgeführten Ports bereits vom Host belegt sind. Es ist auch nicht obligatorisch, alle Ports zuzuordnen. Die Verwendung des obigen Befehls bedeutet beispielsweise, dass die Grafana-Komponente an keinem Port verfügbar gemacht wird. Dazu müssen Sie die Graphite-Web-App als Front-End-Dashboard für Ihre App verwenden. Wenn Sie Grafana als Front-End-Dashboard verwenden möchten, verwenden Sie stattdessen den folgenden Befehl.
docker run -d\
--name graphite\
--restart=always\
-p 80:80\
-p 81:81\
-p 2003-2004:2003-2004\
-p 2023-2024:2023-2024\
-p 8125:8125/udp\
-p 8126:8126\
hopsoft/graphite-statsd
Dadurch werden Grafana-Port 80 und Graphite-Port 81 konfiguriert. Der vorherige Befehl ordnet Graphite Port 80 zu. Eine detaillierte Darstellung der zugeordneten Ports finden Sie in der folgenden Tabelle.
Host | Container | Service |
---|---|---|
80 | 80 | nginx - grafana |
81 | 81 | nginx - graphite |
2003 | 2003 | carbon receiver - plaintext |
2004 | 2004 | carbon receiver - pickle |
2023 | 2023 | carbon aggregator - plaintext |
2024 | 2024 | carbon aggregator - pickle |
8125 | 8125 | statsd |
8126 | 8126 | statsd admin |
Aktualisieren Sie nach dem Anmelden die Anmeldedaten für das Standard-Django-Administratorbenutzerkonto. Die Standardeinstellung ist nicht sicher.
http:// localhost / account / login
Sie können auf die Anmeldeseite (oder http: // localhost: 81 / account / login, wenn Grafana aktiviert ist) zugreifen und sich mit beiden Werten mit Ihrem Standardbenutzernamen und -kennwort anmelden. Nach dem Anmelden können Sie das Profil des Root-Benutzers unter der folgenden URL aktualisieren
http: // localhost / admin / auth / user / 1 / (oder http: // localhost: 81 / admin / auth / user / 1 / Graphana ist gültig).
Sie können über den folgenden Link auf das Graphite-Dashboard zugreifen:
http: // localhost / Dashboard (oder http: // localhost: 81 / dashboard, wenn Grafana aktiviert ist).
Wenn Docker nicht geeignet ist, können Sie Graphite direkt mit dem Linux-Befehl apt-get installieren.
Aktualisieren Sie zunächst den lokalen Paketindex auf die neueste stabile Version, indem Sie den folgenden Befehl ausführen:
sudo apt-get update -y
sudo apt-get upgrade -y
Wie bereits erwähnt, besteht Graphite aus mehreren Komponenten: der Graphite-Webanwendung, dem Carbon-Speicher-Backend und der Datenbankbibliothek Whisper. Jede dieser Komponenten befindet sich im Ubuntu-Standardrepository. Diese können einfach durch Ausführen des folgenden Befehls installiert werden:
sudo apt-get install graphite-web graphite-carbon -y
Im Rahmen der Installation habe ich folgende Fragen:
"Das Verzeichnis / var / lib / graphite /whisper enthält Whisper-Datenbankdateien. Behalten Sie diese Datenbankdateien auch dann bei, wenn Sie Graphite Carbon vollständig entfernt haben, falls Sie es später neu installieren. Möchten Sie die Datenbankdatei löschen, wenn Sie Graphite Carbon entfernen? "
Die Frage selbst ist selbsterklärend und die Antwort hängt vom Anwendungsfall ab.
Konfigurieren Sie als Nächstes die Datenbank für die Django-Webanwendung. Die Graphite-Daten selbst werden von der Whisper-Datenbankbibliothek und Carbon verarbeitet. Die Graphite-Webanwendung ist jedoch als Django Python-Anwendung erstellt, sodass Sie die Daten irgendwo speichern müssen.
Standardmäßig ist die Verwendung von SQLite3-Datenbankdateien konfiguriert, diese sind jedoch nicht so robust wie echte relationale Datenbankverwaltungssysteme. Verwenden Sie stattdessen die PostgreSQL-Datenbank, um Ihre App zu konfigurieren. Dies liegt daran, dass die Dateneingabe viel strenger ist und Ausnahmen abfängt, die in Zukunft Probleme verursachen können. Führen Sie den folgenden Befehl aus, um PostgreSQL zu installieren und zu konfigurieren.
sudo apt-get install postgresql libpq-dev python-psycopg2 -y
Dieser Befehl installiert und führt PostgreSQL aus. Um PostgreSQL verwenden zu können, müssen Sie jedoch den gewünschten Benutzer erstellen, bevor Sie die Graphite-Datenbank erstellen. Dies wird wie folgt erreicht:
sudo -u postgres psql
postgres=# CREATE USER graphite WITH PASSWORD 'password';
postgres=# CREATE DATABASE graphite WITH OWNER graphite;
\q
Nachdem die Datenbank und die Benutzer bereit sind, müssen Sie die Graphite-Einstellungen ändern, um die konfigurierten Komponenten zu verwenden. Öffnen Sie die Konfigurationsdatei der Graphite-Webanwendung local_settings.py.
sudo nano /etc/graphite/local_settings.py
Nehmen Sie die folgenden Änderungen an der Datei vor:
SECRET_KEY = 'something_unique'
TIME_ZONE = 'America/New_York'
USE_REMOTE_USER_AUTHENTICATION = True
Wenn Sie fertig sind, sollte es so aussehen:
DATABASES = {
'default': {
'NAME': 'graphite',
'ENGINE': 'django.db.backends.sqlite3',
'USER': 'graphite',
'PASSWORD': 'password',
'HOST': '127.0.0.1',
'PORT': ''
}
}
Wenn Sie fertig sind, drücken Sie STRG + O, Eingabetaste, STRG + X, um die Datei zu speichern und zu schließen und den Datei-Editor zu beenden.
Führen Sie dann den folgenden Befehl aus, um die Datenbank zu synchronisieren und die richtige Struktur zu erstellen.
sudo graphite-manage migrate auth
sudo graphite-manage syncdb
Sie werden dann aufgefordert, ein Superuser-Konto für die Datenbank zu erstellen, und aufgefordert, bestimmte Werte einzugeben. Folgen Sie einfach den Anweisungen auf dem Bildschirm und geben Sie die entsprechenden Werte für jede Frage ein, um die Graphitkonfiguration abzuschließen.
Bearbeiten Sie anschließend die Dienstkonfigurationsdatei Graphite-Carbon, um das Graphite-Speicher-Backend Carbon zu konfigurieren.
sudo nano /etc/default/graphite-carbon
CARBON_CACHE_ENABLED=true
Wenn Sie fertig sind, speichern Sie die Datei und schließen Sie sie.
sudo nano /etc/carbon/carbon.conf
ENABLE_LOGROTATION = True
sudo nano /etc/carbon/storage-schemas.conf
In dieser Datei sind bereits zwei Regelsätze definiert. Diese sind in Abschnitte unterteilt. Die Wörter in Klammern sind die Abschnittsüberschriften, mit denen die neue Definition angegeben wird. Unter jedem Abschnitt befindet sich eine Musterdefinitions- und Aufbewahrungsrichtlinie.
Eine Musterdefinition ist ein regulärer Ausdruck, der verwendet wird, um die an Carbon gesendeten Informationen abzugleichen. Diese Informationen enthalten die Metriknamen, die von dieser Musterdefinition überprüft werden. Im ersten Beispiel prüft das Muster, ob die betreffende Metrik mit der Zeichenfolge "carbon" beginnt.
Die Aufbewahrungsrichtlinie wird durch eine Reihe von Zahlen definiert, die durch Doppelpunkte getrennt sind. Jeder Satz besteht aus einem Metrikintervall (das angibt, wie oft die Metrik aufgezeichnet wird), einem Doppelpunkt und der Zeitdauer zum Speichern dieser Werte. Sie können mehrere durch Kommas getrennte Zahlenreihen definieren.
Definieren Sie zur Demonstration Ihr eigenes Schema, das den später verwendeten Testwerten entspricht. Fügen Sie den folgenden Abschnitt am Ende der Datei hinzu.
[test]
pattern = ^test\.
retentions = 10s:10m,1m:1h,10m:1d
Wenn Sie fertig sind, speichern Sie die Datei und schließen Sie sie.
Dies entspricht allen Metriken, die mit dem Wert "test" beginnen. Speichern Sie die gesammelten Daten dreimal und ändern Sie die Details. Die erste Definition (10s: 10m) erstellt alle 10 Sekunden Datenpunkte und speichert die Werte nur 10 Minuten lang.
Die zweite Archivdefinition (1 m: 1 h) erstellt Datenpunkte pro Minute. Sammeln Sie alle Daten für die letzte Minute (6 Punkte, wenn das vorherige Archiv alle 10 Sekunden Punkte erstellt hat) und aggregieren Sie sie, um einen einzelnen Punkt zu erstellen. Standardmäßig werden dazu die Punkte gemittelt, Sie können sie jedoch später anpassen. Auf dieser Detailebene erstellte Daten werden eine Stunde lang gespeichert.
Die endgültige Archivdefinition (10m: 1d) erstellt alle 10 Minuten Datenpunkte und aggregiert die Daten wie im zweiten Archiv. Speichern Sie die Daten für den Tag.
Wenn Sie Informationen von Graphite anfordern, werden die Daten daher aus dem detailliertesten Archiv zurückgegeben, das den von Ihnen angeforderten Zeitrahmen misst. Wenn Sie beispielsweise Metriken für die letzten 5 Minuten anfordern, werden Informationen aus dem ersten Archiv zurückgegeben. Wenn Sie in den letzten 50 Minuten ein Diagramm angefordert haben, werden die Daten aus dem zweiten Archiv abgerufen.
sudo cp /usr/share/doc/graphite-carbon/examples/storage-aggregation.conf.example /etc/carbon/storage-aggregation.conf
sudo systemctl start carbon-cache
Apache muss installiert und konfiguriert sein, bevor Sie die Graphite-Weboberfläche verwenden können. Sie können Apache mit dem folgenden Befehl installieren:
sudo apt-get install apache2 libapache2-mod-wsgi -y
Nach Abschluss der Installation müssen Sie die virtuelle Standardhostdatei deaktivieren. Dies liegt daran, dass es zu Konflikten mit der neuen Datei kommt.
sudo a2dissite 000-default
Kopieren Sie dann die virtuelle Hostdatei von Graphite Apache in das Verzeichnis der verfügbaren Sites.
sudo cp /usr/share/graphite-web/apache2-graphite.conf /etc/apache2/sites-available
Aktivieren Sie dann die virtuelle Hostdatei, indem Sie Folgendes eingeben:
sudo a2ensite apache2-graphite
Laden Sie den Dienst neu, um die Änderungen zu implementieren.
sudo service apache2 reload
Schließlich wurde Graphite installiert und Sie können jetzt auf die Weboberfläche zugreifen. Öffnen Sie Ihren bevorzugten Webbrowser und geben Sie die URL ein.
http://your_server_domain_name_or_IP
Herzliche Glückwünsche. Ich habe Graphite installiert und konfiguriert.
Selbst wenn Sie die Grundlagen der Arbeit mit Graphite kennen, kann die Skalierung von Graphite auf das Produktionsniveau eine große Herausforderung sein. Wenn Sie überlegen, Graphite auf Produktionsebene auszuführen, wählen Sie MetricFire % 20Graphite% 20on% 20 Ubuntu) [Für die Demo anmelden](https://www.metricfire.com/demo-japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=How%20to%20Install%20and%20Configure% 20on% 20Ubuntu) und erhalten Unterstützung.
Recommended Posts