Ergebnis 1 bis 5 von 5

Thema: Daten speichern für Graph-Generierung

  1. #1
    Registered User
    Registriert seit
    Sep 2008
    Beiträge
    361
    Renommee
    258

    Daten speichern für Graph-Generierung

    Hallo!

    Ich würde gerne (zur Veranschaulichung) von 3000 Servern jeweils den aktuellen Ping speichern.

    Als Beispiel:
    - 3000 Server
    - alle 5 Sekunden Ping messen (in Millisekunden)
    - einen Monat lang speichern, alte Daten löschen
    - die letzten x Stunden live im Browser anzeigen (mithilfe einer Javascript-Bibliothek für Graphen und jQuery für Ajax)
    - und angenommen, dass der Pingwert auf 10er gerundet wird (um gleiche Pings eventuell optimieren zu können?)


    Welche Datenkbank würdet ihr benutzen?

    Viele Grüße,
    gruena
    Über das neue Zeitalter der Gehirne eines Menschen!
    echo 'main() { char z[] = "ping "; for(;printf(z);z[1]^=6); }' > a.c; gcc a.c -o a; ./a # 16.11.2011 02:51

  2. #2
    Member
    Registriert seit
    May 2004
    Beiträge
    1.342
    Renommee
    1023

    AW: Daten speichern für Graph-Generierung

    Allein schon die TTL klingt nach Redis, würde ich sagen.

  3. #3
    Registered User
    Registriert seit
    Oct 2007
    Beiträge
    137
    Renommee
    115

    AW: Daten speichern für Graph-Generierung

    mrtg / rrdtool mit roundrobin datenbank
    3000 server sind viel, es würde aber alle 30 sekunden reichen, weil du ja irgendwann sowieso mittel wirst.

  4. #4
    Technischer Administrator
    Registriert seit
    Sep 2002
    Beiträge
    3.729
    Renommee
    1560

    Re: Daten speichern für Graph-Generierung

    Für mich hört sich das auch nach Redis an. Aber am besten generierst du einmal Testdaten und testest dann die Performance [1].

    Den Intervall von 5 Sekunden empfinde ich auch als relativ hoch. Das sind 720 Messwerte pro Stunde, was du in einem Graphen über mehrere Stunden nicht sinnvoll darstellen kannst. Zudem wird es auch schwierig alle 5 Sekunden 3000 Pings abzusetzen und diese zuverlässig auszuwerten.

    [1] http://redis.io/topics/benchmarks

  5. #5
    Registered User
    Registriert seit
    Sep 2008
    Beiträge
    361
    Renommee
    258

    AW: Daten speichern für Graph-Generierung

    So, endlich fertig.


    Hatte mir noch mrtg angeguckt, aber damit konnte ich nicht viel anfangen.


    Mit Redis mache ich das jetzt so:
    - Alle 5 Sekunden alle Server mit IP, Port, Ping (Ping ist Beispiel, ich hab da was anderes) aus MySQL abfragen (MySQL dient sozusagen als Stateserver zwischen verschiedenen Skripten)
    - Falls Ping geändert:
    - - zur Liste hinzufügen: LPUSH Server_$ip:$port time():$newPing
    - - Gesamte Liste zu Server_$ip:$port auslesen und als fertigen String in Server_$ip:$port_cache speichern
    - In jeden Durchlauf den Expire neu setzen: EXPIRE Server_$ip:$port 60
    - Da ich z.B. nur die letzten 1000 Pings speichern will, schneide ich die alten einfach in jedem Durchlauf ab: LTRIM Server_$ip:$port 0 1000-1

    Jetzt kann ein Client ein PHP-Skript aufrufen, indem z.B. einfach nur Server_$ip:$port_cache mit JSON-Header gesendet wird. Schneller könnte es doch nicht sein.

    Mit Google Chart Tools lasse ich den Graphen anzeigen. Weil ich time() zu jedem Ping speichere, kann die Chart-Bibliothek dann auch die Abstände Zeitstempelabhängig logisch anzeigen.

    Eine Iteration über momentan 1600 Server dauerd grad mal 300ms alle 5 Sekunden (PHP-Skript in screen-Session).


    Wieviele Tage ich nun mit 1000 maximalen Listenelementen speichern kann, weiß ich nicht. Es kommt nun darauf an, wie oft sich der Ping ändert (destoweniger wie grober man rundet). Das muss ich jetzt nach ein Paar Tagen sehen und dann ggf. anpassen.

    Ziemlich perfekte Lösung, weil ich halt alle 5 Sekunden polle und damit "live" bin, aber die Listen/Caches ändern sich nur, wenn sich der Ping geändert hat.

    Danke für die Redis-Empfehlung.
    Über das neue Zeitalter der Gehirne eines Menschen!
    echo 'main() { char z[] = "ping "; for(;printf(z);z[1]^=6); }' > a.c; gcc a.c -o a; ./a # 16.11.2011 02:51

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Speichern von Daten mit MD-Player
    Von -{Asesino}- im Forum Technisches Off-Topic
    Antworten: 2
    Letzter Beitrag: 01.08.2004, 11:41
  2. Daten ans Ende der exe speichern
    Von ikamon im Forum C / C++
    Antworten: 8
    Letzter Beitrag: 13.05.2003, 11:36
  3. Erhaltene Daten speichern
    Von Lequ im Forum PHP, Perl und ASP
    Antworten: 3
    Letzter Beitrag: 03.07.2002, 14:12
  4. MySQL-Daten speichern
    Von Kowi im Forum PHP, Perl und ASP
    Antworten: 6
    Letzter Beitrag: 18.01.2002, 12:16
  5. PHP Script - Daten speichern
    Von Psycho Stone im Forum PHP, Perl und ASP
    Antworten: 2
    Letzter Beitrag: 05.01.2001, 17:17

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •