Installation · 24 min read · Nov 24, 2025

So installieren Sie den TIG-Stack (Telegraf, InfluxDB und Grafana) auf Debian 12

Der TIG (Telegraf, InfluxDB und Grafana) Stack ist ein Akronym für eine Plattform von Open-Source-Tools, die das Sammeln, Speichern, Grafiken und Alarmieren von Systemmetriken erleichtern. Sie können Metriken wie Speicher, Speicherplatz, angemeldete Benutzer, Systemlast, Swap-Nutzung, Uptime, laufende Prozesse usw. von einem Ort aus überwachen und visualisieren. Die im Stack verwendeten Tools sind wie folgt:

  • Telegraf - ist ein Open-Source-Metrik-Sammelagent zum Sammeln und Senden von Daten und Ereignissen aus Datenbanken, Systemen und IoT-Sensoren. Es unterstützt verschiedene Ausgabe-Plugins wie InfluxDB, Graphite, Kafka usw., an die es die gesammelten Daten senden kann.
  • InfluxDB - ist eine Open-Source-Zeitdatenbank, die in der Programmiersprache Go geschrieben ist. Sie ist für schnelle, hochverfügbare Speicherung optimiert und eignet sich für alles, was große Mengen zeitgestempelter Daten umfasst, einschließlich Metriken, Ereignisse und Echtzeitanalysen.
  • Grafana - ist eine Open-Source-Datenvisualisierungs- und Überwachungs-Suite. Sie unterstützt verschiedene Eingangs-Plugins wie Graphite, ElasticSearch, InfluxDB usw. Sie bietet ein schönes Dashboard und Metrikanalysen, mit denen Sie jede Art von Systemmetriken und Leistungsdaten visualisieren und überwachen können.

In diesem Tutorial lernen Sie, wie Sie den TIG-Stack auf einem einzelnen Debian 12-Server installieren und konfigurieren.

Voraussetzungen

  1. Ein Server, der Debian 12 mit mindestens 1 GB RAM ausführt.
  2. Ein Nicht-Sudo-Benutzer mit Root-Rechten.
  3. Die unkomplizierte Firewall (UFW) ist aktiviert und läuft.
  4. Ein vollqualifizierter Domainname (FQDN) wie grafana.example.com, der auf Ihren Server verweist.
  5. Ein SMTP-Konto mit einem E-Mail-Dienst wie Amazon SES oder Mailgun, um E-Mail-Benachrichtigungen für Dienstalarme zu erhalten.
  6. Stellen Sie sicher, dass alles aktualisiert ist. $ sudo apt update && sudo apt upgrade
  7. Einige essentielle Pakete sind erforderlich, damit das Tutorial und Craft CMS ausgeführt werden können. Einige davon sind möglicherweise bereits auf Ihrem Server vorhanden. $ sudo apt install curl wget nano software-properties-common dirmngr apt-transport-https ca-certificates lsb-release debian-archive-keyring gnupg2 ufw unzip -y

Schritt 1 - Firewall konfigurieren

Bevor Sie Pakete installieren, besteht der erste Schritt darin, die Firewall zu konfigurieren, um Ports für InfluxDB und Grafana zu öffnen.

Überprüfen Sie den Status der Firewall.

$ sudo ufw status

Sie sollten etwas sehen, das wie folgt aussieht.

Status: aktiv

Zu                         Aktion      Von
--                         ------      ----
OpenSSH                    ERLAUBEN    Überall
OpenSSH (v6)               ERLAUBEN    Überall (v6)

Öffnen Sie den Port 8086 für InfluxDB und 3000 für den Grafana-Server.

$ sudo ufw allow 8086
$ sudo ufw allow 3000

Erlauben Sie HTTP- und HTTPS-Ports.

$ sudo ufw allow http
$ sudo ufw allow https

Überprüfen Sie den Status erneut, um zu bestätigen.

$ sudo ufw status
Status: aktiv

Zu                         Aktion      Von
--                         ------      ----
OpenSSH                    ERLAUBEN    Überall
8086                       ERLAUBEN    Überall
3000                       ERLAUBEN    Überall
80/tcp                     ERLAUBEN    Überall
443                        ERLAUBEN    Überall
OpenSSH (v6)               ERLAUBEN    Überall (v6)
8086 (v6)                  ERLAUBEN    Überall (v6)
3000 (v6)                  ERLAUBEN    Überall (v6)
80/tcp (v6)                ERLAUBEN    Überall (v6)
443 (v6)                   ERLAUBEN    Überall (v6)

Schritt 2 - InfluxDB installieren

Wir werden das offizielle Repository von InfluxDB verwenden, um es zu installieren.

Laden Sie den GPG-Schlüssel von InfluxDB herunter.

$ wget -q https://repos.influxdata.com/influxdata-archive_compat.key

Importieren Sie den GPG-Schlüssel auf den Server.

$ echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
influxdata-archive_compat.key: OK

Importieren Sie das InfluxDB-Repository.

$ echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list

Aktualisieren Sie die Repository-Liste des Systems.

$ sudo apt update

Sie haben die Möglichkeit, InfluxDB 1.8.x oder 2.0.x zu installieren. Es ist jedoch besser, die neueste Version zu verwenden. Installieren Sie InfluxDB.

$ sudo apt install influxdb2

Starten Sie den InfluxDB-Dienst.

$ sudo systemctl start influxdb

Überprüfen Sie den Status des Dienstes.

