So installieren und konfigurieren Sie das Überwachungstool "Graphite" unter Ubuntu

image.png

Einführung

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.

Erklärung von Graphit

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:

image.png

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.

Installieren von Graphite mit Docker

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.

Installieren von Graphite unter Ubuntu 16.04

Graphitinstallation

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.

Installation und Konfiguration von PostgreSQL

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:

  1. Melden Sie sich zunächst mit dem folgenden Befehl bei der PostgreSQL-Shell an:
sudo -u postgres psql
  1. Erstellen Sie einen Graphite-Benutzer und schützen Sie ihn wie folgt mit einem Kennwort:
postgres=# CREATE USER graphite WITH PASSWORD 'password';
  1. Erstellen Sie eine Graphit-Datenbank und weisen Sie dem Benutzer das Eigentum zu.
postgres=# CREATE DATABASE graphite WITH OWNER graphite;
  1. Beenden Sie die PostgreSQL-Shell mit dem folgenden Befehl:
\q

Graphitkonfiguration

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:

  1. Der geheime Schlüssel muss auf einen beliebigen Wert gesetzt werden, der beim Erstellen des Hash als Salt verwendet wird. Kommentieren Sie den Parameter SECRET_KEY aus und ändern Sie den Wert in einen eindeutigen, langen und leicht zu merkenden Wert.
SECRET_KEY = 'something_unique' 
  1. Geben Sie die Zeitzone an. Dies ist wichtig einzustellen, da es sich auf die im Diagramm angezeigte Zeit auswirkt. Bearbeiten Sie die Variable TIME_ZONE in der Datei, um die Zeitzone festzulegen.
TIME_ZONE = 'America/New_York'
  1. Ich möchte die Authentifizierung zum Speichern von Diagrammdaten konfigurieren. Dies erfolgt durch Auskommentieren der nächsten Zeile.
USE_REMOTE_USER_AUTHENTICATION = True 
  1. Suchen Sie den Abschnitt Datenbankkonfiguration der Datei. Ändern Sie den Wert entsprechend der Postgres-Konfiguration. Dies umfasst die Tasten NAME, ENGINE, USER, PASSWORD und HOST.

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.

Schminke Carbon

Bearbeiten Sie anschließend die Dienstkonfigurationsdatei Graphite-Carbon, um das Graphite-Speicher-Backend Carbon zu konfigurieren.

sudo nano /etc/default/graphite-carbon
  1. Um Carbon beim Systemstart zu starten, ändern Sie den Wert von CARBON_CACHE_ENABLED in true.
CARBON_CACHE_ENABLED=true

Wenn Sie fertig sind, speichern Sie die Datei und schließen Sie sie.

  1. Öffnen Sie als Nächstes die Carbon-Konfigurationsdatei carbon.conf.
sudo nano /etc/carbon/carbon.conf
  1. Setzen Sie die Variable ENABLE_LOGROTATION auf true, um die Protokollrotation zu aktivieren.
ENABLE_LOGROTATION = True
  1. Speichern Sie die Datei, bearbeiten Sie die Speicherschemadatei, um das Speicherschema zu konfigurieren, und teilen Sie Carbon mit, wie lange der Wert gespeichert werden soll und wie / welche Metrik beibehalten werden soll.
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.

  1. Als Nächstes müssen Sie definieren, wie die Aggregation durchgeführt werden soll. Dies kann durch Bearbeiten einer Datei mit dem Namen storage-aggregation.conf erfolgen, um die Aggregationsspezifikationen festzulegen. In diesem Lernprogramm wird jedoch das Beispiel einer Konfigurationsdatei für die Speicheraggregation verwendet. Kopieren Sie die Beispielkonfigurationsdatei in das Carbon-Konfigurationsverzeichnis.
sudo cp /usr/share/doc/graphite-carbon/examples/storage-aggregation.conf.example /etc/carbon/storage-aggregation.conf
  1. Finally, start the Carbon service with the following command:
