Monitoring mit Telegraf, InfluxDB und Grafana

Bin immer wieder von den Grafana Dashboards begeistert. Sehen toll aus und sind für eine Langzeitüberwachung und Monitoring extrem nützlich.
Muss ich in meinem Homelab jetzt auch mal installieren um damit etwas rumzuspielen und Erfahrung zu sammeln. (Server OS ist Debian 10.)

30.08.2020 - Anleitung aktualisiert. (Telegraf 1.15.2, InfluxDB 1.8.2, Grafana 7.1.5)


Die Anleitung ist nicht mehr aktuell! Hier ist eine gute Anleitung von HowtoForge (14.01.2024):

https://www.howtoforge.de/anleitung/so-installierst-du-den-tig-stack-telegraf-influxdb-und-grafana-unter-debian-12/

Der TIG-Stack besteht aus diesen drei Komponenten:

  • Telegraf – Agent für die Erfassung und Sammlung von Messdaten. (sammelt)
  • InfluxDB – Performante Zeitreihendatenbank. (speichert)
  • Grafana – Datenvisualisierung für Zeitreihenanalyse. (visualisiert)

InfluxDB installieren

Die aktuelle InfluxDB Version hier herunterladen und installieren.

wget https://dl.influxdata.com/influxdb/releases/influxdb_1.8.2_amd64.deb
dpkg -i influxdb_1.8.2_amd64.deb

Den Service automatisch starten lassen.

systemctl daemon-reload
systemctl enable influxdb
systemctl start influxdb

Konfigurationsdatei: /etc/influxdb/influxdb.conf (keine Änderungen, alles auf default)

Telegraf installieren

Die aktuelle Telegraf Version hier herunterladen und installieren.

wget https://dl.influxdata.com/telegraf/releases/telegraf_1.15.2-1_amd64.deb
dpkg -i telegraf_1.15.2-1_amd64.deb

Den Service automatisch starten lassen.

systemctl daemon-reload
systemctl enable telegraf
systemctl start telegraf

Konfigurationsdatei: /etc/telegraf/telegraf.conf (keine Änderungen, alles auf default)

Telegraf erstellt nach dem starten automatisch seine InfluxDB Datenbank und befüllt diese auch schon mit gesammelten Daten des eigenen Servers.

root@tig:~# influx
Connected to http://localhost:8086 version 1.8.2
InfluxDB shell version: 1.8.2
Enter an InfluxQL query

# Datenbanken anzeigen
> show databases
name: databases
name
----
_internal
telegraf

# Datenbank wechseln
> use telegraf
Using database telegraf

# Messungen anzeigen
> show measurements
name: measurements
name
----
cpu
disk
kernel
mem
processes
swap
system

# einfache query
> select * from system limit 5
name: system
time                host load1 load15 load5 n_cpus n_users uptime uptime_format
----                ---- ----- ------ ----- ------ ------- ------ -------------
1559053420000000000 tig  0.52  0.63   0.68  1      1       929193 10 days, 18:06
1559053430000000000 tig  0.74  0.65   0.72  1      1       929203 10 days, 18:06
1559053440000000000 tig  0.62  0.64   0.7   1      1       929213 10 days, 18:06
1559053450000000000 tig  0.57  0.63   0.69  1      1       929223 10 days, 18:07
1559053460000000000 tig  0.48  0.63   0.66  1      1       929233 10 days, 18:07

Passt, Daten landen in InfluxDB.

Grafana installieren

Die aktuelle Grafana Version hier herunterladen und installieren.

apt-get install -y adduser libfontconfig1
wget https://dl.grafana.com/oss/release/grafana_7.1.5_amd64.deb
dpkg -i grafana_7.1.5_amd64.deb

Den Service automatisch starten lassen.

systemctl daemon-reload
systemctl enable grafana-server
systemctl start grafana-server

Konfigurationsdatei: /etc/grafana/grafana.ini (keine Änderungen, alles auf default)

Der Grafana Webserver ist er über Port 3000 erreichbar. http://<IP>:3000 (default user und password: admin)

Grafana Data Source erstellen

Data Sources → Add data source → Type: InfluxDB → Database: telegraf

Grafana Dashboard erstellen

Dashboards → new Dashboard → Add Query → Query: Telegraf