$ sudo systemctl status influxdb
? influxdb.service - InfluxDB ist eine Open-Source, verteilte Zeitdatenbank
     Geladen: geladen (/lib/systemd/system/influxdb.service; aktiviert; voreingestellt: aktiviert)
     Aktiv: aktiv (laufend) seit Di 2024-01-02 02:39:41 UTC; vor 1s
       Docs: https://docs.influxdata.com/influxdb/
    Prozess: 5584 ExecStart=/usr/lib/influxdb/scripts/influxd-systemd-start.sh (code=exited, status=0/ERFOLG)
   Haupt-PID: 5585 (influxd)
      Aufgaben: 8 (Limit: 2299)
     Speicher: 53.1M
        CPU: 735ms
     CGroup: /system.slice/influxdb.service
             ??5585 /usr/bin/influxd
........

Schritt 3 - InfluxDB-Datenbank und Benutzeranmeldeinformationen erstellen

Um die Daten von Telegraf zu speichern, müssen Sie die Influx-Datenbank und den Benutzer einrichten.

InfluxDB wird mit einem Befehlszeilenwerkzeug namens influx geliefert, um mit dem InfluxDB-Server zu interagieren. Denken Sie an influx als das mysql-Befehlszeilenwerkzeug.

Führen Sie den folgenden Befehl aus, um die erste Konfiguration für Influx durchzuführen.

$ influx setup
> Willkommen bei InfluxDB 2.0!
? Bitte geben Sie Ihren Hauptbenutzernamen ein navjot
? Bitte geben Sie Ihr Passwort ein *************
? Bitte geben Sie Ihr Passwort erneut ein *************
? Bitte geben Sie den Namen Ihrer Hauptorganisation ein howtoforge
? Bitte geben Sie den Namen Ihres Hauptbuckets ein tigstack
? Bitte geben Sie Ihre Aufbewahrungsfrist in Stunden ein, oder 0 für unendlich 360
? Einrichten mit diesen Parametern?
  Benutzername:          navjot
  Organisation:      howtoforge
  Bucket:            tigstack
  Aufbewahrungsfrist:  360h0m0s
 Ja
Benutzer    Organisation    Bucket
navjot  howtoforge      tigstack

Sie müssen Ihren anfänglichen Benutzernamen, Ihr Passwort, den Namen der Organisation, den Hauptbucket-Namen zum Speichern von Daten und die Aufbewahrungsfrist in Stunden für diese Daten festlegen. Ihre Daten werden in der Datei /home/username/.influxdbv2/configs gespeichert.

Sie können dieses Setup auch durchführen, indem Sie die URL http://:8086/ in Ihrem Browser aufrufen. Sobald Sie das anfängliche Setup durchgeführt haben, können Sie sich mit den oben erstellten Anmeldeinformationen unter der URL anmelden.

InfluxDB-Anmeldeseite

Sie sollten mit dem folgenden Dashboard begrüßt werden.

InfluxDB-Dashboard

Der anfängliche Einrichtungsprozess erstellt ein Standard-Token, das vollen Lese- und Schreibzugriff auf alle Organisationen in der Datenbank hat. Sie benötigen ein neues Token aus Sicherheitsgründen, das nur mit der Organisation und dem Bucket verbunden ist, mit dem wir uns verbinden möchten.

Um ein neues Token zu erstellen, klicken Sie auf das folgende Symbol in der linken Seitenleiste und klicken Sie auf den Link API-Token, um fortzufahren.

Sie werden zur Seite API-Token weitergeleitet. Hier sehen Sie das Standard-Token, das wir zum Zeitpunkt der ersten Konfiguration erstellt haben.

InfluxDB-Token-Seite

Klicken Sie auf die Schaltfläche API-Token generieren und wählen Sie die Option Benutzerdefiniertes API-Token aus, um ein neues Overlay-Popup zu starten. Geben Sie dem Token einen Namen (telegraf) und erweitern Sie den Abschnitt Ressourcen und wählen Sie den Standardbucket aus, den wir unter den Abschnitten Lesen und Schreiben erstellt haben.

InfluxDB-Token erstellen

Klicken Sie auf Generieren, um die Token-Erstellung abzuschließen. Klicken Sie auf die Schaltfläche IN DIE ZWISCHENABLAGE KOPIEREN, um das Token zu kopieren. Die Schaltfläche funktioniert möglicherweise in einigen Fällen nicht, also stellen Sie sicher, dass Sie es bestätigen, bevor Sie das Popup schließen.

InfluxDB-Telegraf-Token-Popup

Speichern Sie es vorerst, da wir es später benötigen werden.

Damit ist die Installation und Konfiguration von InfluxDB abgeschlossen. Als nächstes müssen wir Telegraf installieren.

Schritt 4 - Telegraf installieren

Telegraf und InfluxDB teilen sich dasselbe Repository. Das bedeutet, dass Sie Telegraf direkt installieren können.

$ sudo apt install telegraf

Der Dienst von Telegraf wird während der Installation automatisch aktiviert und gestartet.

Telegraf ist ein plugin-gesteuertes Agent und hat 4 Arten von Plugins:

  1. Eingangs-Plugins sammeln Metriken.
  2. Verarbeitungs-Plugins transformieren, dekorieren und filtern Metriken.
  3. Aggregator-Plugins erstellen und aggregieren Metriken.
  4. Ausgabe-Plugins definieren die Ziele, an die Metriken gesendet werden, einschließlich InfluxDB.

Telegraf speichert seine Konfiguration für all diese Plugins in der Datei /etc/telegraf/telegraf.conf. Der erste Schritt besteht darin, Telegraf mit InfluxDB zu verbinden, indem das Ausgabe-Plugin influxdb_v2 aktiviert wird. Öffnen Sie die Datei /etc/telegraf/telegraf.conf zur Bearbeitung.

$ sudo nano /etc/telegraf/telegraf.conf

Suchen Sie die Zeile [[outputs.influxdb_v2]] und kommentieren Sie sie aus, indem Sie das # davor entfernen. Bearbeiten Sie den Code darunter wie folgt.

# # Konfiguration zum Senden von Metriken an InfluxDB 2.0
 [[outputs.influxdb_v2]]
#   ## Die URLs der InfluxDB-Clusterknoten.
#   ##
#   ## Mehrere URLs können für einen einzelnen Cluster angegeben werden, nur EINE der
#   ## URLs wird in jedem Intervall geschrieben.
#   ##   z.B.: urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"]
    urls = ["http://127.0.0.1:8086"]
#
#   ## Token zur Authentifizierung.
   token = "$INFLUX_TOKEN"
#
#   ## Organisation ist der Name der Organisation, in die Sie schreiben möchten.
   organization = "howtoforge"
#
#   ## Zielbucket, in den geschrieben werden soll.
   bucket = "tigstack"

Fügen Sie den zuvor gespeicherten InfluxDB-Token-Wert anstelle der Variable $INFLUX_TOKEN im obigen Code ein.

Suchen Sie die Zeile EINGANGS-PLUGINS und Sie werden die folgenden Eingangs-Plugins sehen, die standardmäßig aktiviert sind.

# Lesen Sie Metriken über die CPU-Nutzung
[[inputs.cpu]]
  ## Ob pro-CPU-Statistiken gemeldet werden sollen oder nicht
  percpu = true
  ## Ob die gesamten System-CPU-Statistiken gemeldet werden sollen oder nicht
  totalcpu = true
  ## Wenn wahr, sammeln Sie rohe CPU-Zeitmetriken
  collect_cpu_time = false
  ## Wenn wahr, berechnen und melden Sie die Summe aller nicht-leeren CPU-Zustände
  report_active = false
  ## Wenn wahr und die Informationen verfügbar sind, fügen Sie core_id- und physical_id-Tags hinzu
  core_tags = false


# Lesen Sie Metriken über die Speichernutzung nach Einhängepunkt
[[inputs.disk]]
  ## Standardmäßig werden Statistiken für alle Einhängepunkte gesammelt.
  ## Setzen Sie mount_points, um die Statistiken nur auf die angegebenen Einhängepunkte zu beschränken.
  # mount_points = ["/"]

  ## Ignorieren Sie Einhängepunkte nach Dateisystemtyp.
  ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]

  ## Ignorieren Sie Einhängepunkte nach Einhängeoptionen.
  ## Der Befehl 'mount' meldet Optionen aller Einhänge in Klammern.
  ## Bind-Mounts können mit der speziellen Option 'bind' ignoriert werden.
  # ignore_mount_opts = []


# Lesen Sie Metriken über die Festplatten-I/O nach Gerät
[[inputs.diskio]]
....
....

# Holen Sie sich Kernelstatistiken von /proc/stat
[[inputs.kernel]]
  # keine Konfiguration


# Lesen Sie Metriken über die Speichernutzung
[[inputs.mem]]
  # keine Konfiguration
  
# Holen Sie sich die Anzahl der Prozesse und gruppieren Sie sie nach Status
[[inputs.processes]]
  # keine Konfiguration


# Lesen Sie Metriken über die Swap-Speichernutzung
[[inputs.swap]]
  # keine Konfiguration


# Lesen Sie Metriken über Systemlast und Uptime
[[inputs.system]]
  # keine Konfiguration

Sie können zusätzliche Eingangs-Plugins je nach Bedarf konfigurieren, einschließlich Apache-Server, Docker-Container, Elasticsearch, iptables-Firewall, Kubernetes, Memcached, MongoDB, MySQL, Nginx, PHP-fpm, Postfix, RabbitMQ, Redis, Varnish, Wireguard, PostgreSQL usw.

Sobald Sie fertig sind, speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Starten Sie den Telegraf-Dienst neu, sobald Sie die Änderungen angewendet haben.

$ sudo systemctl restart telegraf

Schritt 5 - Überprüfen, ob Telegraf-Statistiken in InfluxDB gespeichert werden

Bevor Sie weiterfahren, müssen Sie überprüfen, ob die Telegraf-Statistiken korrekt gesammelt und in die InfluxDB eingespeist werden. Öffnen Sie die InfluxDB-Benutzeroberfläche in Ihrem Browser, klicken Sie auf das zweite Symbol in der linken Seitenleiste und wählen Sie das Menü Buckets aus.

InfluxDB-Buckets-Seite

Klicken Sie auf tigstack und Sie sollten mit der folgenden Seite begrüßt werden.

InfluxDB-Daten-Explorer

Klicken Sie auf den Bucket-Namen und dann auf einen der Werte im Filter _measurement, und klicken Sie weiter auf andere Werte, sobald sie erscheinen. Wenn Sie fertig sind, klicken Sie auf die Schaltfläche Absenden. Sie sollten oben ein Diagramm sehen. Möglicherweise müssen Sie einige Zeit warten, bis die Daten erscheinen. Wir haben das Zeitintervall von Vergangene 1 h auf Vergangene 5m verschoben, um ein Diagramm über ein großes Gebiet zu erzeugen.

