Grafana

Aus Wiki CCC Göttingen
Zur Navigation springen Zur Suche springen

Grafana + InfluxDB

Im Gegensatz zu dem ELK Stack ist die Kombination von Grafana und InfluxDB sehr viel leichtgewichtiger und fühlt sich auch geschmeidiger an.

Grafana ist zu erreichen unter http://37.120.160.199:3000

Logbuch

Installation

Konfiguration

  • Auf der Grafanaoberfläche einloggen, Port 3000, user:admin, pw: admin
    • Admin pw ändern
  • mit 'influx' die influxDB Konsole öffnen
  • DB anlegen
  • admin anlegen, user anlegen, pw festlegen
  • /etc/influxdb/influxdb.conf editieren
    • unter http auth-enable auf true setzen
    • service influxDB restart
  • im Grafana die influxDB als datasource anlegen
  • die Clients mir write only in die influxDB schreiben lassen
  • Dashboads im Grafana erstellen

Add Data

Super easy to add data with python:

   from influxdb import InfluxDBClient
   def main():
       host = '37.120.160.199'
       port = 8086
       user = 'client'
       password = *********
       dbname = 'ffgoe'
       json_body = [
           {
               "measurement": "test",
               "tags": {
                   "host": "vpnTest"
               },
               "fields": {
                   "value": 7.
               }
           }
       ]
       client = InfluxDBClient(host, port, user, password, dbname)
       client.write_points(json_body)

clients

apt-get install python-pip
pip install influxdb

edit ffgoevis, den hostnamen anpassen

cp ffgoevis /usr/local/bin/.
crontab -e
*/5 * * * * /usr/local/bin/ffgoe_vis

TODO: ansible

Daten in die InfluxDB schieben

Auf den Supernodes liegen in

/usr/local/bin/

die Pythonscripte zum einpflegen der Daten. Das

send_to_influx

Script kann verwendet werden um Daten an die InfluxDB zu schicken.

send_to_influx -h

zeigt die flags.

Eine Beispielanwendung ist das Script

influx_traffic

Wenn der KEY == test ist, kann das Ergebnis im Grafana im TestBoard angesehen werden.

VALUE sollte ein numerischer Wert sein.

Als HOST den Namen des Supernodes angeben "VPN1-3".

viele Daten auf einmal in die InfluxDB schieben

Dei Funktion

client.write_points()

kann auch problemlos sehr viele Daten auf einmal zur Datenbank schicken. Das wird aktuell nur auf VPN1 gemacht, um die Daten der Nodes zu übertragen. Datenquelle ist die nodes.json, die auch der Meshviewer nutzt. Das entsprechende Script

/usr/local/bin/influx_nodestats

wird dazu direkt und ohne zusätzliche Argumente ausgeführt