Grafana
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
- add deb https://packagecloud.io/grafana/stable/debian/ wheezy main to /etc/apt/sources.list
- apt-get install -y apt-transport-https
- curl https://packagecloud.io/gpg.key | apt-key add -
- apt-get update
- apt-get install grafana
- wget http://influxdb.s3.amazonaws.com/influxdb_0.9.5.1_amd64.deb
- dpkg -i influxdb_0.9.5.1_amd64.deb
- service influxdb start
- service grafana-server start
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