InfluxDB-Daten-Diagramme

Dies sollte bestätigen, dass die Daten korrekt übergeben werden.

Schritt 6 - Grafana installieren

Wir werden das offizielle Grafana-Repository verwenden, um es zu installieren. Importieren Sie den Grafana-GPG-Schlüssel.

$ sudo mkdir -p /etc/apt/keyrings/
$ wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null

Fügen Sie das Repository zu Ihrem System hinzu.

$ echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Wenn Sie Grafana Beta installieren möchten, fügen Sie stattdessen das folgende Repository hinzu.

$ echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com beta main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Aktualisieren Sie die Repository-Liste des Systems.

$ sudo apt update

Installieren Sie Grafana.

$ sudo apt install grafana

Starten und aktivieren Sie den Grafana-Dienst.

$ sudo systemctl enable grafana-server --now

Überprüfen Sie den Dienststatus.

$ sudo systemctl status grafana-server
? grafana-server.service - Grafana-Instanz
     Geladen: geladen (/lib/systemd/system/grafana-server.service; aktiviert; voreingestellt: aktiviert)
     Aktiv: aktiv (laufend) seit Di 2024-01-02 03:48:01 UTC; vor 3s
       Docs: http://docs.grafana.org
   Haupt-PID: 8769 (grafana)
      Aufgaben: 7 (Limit: 2299)
     Speicher: 42.6M
        CPU: 1.804s
     CGroup: /system.slice/grafana-server.service
             ??8769 /usr/share/grafana/bin/grafana server --config=/etc/grafana/grafana.ini --pidfile=/run/grafana/grafana-server.pid --packaging=deb cfg:default.paths.logs=/var/log/grafana cfg:default.paths...
.......

Schritt 7 - Grafana-Datenquelle einrichten

Starten Sie die URL http://:3000 in Ihrem Browser und die folgende Grafana-Anmeldeseite sollte Sie begrüßen.

Grafana-Anmeldeseite

Melden Sie sich mit dem Standardbenutzernamen admin und dem Passwort admin an. Als nächstes müssen Sie ein neues Standardpasswort festlegen.

Grafana Neues Passwort

Sie werden mit der folgenden Grafana-Startseite begrüßt. Klicken Sie auf die Schaltfläche Fügen Sie Ihre erste Datenquelle hinzu.

Grafana-Dashboard

Klicken Sie auf die Schaltfläche InfluxDB.

Datenquelle in Grafana hinzufügen

Wählen Sie auf der nächsten Seite Flux aus dem Dropdown-Menü als Abfragesprache aus. Sie können InfluxQL als Abfragesprache verwenden, aber es ist komplizierter zu konfigurieren, da es standardmäßig nur InfluxDB v1.x unterstützt. Flux unterstützt InfluxDB v2.x und ist einfacher einzurichten und zu konfigurieren.

Grafana Abfragesprachauswahl

Geben Sie die folgenden Werte ein.

URL: http://localhost:8086 Basis-Auth-Details Benutzer: navjot Passwort:

InfluxDB-Details Organisation: howtoforge Token: Standard-Bucket: tigstack

Grafana InfluxDB-Details

Klicken Sie auf die Schaltfläche Speichern und testen, und Sie sollten eine Bestätigungsnachricht sehen, die bestätigt, dass die Einrichtung erfolgreich war.

Grafana Speichern-Details

Schritt 8 - Grafana-Dashboards einrichten

Der nächste Schritt besteht darin, Grafana-Dashboards einzurichten. Klicken Sie auf das Hamburger-Menü links von Startseite und klicken Sie auf Dashboards, um den Bildschirm zum Erstellen von Dashboards zu öffnen.

Grafana Dashboard-Menüelement

Klicken Sie auf die Schaltfläche Dashboard erstellen, um fortzufahren.

Grafana Dashboard erstellen-Seite

Klicken Sie auf der nächsten Seite auf die Schaltfläche Visualisierung hinzufügen, um das Overlay zu starten, und klicken Sie auf influxdb-1, um es als Datenquelle auszuwählen.

Wählen Sie Grafana-Datenquelle aus

Sie werden zur folgenden Seite Panel bearbeiten weitergeleitet.

Grafana Neues Dashboard-Panel

Fügen Sie den folgenden Code im Abfrage-Editor ein.

from(bucket: "NAMEOFYOUBUCKET")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "cpu")
  |> filter(fn: (r) => r["_field"] == "usage_idle")
  |> filter(fn: (r) => r["cpu"] == "cpu-total")
  |> filter(fn: (r) => r["host"] == "NAMEOFYOURHOST")
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
  |> map(fn: (r) => ({ r with _value: r._value * -1.0 + 100.0 }))
  |> toFloat()
  |> yield(name: "mean")

Verwenden Sie den Bucket-Namen, den wir oben verwendet haben. Und den Namen des Hosts, den Sie aus der Datei /etc/hostname abrufen können.

Der obige Code berechnet die CPU-Nutzung und generiert ein Diagramm dafür. Geben Sie dem Panel einen Titel.

Grafana Panel bearbeiten-Abfrage

Klicken Sie auf die Schaltfläche Abfrageinspektor und dann auf die Schaltfläche Aktualisieren, um zu überprüfen, ob Ihre Abfrage erfolgreich funktioniert. Klicken Sie auf das Kreuzsymbol, um den Inspektor zu schließen.

