Ankündigung

Einklappen
Keine Ankündigung bisher.

Diagram - RRA direkt adressieren?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MicHau
    antwortet
    Zitat von tger977 Beitrag anzeigen
    Code:
    rrdfetch?rrd="+s.src+".rrd&ds="+s.cFunc+"&start="+r.start+"&end="+r.end+"&res="+r.res
    Bei mir sieht der Aufruf beispielhaft so aus:
    Code:
    http://a.b.x.y/cgi-bin/rrdfetch?rrd=28.9999FFFAFFFF_temp.rrd&ds=AVERAGE&start=end-3day&end=now&res=300
    Zitat von tger977 Beitrag anzeigen
    Wenn dies die Stelle ist an der aus den RRD gelesen wird scheint es mir so als ob zumindest die Resolution wie auch die Start und Ende Option dort schon hinterlegt ist. Ist nun nur die Frage wie die r.start, r.end und r.res Werte sinnvoll beschrieben werden...

    Dazu habe ich mal nach den Variablen gesucht und siehe da wie vermutet hängen die alle fest an dem series Parameter des Plugins:

    Code:
    function s(e,t){var n={hour:{res:"60",start:"hour",end:"now"},
    day:{res:"300",start:"day",end:"now"},
    fullday:{res:"300",start:"day",end:"midnight+24hour"},
    week:{res:"1800",start:"week",end:"now"},
    month:{res:"21600",start:"month",end:"now"},
    year:{res:"432000",start:"year",end:"now"}},
    r=n[e.series];
    if(!r)return;
    return{start:"end-"+e.period+r.start,end:r.end,res:r.res}}
    Ja, das wird mit möglichst sinnvollen Werten vorbelegt. Sollten die Default-Werte geändert werden?

    Zitat von tger977 Beitrag anzeigen
    Vorschlag/Idee meinerseits wäre nun:
    Könnte man eine Einfache Variante wie heute über den series Parameter (der dann wie oben feste, sinnvolle Werte enthält) behalten und im complex Modus der CV ggf. anstatt des series Parameters die drei Parameter Start, Ende und Resolution einführen?
    Das wäre sicherlich machbar, aber bevor das gemacht wird, wäre es sinnvoll, erstmal auf dem Wiregate auszuprobieren, ob das auch die gewünschte Wirkung erreichen würde. Der Aufruf der CometVisu wird nämlich serverseitig durch die Datei /usr/lib/cgi-bin/rrdfetch verarbeitet. Diese sieht so aus:
    Code:
    #!/bin/sh
    #echo Content-Type: text/plain
    echo Content-Type: application/json
    echo Content-Encoding: gzip
    echo
    
    #rrdtool fetch /var/www/rrd/Luftfeuchte_Bad_knx5-2-79.rrd AVERAGE -s-24h
    RRD=`echo "$QUERY_STRING" | sed -n 's/^.*rrd=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
    DS=`echo "$QUERY_STRING" | sed -n 's/^.*ds=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
    START=`echo "$QUERY_STRING" | sed -n 's/^.*start=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
    END=`echo "$QUERY_STRING" | sed -n 's/^.*end=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
    RES=`echo "$QUERY_STRING" | sed -n 's/^.*res=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
    
    #FIXME: check path traversal
    
    rrdtool fetchj /var/www/rrd/$RRD $DS -s$START -e$END -r$RES | gzip -c
    Die letzte Zeile stellt den tatsächlichen Aufruf dar, den du auch in der Konsole aufrufen kannst. Wenn du hier als Parameter deine eigenen Werte verwendest und dann das gewünschte Ergebnis bekommst, wissen wir, dass es funktioniert und könnten es dann einbauen. Der Aufruf liefert ein JSON-Objekt zurück.

    Zitat von tger977 Beitrag anzeigen
    P.S. Warum ist die structure_plugin.js eigentlich als eine einzige Codezeile ohne Zeilenumbruch? Ich nutze zur Anzeige Notepad++. Kann man die Datei irgendwie besser lesbar aufmachen?
    Du verwendest die Release-Version der CometVisu. Für die wird, um Bandbreite zu sparen und einen schnelleren Aufruf zu erreichen, der JavaScript Code zusammengepackt, d.h. unnötige Leerstellen und Zeilenumbrüche entfernt, Variablen mit kurzem Namen versehen, etc.

    Wenn du die Entwicklerversion verwendest (siehe CometVisu/HowTo install the development version on the WireGate - Open Automation), siehtst den vollständigen Quelltext.

    Einen Kommentar schreiben:


  • tger977
    antwortet
    da es mich doch sehr interessiert habe ich mal im plugins Ordner gestöbert. In der structure_plugin.js finde ich offensichtlich einen rrdfetch Aufruf:

    Code:
    rrdfetch?rrd="+s.src+".rrd&ds="+s.cFunc+"&start="+r.start+"&end="+r.end+"&res="+r.res
    Wenn dies die Stelle ist an der aus den RRD gelesen wird scheint es mir so als ob zumindest die Resolution wie auch die Start und Ende Option dort schon hinterlegt ist. Ist nun nur die Frage wie die r.start, r.end und r.res Werte sinnvoll beschrieben werden...

    Dazu habe ich mal nach den Variablen gesucht und siehe da wie vermutet hängen die alle fest an dem series Parameter des Plugins:

    Code:
    function s(e,t){var n={hour:{res:"60",start:"hour",end:"now"},
    day:{res:"300",start:"day",end:"now"},
    fullday:{res:"300",start:"day",end:"midnight+24hour"},
    week:{res:"1800",start:"week",end:"now"},
    month:{res:"21600",start:"month",end:"now"},
    year:{res:"432000",start:"year",end:"now"}},
    r=n[e.series];
    if(!r)return;
    return{start:"end-"+e.period+r.start,end:r.end,res:r.res}}
    Vorschlag/Idee meinerseits wäre nun:
    Könnte man eine Einfache Variante wie heute über den series Parameter (der dann wie oben feste, sinnvolle Werte enthält) behalten und im complex Modus der CV ggf. anstatt des series Parameters die drei Parameter Start, Ende und Resolution einführen?

    Bisher habe ich noch keine Ahnung wo/wie Parameter für ein Plugin angelegt werden und ob das mit der Idee über den Complex Modus überhaupt machbar ist.

    P.S. Warum ist die structure_plugin.js eigentlich als eine einzige Codezeile ohne Zeilenumbruch? Ich nutze zur Anzeige Notepad++. Kann man die Datei irgendwie besser lesbar aufmachen?

    Einen Kommentar schreiben:


  • tger977
    antwortet
    Zitat von MicHau Beitrag anzeigen
    Eventuell kannst du ja mal auf der Konsole des Wiregate ausprobieren, wie das aussehen müsste. Dann könnte man über neue Parameter im Diagramm-Plugin nachdenken.
    das kann ich AFAIK auch nicht im wiregate ausprobieren, da auch dort ein resolution Parameter fehlt. Wenn ich über Start/Ende gehe macht das wiregate die Auflösung immer maximal, wie das Diagram plugin auch. Der einzige Vorteil vom Wiregate ist daß man einen flexiblen Beginn und Ende eingeben kann, das Plugin scheint sich das selbst zu definieren über day, week, month, year,... Das nützt aber nichts wenn ich eine gröbere Auflösung haben möchte... (z.B. die Woche mit Tageswerten anstatt von 15min Werten)

    Ideal wäre für mich wenn man dem Diagram plugin begin, end und resolution als Parameter übergeben könnte...

    Einen Kommentar schreiben:


  • tger977
    antwortet
    genau nach diesem resolution parameter in dem rrdfetch suche ich im Diagrammplugin:

    --resolution|-r resolution (default is the highest resolution)

    Im Moment scheint der default mit highest resolution zu greifen. Geht das Diagram Plugin über den rrdfetch Befehl? Dann sollte es doch möglich sein das entsprechend zu ergänzen im Plugin. Hab nur keine Ahnung von JavaScript und daher wird es für mich eher unmöglich das selbst ohne Hilfe einzubauen. Wenn mir aber jemand einen Hinweis gibt wo und in welcher Datei man sich das mal ansehen muß könnte ich mich vielleicht reinarbeiten.

    Großes Kino wäre wenn man auch noch start und end als Parameter einführen könnte! Das sollte wenn das eine Funktioniert nur noch eine Fleißarbeit sein und wären dann ggf. Funktionalitäten die man unter complex in der CV verstecken könnte.

    Gruß
    Andi

    Einen Kommentar schreiben:


  • MicHau
    antwortet
    Hier (RRDtool - rrdfetch) steht im Abschnitt Resolution Internal, dass das RRA automatisch aufgrund der Parameter ausgewählt wird.

    Könnte man das darüber steuern, dass man die Start- und End-Zeit irgendwie beeinflusst? Eventuell kannst du ja mal auf der Konsole des Wiregate ausprobieren, wie das aussehen müsste. Dann könnte man über neue Parameter im Diagramm-Plugin nachdenken.

    Einen Kommentar schreiben:


  • MicHau
    antwortet
    Ok, vergiss es, ich hätte den Text mal ganz lesen sollen. Sorry!

    Einen Kommentar schreiben:


  • MicHau
    antwortet
    Konnte man das nicht über das Attribut datasourceIndex lösen? Ich meine, mich zu erinnern, dass das dafür eingeführt wurde.

    Im Editor-Hilfetext steht:
    HTML-Code:
    If  there are multiple datasources in the RRD file this index defines which  one to show. Use "rrdtool info" to find the correct index.

    Einen Kommentar schreiben:


  • Chris M.
    antwortet
    Java verwenden wir hier auch (ganz bewusst!) nicht!

    Aber wenn Du JavaScript (aus historischen Gründen eine reiner Marketing-Name, eigentlich heißt die Programmiersprache ECMAScript...) kannst, hast Du alle Möglichkeiten offen

    Einen Kommentar schreiben:


  • tger977
    antwortet
    mit den RRD und RRA hab ich mich nun ausgiebig beschäftigt.

    Java ist aber definitiv nicht meine Welt...

    Einen Kommentar schreiben:


  • swiss
    antwortet
    Wenn du dich aber mit RRA's und Java auskennst kannst du versuchen das diagram Widget um diese Funktion zu erweitern Ich kann leider da nicht helfen da ich mich mit Java und den internen Strukturen von RRD's überhaubt nicht auskenne.

    Einen Kommentar schreiben:


  • tger977
    antwortet
    Hallo Patrik,

    danke für die schnelle Antwort. Ist schade...

    Gruß
    Andi

    Einen Kommentar schreiben:


  • swiss
    antwortet
    Hallo Andi

    Das ist bis jetzt leider nicht implementiert da einfach der Bedarf nie bestanden hat. Das Wiregate als Referenzplatform erzeugt für jeden Sensor ein eigenes RRD... Von daher ist dies zur Zeit AFAIK nicht direkt im Diagram Widget möglich.

    Einen Kommentar schreiben:


  • tger977
    hat ein Thema erstellt Diagram - RRA direkt adressieren?.

    Diagram - RRA direkt adressieren?

    Hallo,

    ich habe in meinen RRD's verschiedene RRA angelegt mit unterschiedlicher Auflösung (15min, 1h, 24h, 7Tage, ...). Ich suche nun nach einer Möglichkeit mit dem Diagram Plugin direkt diese RRA anzuzeigen bzw. die Diagramme mit einer entsprechenden Auflösung zu erzwingen.

    Beispiel: Ich möchte in der week Darstellung nicht die 15min Auflösung sondern die Auflösung mit 24h (sprich 7 Tageswerte). Bisher zeigt mir das Plugin aber immer die 15min Werte.

    Geht das? Ich finde zu RRA hier im Forum nichts und auch auf der Cometvisu.org Seite finde ich dazu bisher nichts. Das einzige was anscheinend geht ist verschiedene DS aufzurufen, da ich aber alles auf Basis eines DS mit verschiedenen RRA angelegt habe geht das für die Vergangenheit nicht mehr und ich müsste neue RRD's anlegen.

    Gruß
    Andi
Lädt...
X