Nach einer frischen Installation von InfluxDB, egal ob auf einem dedizierten System oder nicht, frägt man sich vielleicht wie leistungsfähig das Graphing Setup nun wirklich ist oder wie viel es denn eigentlich verträgt?
Diese Fragen lassen sich mit influx-stress beantworten. Das in Golang geschriebene Helferchen ist über GitHub erhältlich und feuert beliebig viele einstellbare Metriken an InfluxDB. Dabei spielt es keine Rolle ob es lokal oder remote von einem anderen System aus aufgerufen wird.
Installation
Nachdem das Repository heruntergeladen wurde, wird das Ganze mit “go build” kompiliert:
# git clone https://github.com/influxdata/influx-stress.git # cd influx-stress/cmd/influx-stress/ # go build -o /usr/local/bin/influx-stress
Vorbereitungen
Das Tool unterstützt derzeit nur die Authentifizierung für v1, allerdings kann man auf diese bei Bedarf auch komplett verzichten. Mit InfluxDB OSS 2.x kann dafür die “InfluxDB 1.x compatibility API” benutzt werden. Außerdem empfiehlt es sich für die Tests ein eigenes Bucket anzulegen um es später in einem Rutsch wieder zu löschen oder um gleich eine passende Retention Policy zu definieren.
# influx bucket create -n stress # influx bucket list # influx v1 auth create --username stress --password ****** --write-bucket f596604f968324ff # influx v1 dbrp create --bucket-id f596604f968324ff --db stress --rp infinite
Let’s go!
Sind die Vorbereitungen gemacht, kann es losgehen. Mit “-f” läuft die Abgabe der Metriken so schnell wie möglich (fast as possible). Ich würde empfehlen zumindest noch mit “-r” (runtime) die Laufzeit einzuschränken, andernfalls würde es endlos laufen. Durch Eingabe von “–host” definiert man den Remotehost (Standard: “http://localhost:8086”).
# /usr/local/bin/influx-stress insert -f -r 1m --user stress --passs ****** --db stress
Eine beispielhafte Serie (für Icinga) könnte so aussehen: (Standard: “ctr,some=tag n=0i”)
# /usr/local/bin/influx-stress insert -r 1m ping4,hostname=agent.example.com,service=ping4,metric=rta crit=0.200000,min=0,unit="seconds",value=0.200000,warn=0.100000 --user stress --passs ****** --db stress
Nach erfolgtem Lauf bekommt man sowohl den Durchsatz (Throughput) als auch die geschriebenen Punkte (Points Written) angezeigt. Außerdem werden die Standardeinstellungen für die nicht definierten Parameter ausgegeben, die sich natürlich aber auch noch abändern lassen.
Using batch size of 10000 line(s) Spreading writes across 100000 series Output is unthrottled Using 20 concurrent writer(s) Running until ~18446744073709551615 points sent or until ~1m0s has elapsed Write Throughput: 212335 Points Written: 13100000
Wer mehr zum Thema InfluxDB erfahren möchte, dem kann ich neben unseren üblichen Dienstleistungen auch unser InfluxDB & Grafana Training wärmstens ans Herz legen.