Grafana Abfrageinspektor-Ergebnis

Sie können auch die Achsen benennen, indem Sie das Feld Label auf der rechten Seite im Abschnitt Achse verwenden.

Grafana Achsenbeschriftungsfeld

Klicken Sie auf die Schaltfläche Übernehmen, um das Panel zu speichern. Klicken Sie auf die Schaltfläche Dashboard speichern, wenn Sie fertig sind.

Grafana Dashboard speichern

Geben Sie dem Dashboard einen Namen und klicken Sie auf Speichern, um abzuschließen.

Grafana Dashboard speichern-Popup

Es öffnet sich das Dashboard, und klicken Sie dann auf die Schaltfläche Visualisierung hinzufügen, um ein weiteres Panel zu erstellen.

Grafana Neues Visualisierungs-Panel

Wiederholen Sie den Vorgang, indem Sie ein weiteres Panel für die RAM-Nutzung erstellen.

from(bucket: "NAMEOFYOUBUCKET")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "mem")
  |> filter(fn: (r) => r["_field"] == "used_percent")
  |> filter(fn: (r) => r["host"] == "NAMEOFYOURHOST")
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
  |> yield(name: "mean")

Verwenden Sie den folgenden Code, um die HDD-Nutzung anzuzeigen.

from(bucket: "NAMEOFYOURBUCKET")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "disk")
  |> filter(fn: (r) => r["_field"] == "used")
  |> filter(fn: (r) => r["path"] == "/")
  |> filter(fn: (r) => r["host"] == "NAMEOFYOURHOST")
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
  |> map(fn: (r) => ({ r with _value: r._value / 1000000.0 }))
  |> toFloat()  
  |> yield(name: "mean")

Sie können eine unbegrenzte Anzahl von Panels erstellen.

Der obige Code basiert auf der Flux-Skriptsprache. Glücklicherweise müssen Sie die Sprache nicht lernen, um Abfragen zu schreiben. Sie können die Abfrage von der InfluxDB-URL generieren. Obwohl das Lernen der Sprache von Vorteil sein kann, um die Abfragen zu optimieren.

Sie müssen zur InfluxDB-Dashboard zurückkehren und die Erforschen-Seite öffnen, um die Abfrage zu erhalten.

Klicken Sie auf den Bucket-Namen und dann auf einen der Werte im Filter _measurement, und klicken Sie weiter auf andere Werte, sobald sie erscheinen. Wenn Sie fertig sind, klicken Sie auf die Schaltfläche Skripteditor und Sie sollten die folgende Seite sehen. Das Diagramm sollte ebenfalls aktualisiert werden.

Grafana Erforschen-Abfrage-Seite

InfluxDB Skripteditor

Kopieren Sie die angezeigte Abfrage, und Sie können sie jetzt im Grafana-Dashboard verwenden, um Ihre Diagramme zu erstellen.

Schritt 9 - Alarme und Benachrichtigungen konfigurieren

Der Hauptzweck der Einrichtung von Monitoren besteht darin, rechtzeitig Alarme zu erhalten, wenn der Wert einen bestimmten Schwellenwert überschreitet.

Der erste Schritt besteht darin, das Ziel festzulegen, an das Sie Alarme erhalten möchten. Sie können Benachrichtigungen per E-Mail, Slack, Kafka, Google Hangouts Chat, Microsoft Teams, Telegram usw. erhalten.

Wir werden E-Mail-Benachrichtigungen für unser Tutorial aktivieren. Um E-Mail-Benachrichtigungen einzurichten, müssen wir zuerst den SMTP-Dienst konfigurieren. Öffnen Sie die Datei /etc/grafana/grafana.ini, um SMTP zu konfigurieren.

$ sudo nano /etc/grafana/grafana.ini

Suchen Sie die folgende Zeile [smtp] darin. Kommentieren Sie die folgenden Zeilen aus und geben Sie die Werte für den benutzerdefinierten SMTP-Server ein.

[smtp]
enabled = true
host = email-smtp.us-west-2.amazonaws.com:587
user = IHRBENUTZERNAME
# Wenn das Passwort # oder ; enthält, müssen Sie es mit dreifachen Anführungszeichen umschließen. Ex """#passwort;"""
password = IHRBENUTZERPASSWORT
;cert_file =
;key_file =
;skip_verify = false
from_address = [email protected]
from_name = HowtoForge Grafana
# EHLO-Identität im SMTP-Dialog (standardmäßig instance_name)
;ehlo_identity = dashboard.example.com
# SMTP startTLS-Richtlinie (standardmäßig 'OpportunisticStartTLS')
;startTLS_policy = NoStartTLS

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Starten Sie den Grafana-Server neu, um die Einstellungen anzuwenden.

$ sudo systemctl restart grafana-server

Öffnen Sie die Grafana-Seite, klicken Sie auf das Alarm-Symbol und klicken Sie auf Kontaktpunkte.

Grafana Kontaktpunkte-Popup

Grafana erstellt und konfiguriert automatisch einen Standard-E-Mail-Kontaktpunkt, der mit der richtigen E-Mail-Adresse konfiguriert werden muss. Klicken Sie auf die Schaltfläche Bearbeiten gegenüber dem Kontaktpunkt grafana-default-email.

Grafana Kontaktpunkt bearbeiten