sudo systemctl start carbon-cache

Konfigurieren Sie Apache für Graphite

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

Greifen Sie auf die Graphite-Weboberfläche zu

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

So installieren und konfigurieren Sie das Überwachungstool "Graphite" unter Ubuntu
So installieren Sie WildFly unter Ubuntu 18.04
So installieren und verwenden Sie Composer auf einer ECS-Instanz unter Ubuntu 16.04
Wie installiere ich die in Ubuntu verwendete Sprache und wie erstelle ich die Umgebung?
Installieren Sie Ubuntu20.04 auf RaspberryPi 4 und erstellen Sie Kubernetes, um den Container auszuführen
So installieren Sie Netzwerktreiber unter eigenständigem Ubuntu
So installieren Sie mehrere JDKs unter Ubuntu 18.04 LTS
So installieren Sie den NVIDIA-Treiber auf dem SSH-Ziel Ubuntu
Installieren Sie MySQL 5.6 unter CentOS6 [So geben Sie die Version an]
Installieren Sie Docker und Docker-Compose in kürzester Zeit auf Ubuntu
So installieren Sie JDK 8 unter Windows ohne Verwendung des Installationsprogramms
So installieren Sie Java9 unter ElementaryOS Freya oder Ubuntu 14.04 LTS
So führen Sie React und Rails auf demselben Server aus
Installieren Sie JDK und JRE unter Ubuntu 16.10
Verwendung von Bio-Formaten unter Ubuntu 20.04
Installieren und konfigurieren Sie jenv unter macOS
So installieren Sie MariaDB 10.4 unter CentOS 8
So installieren Sie Adopt OpenJDK unter Debian, Ubuntu mit apt (-get)
Installieren Sie OpenJDK (Java) auf dem neuesten Ubuntu
So installieren Sie Eclipse (Photon) auf Ihrem Mac
Ich möchte PHP 7.2 unter Ubuntu 20.04 installieren.
So installieren Sie Beta PHP8.0 unter CentOS8
Wie man die Zehner und Einsen findet
So installieren Sie kafkacat unter Amazon Linux2
[Android] So aktivieren / deaktivieren Sie das Benachrichtigungsfeld mit StatusBarManager
Erstellen und installieren Sie Wireshark Development Release (3.3.1) unter Ubuntu
Installieren Sie mehrere Javas und wechseln Sie unter Ubuntu zwischen ihnen
Installieren Sie die neueste Version von Jenkins unter Ubuntu 16
Wie installiere ich Oracle JDK 1.8 in Ubuntu 18.04 LTS?
So finden Sie die Gesamtpunktzahl und die Durchschnittspunktzahl
So erstellen Sie eine Pytorch-Umgebung unter Ubuntu
[Java] Memo zum Schreiben der Quelle
So führen Sie NullpoMino 7.5.0 unter Ubuntu 20.04.1 64-Bit-Version aus
So ermitteln Sie den Abstand und den Winkel zwischen zwei Punkten in einer Ebene
Freigeben auf der Hostseite (Windows) und der Gastseite (CentOS 7) mit VirtualBox
So installieren Sie Ruby auf einer EC2-Instanz von AWS
Installieren Sie pyqt5 auf Ubuntu
[Ruby on Rails] So ändern Sie den Spaltennamen
SSH in Ubuntu auf der VirtualBox Ihres Mac und tun Sie dies, bis Sie Docker installieren
Installieren Sie Ruby unter Ubuntu 20.04
So installieren Sie Docker
So installieren Sie Docker-Maschine
Installieren Sie rbenv mit apt auf Ubuntu und setzen Sie Ruby
So installieren Sie MySQL
So installieren Sie Gradle und Kotlin mit SDKMAN (Mac)
Installiere ag (den silbernen Sucher) [unter CentOS / Ubuntu / Mac]