Die Basis des TIG Stacks ist fertig. Jetzt kann ausprobiert und rumgespielt werden! ;)

Sonstiges

Grafana Play – Demoserver um mal zu sehen was alles mit Grafana möglich ist.
Grafana Dashboards – Fertige Dashboards für die verschiedensten Einsatzzwecke und Anwendungen.
Telegraf Input Plugins – Was von Telegraf alles über die inputs gesammelt werden kann.

8 Gedanken zu „Monitoring mit Telegraf, InfluxDB und Grafana“

  1. Es gibt zwar eine Ausgabe in der Datenbank mit z.B. select * from system limit 5
    Allerdings kommen leider im Grafana diese Daten nicht an. Fehlen da Username und Passwort für den Telegraf Datenbank User?

    Wi

    Antworten
    • Das kommt auf _dein_ Setup an, kann ich dir nicht sagen.
      Beim anlegen einer neuen Data Source und einem Save & Test, siehst du ja ob die Verbindung ok ist.

      Dann legst du ein neues Dashboard auf Basis der neuen Data Source an und erstellst dir deine Abfragen.
      Oder nimmst einfach ein fertiges System-Dashboard von Grafana.

      Antworten
  2. Hallo und vielen Dank für die übersichtliche Ausarbeitung!

    Ich habe ein Frage zu Telegraf:
    Ich sende einige Daten über MQTT über eine SPS. Es wird topic1/Msg1; topic2/Msg2; … nacheinander gesandt. Dadurch haben die Daten nicht alle den gleichen Timestamp.
    Will ich jetzt einen Graphen z.B. Msg1 (Y-Achse) über Msg2 (X-Achse) darstellen ist das in Grafana eher schwierig bis unmöglich, da die Daten unterschiedliche Timestamps haben.

    Ist es in Telegraf möglich die Daten in ein Batch zusammen zu fassen und diese mit einem Timestamp in InfluxDB zu schreiben? Gibt es andere Möglichkeiten das zu lösen?

    Viele Grüße
    Stefan

    Antworten
  3. Hallo,
    leider scheitert das Starten von Telegraf (telegraf_1.29.5-1_amd64.deb) mit folgendem Fehler:

    Job for telegraf.service failed because the control process exited with error code.
    See “systemctl status telegraf.service” and “journalctl -xeu telegraf.service” for details.

    Kannst du helfen?

    Antworten
    • Da hat sich wohl einiges geändert.

      Damit der Telegraf Service startet, in der /etc/telegraf/telegraf.conf:

      ###############################################################################
      # OUTPUT PLUGINS #
      ###############################################################################

      # # Configuration for sending metrics to InfluxDB 2.0
      [[outputs.influxdb_v2]]
      # ## The URLs of the InfluxDB cluster nodes.
      # ##
      # ## Multiple URLs can be specified for a single cluster, only ONE of the
      # ## urls will be written to each interval.
      # ## ex: urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"]
      urls = ["http://127.0.0.1:8086"]

      Die InfluxDB muss aber noch weiter konfiguriert werden.

      Antworten
      • Danke das hat schon mal weitergeholfen.
        Ich versuche die syslogs an Telegraf weiterzuleiten.
        Alle Dienste (telegraf, influxdb und grafana starten sauber und werfen keinen Fehler.

        Bei der telegraf.con hab ich noch aktiviert/ergänzt:

        [[inputs.syslog]]
        server = “tcp://:6514”

        Die rsyslog.conf habe ich entsprechend konfiguriert:


        $ActionQueueType LinkedList
        $ActionQueueFileName srvrfwd
        $ActionResumeRetryCount -1
        $ActionQueueSaveOnShutdown on
        $ModLoad imudp #loads the udp module
        $UDPServerAddress localhost
        $UDPServerRun 514
        *.* @@(o)127.0.0.1:6514;RSYSLOG_SyslogProtocol23Format

        In Influx ist ein Telegraf Bucket angelegt, in dem auch Syslog und die verschiedenen Felder (facility_code, message etc.) vorhanden sind. Es scheint aber so dass keine Daten hinzugefügt werden. Hast du eine solche Konfiguration schon mal gemacht?

        Antworten

Schreibe einen Kommentar