Geben Sie die Details ein, um den E-Mail-Benachrichtigungskanal einzurichten.

Grafana E-Mail-Benachrichtigung Kontaktpunkt

Wenn Sie eine zusätzliche Nachricht senden möchten, klicken Sie auf den Link Optionale E-Mail-Einstellungen und geben Sie die Nachricht ein.

Grafana optionale E-Mail-Einstellungen

Klicken Sie auf Test, um das Popup zu öffnen, und klicken Sie dann auf die Schaltfläche Testbenachrichtigung senden, um zu sehen, ob die E-Mail-Einstellungen funktionieren. Klicken Sie auf Kontaktpunkt speichern, wenn Sie fertig sind.

Sie sollten die folgende E-Mail erhalten, die die Einstellungen bestätigt.

Grafana Test-E-Mail

Jetzt, da wir Benachrichtigungskanäle eingerichtet haben, müssen wir Alarme einrichten, wann wir diese E-Mails erhalten möchten. Um die Alarme einzurichten, müssen Sie zurück zu den Dashboard-Panels.

Gehen Sie zurück zum Bildschirm Dashboards. Klicken Sie auf das Dashboard, das wir gerade erstellt haben, und Sie erhalten dessen Startseite mit verschiedenen Panels. Um das Panel zu bearbeiten, klicken Sie auf den Namen des Panels, und ein Dropdown-Menü wird angezeigt. Klicken Sie auf den Link Bearbeiten, um fortzufahren.

Grafana Dashboard-Panel bearbeiten

Klicken Sie auf das Alarm-Panel und klicken Sie auf die Schaltfläche Neue Alarmregel, um einen neuen Alarm einzurichten. Wir erstellen einen Alarm für das CPU-Nutzungs-Panel.

Grafana Alarmregel erstellen-Schaltfläche

Sie können jetzt die Bedingungen konfigurieren, unter denen Grafana den Alarm sendet. Klicken Sie auf das Dropdown-Menü Optionen und wählen Sie den Standard-Zeitraum (jetzt-6h bis jetzt) aus, um den Zeitraum auf die Letzten 15 Minuten zu ändern, was bedeutet, dass es von vor 15 Minuten bis jetzt überprüft.

Grafana Alarmzeitbereich bearbeiten

Standardmäßig ist der ausgewählte Alarmtyp ein von Grafana verwalteter Alarm. Es sind standardmäßig zwei Ausdrücke ausgewählt. Löschen Sie sie, indem Sie die Schaltfläche zum Löschen gegen sie drücken. Wählen Sie im Dropdown-Menü Ausdruck hinzufügen den Klassischen Zustand als Ausdruckstyp aus.

Grafana Alarmausdruck hinzufügen

Grafana Alarme Ausdruck

Klicken Sie auf Als Alarmbedingung festlegen, um den gewählten Ausdruck zum Senden der Alarme auszuwählen. Dadurch wird das Ausdrucksfenster wie unten gezeigt geändert.

Grafana Ausdruck Alarmbedingung

Bedingungen

Grafana arbeitet mit einer Abfrage des folgenden Formats, um zu bestimmen, wann ein Alarm ausgelöst werden soll.

avg() DER Abfrage(A) IST ÜBER 0.8
  • avg() steuert, wie der Wert für jede Serie auf einen vergleichbaren Wert gegenüber dem Schwellenwert reduziert werden soll. Sie können auf den Funktionsnamen klicken, um eine andere Funktion wie avg(), min(), max(), sum(), count() usw. auszuwählen.

  • query(A) Der Buchstabe in der Klammer definiert, welche Abfrage aus dem Tab Metriken ausgeführt werden soll.

  • IST UNTER 14 Definiert den Typ des Schwellenwerts und den Schwellenwertwert. Sie können auf IST UNTER klicken, um einen anderen Schwellenwerttyp auszuwählen.

Sie können eine zweite Bedingung darunter hinzufügen, indem Sie auf die Schaltfläche + unter der ersten Bedingung klicken. Derzeit können Sie nur UND- und ODER-Operatoren zwischen mehreren Bedingungen verwenden.

Als nächstes werden wir das Bewertungsverhalten festlegen. Klicken Sie auf die Schaltfläche Neuer Ordner, um einen Ordner zu erstellen, um Ihre Regeln zu speichern. Klicken Sie auf die Schaltfläche Neue Bewertungsgruppe, um eine Gruppe zu erstellen, um Regeln zu bündeln, die nach demselben Zeitintervall bewertet werden. Setzen Sie das Zeitintervall auf 5m, während Sie die Gruppe erstellen.

Grafana Alarmbewertungsgruppe

Sobald Sie fertig sind, sollte die Seite wie folgt aussehen. Setzen Sie den Alarmstatus, wenn ein Ausführungsfehler oder Timeout auftritt, auf Alarmierung.

Grafana Alarmbewertungsverhalten

Regel

  • Name - Geben Sie einen beschreibenden Namen für den Alarm ein.
  • Ordner - Erstellen oder wählen Sie einen vorhandenen Ordner aus, um Ihre Benachrichtigungsregel zu speichern.
  • Gruppe - Geben Sie einen Namen für Ihre Alarmgruppe ein. Alarme in einer einzelnen Gruppe werden nach demselben Zeitintervall bewertet.
  • Ausstehend - Geben Sie an, wie oft Grafana den Alarm bewerten soll. Es wird auch als Bewertungsintervall bezeichnet. Sie können hier jeden gewünschten Wert festlegen.

