Grafana InfluxDB Query

jb_alvarado

Lt. Junior Grade
Registriert
Sep. 2015
Beiträge
492
Hallo Leute,
ich würde gerne mit Grafana aktuelle Zuschauer eines Livestreams statistisch darstellen.

Dazu logge ich mit nginx den Zugriff auf die entsprechenden *.ts Files und mit einem Parser schreibe ich mir die Daten in eine InfluxDB. Die IPs schreibe ich als HASH Wert in die DB, damit sie anonymisiert sind, ich aber einen Wert habe den ich zum Auswerten verwenden kann.

Die Einträge schauen dann in etwa so aus:

Code:
time                ip
----                --
1667220867000000000 d4f6d4c29e50f1eddec9a50c7b6fee48979b7861c6d932002427
1667220859000000000 d4f6d4c29e50f1eddec9a50c7b6fee48979b7861c6d932002427
1667220852000000000 7e465874a0dedeace8d4d46cc0805d762b9817ec449757e03b09
1667220851000000000 d4f6d4c29e50f1eddec9a50c7b6fee48979b7861c6d932002427
1667220850000000000 a1d70bb62cdaf03d43e635572a5034fe52bd96cfa1eaeac09098
1667220849000000000 7e465874a0dedeace8d4d46cc0805d762b9817ec449757e03b09
1667220848000000000 7e465874a0dedeace8d4d46cc0805d762b9817ec449757e03b09
1667220847000000000 7e465874a0dedeace8d4d46cc0805d762b9817ec449757e03b09
1667220845000000000 7e465874a0dedeace8d4d46cc0805d762b9817ec449757e03b09

Die Daten würde ich jetzt gerne so in Grafana darstellen, dass nur die aktuellen Zuschauer dargestellt werden. Da die Clientbrowser ca. alle 6 Sekunden ein neues TS File anfordern, kann man daraus schließen wie lange ein Zuschauer aktiv ist.

Mit dieser Abfrage:

Code:
SELECT count("ip") FROM "stat" WHERE $timeFilter GROUP BY time(12s) fill(null)

bekomme ich etwas angezeigt, aber mir scheint das nicht akkurat zu sein. Je nachdem welchen Wert ich bei GROUP BY eingebe, bekomme ich auch andere Werte dargestellt. Habe leider keine Erfahrung mit dieser Art von Datenbankabfragen.

Wie würdet ihr denn den Query schreiben?
 
What?


Ich kenn mich mit Grafana nicht aus, aber du möchtest doch die Anzahl eindeutiger IP adressen, also sowas wie SELECT COUNT(DISTINCT ip) ...
 
Also zunächst mal mit einer Hashfunktion anonymisierst du die IP nicht. Da die IP ja immer den gleichen Hash ergibt aber jede andere IP einen anderen eindeutigen Hash hat.

Auf Basis der IP zu gehen ist grundsätzlich eine schlechte Idee. Eventuell hängen mehrere Zuschauer hinter der selben IP. Gleicher Internetanschluss, DS-Lite, Tor Exit Node, VPN, ...

Idealerweise solltest du einfach loggen wie oft auf die einzelnen .ts Files zugegriffen wird. Wird eins 100 mal heruntergeladen hast du zu dem Zeitpunkt eben hundert Zuschauer.
 
Danke für euren Input! @schalli110 ja hast recht, das musste noch rein. @floq0r, in dem Query Builder war order by drin.

@MisC, wegen dem Hash - der Hash Algorithmus muss ja bekannt sein, um den wieder in eine IP umwandeln zu können, oder? Könnte auch am Ende was abschneiden, dann ist die IP sicher nicht mehr rekonstruierbar.

Allerdings habe ich das nicht berücksichtigt was du geschrieben hast. Da man aber bis zu einer Stunde im Stream zurück kann und Leute diese Funktion auch verwenden, hat man wohl auch nicht einen 100%igen Wert.

Kann man das Zählen der Zugriffe denn mit einem Query abbilden?
 
Zurück
Oben