Geïnspireerd door Grafana ben ik eens gaan kijken wat ik nog meer wilde meten om daar een goed inzicht in te krijgen. Ik kwam al snel bij mijn Internet snelheid uit. Ik heb de informatie van de volgende link gebruikt om dit voor elkaar te krijgen. Ik ga er vanuit dat je Influx en Grafana al geïnstalleerd hebt.
Voeg eerst een nieuwe database toe aan Influx om je Internet Snelheid metingen in op te slaan. Dit doe je door de volgende commando’s:
influx -username admin -password your-password CREATE DATABASE InternetSpeed exit
Installeer hierna de speedtest-cli package:
apt-get install speedtest-cli
Creëer een python script met de volgende inhoud:
import datetime import logging import os import speedtest import time from influxdb import InfluxDBClient logging.basicConfig(level=logging.INFO) current_dir = os.path.dirname(os.path.abspath(__file__)) influxdb_host = "192.168.1.25" influxdb_port = 8086 influxdb_database = "InternetSpeed" def persists(measurement, fields, time): logging.info("{} {} {}".format(time, measurement, fields)) influx_client.write_points([{ "measurement": measurement, "time": time, "fields": fields }]) influx_client = InfluxDBClient(host=influxdb_host, port=influxdb_port, database=influxdb_database) def get_speed(): logging.info("Calculating speed ...") s = speedtest.Speedtest() s.get_best_server() s.download() s.upload() return s.results.dict() def loop(sleep): current_time = datetime.datetime.utcnow().isoformat() speed = get_speed() persists(measurement='download', fields={"value": speed['download']}, time=current_time) persists(measurement='upload', fields={"value": speed['upload']}, time=current_time) persists(measurement='ping', fields={"value": speed['ping']}, time=current_time) time.sleep(sleep) loop (1)
Je moet in bovenstaande script zelf nog je ‘influxdb_host’, ‘influxdb_port’ en ‘influxdb_database’ gegevens aanpassen naar jouw Influx situatie.
Dit script moet je regelmatig aanroepen door een cron job te creëren. Ik gebruik daarvoor het volgende commando in mijn cron job:
/usr/bin/python /home/henri/measure_internet.py & > /dev/null
(hierbij is de naam van mijn script ‘measure_internet.py’ en is dit opgeslagen in de ‘/home/henri’ directory)
Configureer in Grafana je database bij ‘Data Sources’
Tenslotte heb ik een Dasboard aangemaakt in Grafana die de gemeten waardes mooi presenteert:
Vooral de heat-map is handig om zo snel je gemiddelde download- en upload snelheden te zien.
Hi, zou je misschien de json van dit dashboard kunnen delen? Heb alles opgezet maar heb geen enkel dashboard kunnen vinden die hiervoor werkt.
Thanks!
Zie attached.
Thanks!