Keine Daten- und Fehlerbehandlung

Sie können konfigurieren, wie Grafana mit Abfragen umgehen soll, die keine Daten oder nur Nullwerte zurückgeben, indem Sie die folgenden Bedingungen verwenden:

  1. Keine Daten - Setzen Sie den Regelstatus auf NoData
  2. Alarmierung - Setzen Sie den Regelstatus auf Alarmierung
  3. Ok - Setzen Sie den Alarmregelstatus auf Ok, da Sie auch dann einen Alarm erhalten, wenn alles in Ordnung ist.

Sie können Grafana mitteilen, wie es mit Ausführungs- oder Timeout-Fehlern umgehen soll.

  1. Alarmierung - Setzen Sie den Regelstatus auf Alarmierung
  2. Ok - Setzen Sie den Alarmregelstatus auf Ok, da Sie auch dann einen Alarm erhalten, wenn alles in Ordnung ist.
  3. Fehler - Setzen Sie den Alarmregelstatus auf Fehler, um anzuzeigen, dass ein Problem vorliegt.

Sobald Sie fertig sind, klicken Sie auf die Schaltfläche Alarmevorschau, um zu sehen, ob alles einwandfrei funktioniert. Klicken Sie auf die Schaltfläche Regel speichern und beenden oben rechts, um das Hinzufügen des Alarms abzuschließen. Sie sollten jetzt beginnen, Alarme per E-Mail zu erhalten. Folgendes ist ein Beispiel für eine solche E-Mail.

Grafana CPU-Nutzungs-E-Mail

Schritt 10 - Nginx installieren

Debian 12 wird mit einer älteren Version von Nginx ausgeliefert. Sie müssen das offizielle Nginx-Repository herunterladen, um die neueste Version zu installieren.

Importieren Sie den Signaturschlüssel von Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Fügen Sie das Repository für die Hauptversion von Nginx hinzu.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/mainline/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Aktualisieren Sie die System-Repositories.

$ sudo apt update

Installieren Sie Nginx.

$ sudo apt install nginx

Überprüfen Sie die Installation. Auf Debian-Systemen funktioniert der folgende Befehl nur mit sudo.

$ sudo nginx -v
nginx version: nginx/1.25.3

Starten Sie den Nginx-Server.

$ sudo systemctl start nginx

Überprüfen Sie den Dienststatus.

$ sudo systemctl status nginx
? nginx.service - nginx - Hochleistungs-Webserver
     Geladen: geladen (/lib/systemd/system/nginx.service; aktiviert; voreingestellt: aktiviert)
     Aktiv: aktiv (laufend) seit Di 2024-01-02 09:21:10 UTC; vor 5s
       Docs: https://nginx.org/en/docs/
    Prozess: 12964 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/ERFOLG)
   Haupt-PID: 12965 (nginx)
      Aufgaben: 3 (Limit: 2299)
     Speicher: 2.9M
        CPU: 86ms
     CGroup: /system.slice/nginx.service
             ??12965 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??12966 "nginx: worker process"
             ??12967 "nginx: worker process"

Jan 02 09:21:10 grafana systemd[1]: Starting nginx.service - nginx - Hochleistungs-Webserver...
Jan 02 09:21:10 grafana systemd[1]: Started nginx.service - nginx - Hochleistungs-Webserver.

Schritt 11 - SSL installieren

Wir müssen Certbot installieren, um das SSL-Zertifikat zu generieren. Sie können Certbot entweder mit dem Repository von Debian installieren oder die neueste Version mit dem Snapd-Tool herunterladen. Wir werden die Snapd-Version verwenden.

Debian 12 wird nicht mit Snapd installiert. Installieren Sie das Snapd-Paket.

$ sudo apt install snapd

Führen Sie die folgenden Befehle aus, um sicherzustellen, dass Ihre Version von Snapd auf dem neuesten Stand ist.

$ sudo snap install core && sudo snap refresh core

Installieren Sie Certbot.

$ sudo snap install --classic certbot

Verwenden Sie den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem Sie einen symbolischen Link zum Verzeichnis /usr/bin erstellen.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Überprüfen Sie, ob Certbot korrekt funktioniert.

$ certbot --version
certbot 2.8.0

Führen Sie den folgenden Befehl aus, um ein SSL-Zertifikat zu generieren.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d grafana.example.com

Der obige Befehl lädt ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/grafana.example.com auf Ihrem Server herunter.

Generieren Sie ein Diffie-Hellman-Gruppe-Zertifikat.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Überprüfen Sie den Zeitplan für den Certbot-Erneuerungsdienst.

$ systemctl list-timers

Sie finden snap.certbot.renew.service als einen der Dienste, die geplant sind.

NÄCHST                        LINKS        LETZTE                        VERGANGEN    EINHEIT                         AKTIVIERT
-----------------------------------------------------------------------------------------------------------------------------------------
Di 2024-01-02 15:24:52 UTC 6h links     Mo 2024-01-01 15:24:52 UTC 17h ago   systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Di 2024-01-02 20:05:29 UTC 10h links    Di 2024-01-02 09:02:47 UTC 21min ago apt-daily.timer              apt-daily.service
Di 2024-01-02 20:35:00 UTC 11h links    -                           -         snap.certbot.renew.timer     snap.certbot.renew.service

Führen Sie einen Testlauf des Prozesses durch, um zu überprüfen, ob die SSL-Erneuerung einwandfrei funktioniert.

$ sudo certbot renew --dry-run

Wenn Sie keine Fehler sehen, sind Sie bereit. Ihr Zertifikat wird automatisch erneuert.

Schritt 12 - Nginx für Grafana und InfluxDB konfigurieren

Öffnen Sie die Datei /etc/nginx/nginx.conf zur Bearbeitung.

$ sudo nano /etc/nginx/nginx.conf

Fügen Sie die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; hinzu.

server_names_hash_bucket_size 64;

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Erstellen und öffnen Sie die Datei /etc/nginx/conf.d/grafana.conf zur Bearbeitung.

$ sudo nano /etc/nginx/conf.d/grafana.conf

Fügen Sie den folgenden Code ein. Ersetzen Sie grafana.example.com durch Ihren Domainnamen.

map $http_upgrade $connection_upgrade {
  default upgrade;
  '' close;
}

server {

    listen 443 ssl reuseport;
    listen [::]:443 ssl reuseport;

    http2 on;

    server_name grafana.example.com;

    access_log  /var/log/nginx/grafana.access.log;
    error_log   /var/log/nginx/grafana.error.log;

    ssl_certificate      /etc/letsencrypt/live/grafana.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/grafana.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/grafana.example.com/chain.pem;

    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] valid=60s;
    resolver_timeout 2s;

    location / {
        proxy_set_header Host $http_host;
        proxy_pass http://localhost:3000;
    }

    location /api/live {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Host $http_host;
        proxy_pass http://localhost:3000;
    }

    location /influxdb/ {
      access_log /var/log/nginx/influx.access.log;
        error_log /var/log/nginx/influx.error.log;
        rewrite ^/influxdb$ /influxdb/ permanent;
        rewrite ^/influxdb/(.*)$ /$1 break;
        proxy_cookie_path ~*^/api /influxdb/api;
        proxy_connect_timeout 600s;
        proxy_http_version 1.1;
        proxy_pass http://localhost:8086;
        proxy_read_timeout 600s;
        proxy_send_timeout 600s;
        proxy_set_header Authorization $http_authorization;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Real-IP $remote_addr;
        sub_filter '' '';
        sub_filter 'src="/' 'src="/influxdb/';
        sub_filter 'href="/' 'href="/influxdb/';
        sub_filter 'data-basepath="' 'data-basepath="/influxdb/';
        sub_filter 'n.p="/' 'n.p="/influxdb/';
        sub_filter 'o.p="/' 'o.p="/influxdb/';
        sub_filter '/api/' '/influxdb/api/';
        sub_filter 'api/v2/query' 'influxdb/api/v2/query';
        sub_filter '/health`' '/influxdb/health`';
        sub_filter_types text/css text/javascript application/javascript application/json;
        sub_filter_once off;
    }
}
# erzwingen Sie HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name grafana.example.com;
    return 301 https://$host$request_uri;
}

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Überprüfen Sie Ihre Nginx-Konfiguration.

$ sudo nginx -t

Starten Sie den Nginx-Server neu.

$ sudo systemctl restart nginx

Telegraf für HTTPS konfigurieren

Öffnen Sie die Datei /etc/telegraf/telegraf.conf zur Bearbeitung.

$ sudo nano /etc/telegraf/telegraf.conf

Suchen Sie den Abschnitt [[outputs.influxdb_v2]] und ändern Sie den Wert der URL in https://grafana.nspeaks.com/influxdb, damit die Daten zwischen InfluxDB und Telegraf gesichert sind.

urls = ["https://grafana.example.com/influxdb"]

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Starten Sie den Telegraf-Dienst neu.

$ sudo systemctl restart telegraf

Grafana für HTTPS konfigurieren

Als nächstes müssen wir Grafana für den HTTPS-Zugriff konfigurieren. Öffnen Sie die Datei /etc/grafana/grafana.ini zur Bearbeitung.

$ sudo nano /etc/grafana/grafana.ini

Suchen Sie den Abschnitt [server] und ändern Sie die Variable domain und root_url wie folgt.

# Der öffentlich zugängliche Domainname, der verwendet wird, um grafana von einem Browser aus zuzugreifen
;domain = localhost
domain = grafana.example.com

# Umleitung zur richtigen Domain, wenn der Host-Header nicht mit der Domain übereinstimmt
# Verhindert DNS-Rückbindungsangriffe
;enforce_domain = true

# Die vollständige öffentlich zugängliche URL, die Sie im Browser verwenden, wird für Weiterleitungen und E-Mails verwendet
# Wenn Sie einen Reverse-Proxy und einen Unterpfad verwenden, geben Sie die vollständige URL an (mit Unterpfad)
;root_url = %(protocol)s://%(domain)s:%(http_port)s/
root_url = %(protocol)s://%(domain)s

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Starten Sie den Grafana-Server neu.

$ sudo systemctl restart grafana-server

Firewall-Ports für InfluxDB und Grafana schließen

Sie sollten auch die Ports von InfluxDB und Grafana schließen.

$ sudo ufw delete allow 8086
$ sudo ufw delete allow 3000

Grafana sollte unter https://grafana.example.com und die InfluxDB-Benutzeroberfläche und API sollten beide unter der URL https://grafana.example.com/influxdb zugänglich sein.

Fazit

Dies schließt das Tutorial zur Installation und Konfiguration des TIG-Stacks auf einem Debian 12-Server ab. Wenn Sie Fragen haben, posten Sie diese bitte in die Kommentare unten.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.