Dblog Tabelle History und Current

Begonnen von Markus., 22 Mai 2016, 18:46:25

Vorheriges Thema - Nächstes Thema

Markus.

Hallo Zusammen,

Bin gerade dabei von Filelog auf dblog umzustellen. Wenn ich die Arbeitsweise sowei verstanden habe, sollte man keine weiteren Dblog devices anlegen um mehr Tabellen zu verwenden. Beispielsweise analog zu den filelogs für jedes device eine extra Tabelle. Ergo werden ja alle devices in eine oder zwei Tabellen geloggt. Soweit so gut, bei mir wird auch fleissig die History Tabelle geschrieben.
Wofür ist denn eigentlich die Current Tabelle??

Gruss

Markus

justme1968

die idee hinter der cuttend tabelle ist/war schnell auf den letzen wert zugreifen zu können.

ich schalte es aber über das DbLogType attribt ab da es eigentlich frisst es nur performance.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Markus.

Hallo Andre,

Danke für die Info. Ich habe jetzt mal das dblogtype atrrib auf History gesetzt. Denke das ist auch default, weil das attribut nicht gesetzt war. Ist es denn korrekt das man nur eine Tabelle verwenden sollte, sprich nur ein dblog device aus Performance gründen?

Gruss

Markus

justme1968

mir fällt kein grund ein mehr als eine db zu verwenden.

es gibt irgendwo einen thread von jemandem der das macht. aber der vorteil von dblog ist ja gerade das man nur ein einziges log device hat. sonst kann man auch gleich bei filelog bleiben...

gruss
  andre

ps: der default bei nicht gesetztem attribut ist Current/History. bei sqlite sieht man das der db aber nicht an weil die current tabelle nur in memory ist.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Markus.

Achso deswegen keine Daten bei einem select in der Db auf die current tabelle...
Danke erstmal für die infos!!!


Gruss

Markus

Markus.

#5
so habe nun die Sysmon plots soweit auf DBlog umgestellt. Nut bei dem fs_root beiß ich mir die Zähne aus.
Wie bekommt man denn den Wert des Prozentanteils der Belegung aus der Db extrahiert?
den Wert "used" bekomm ich ja noch hin mit

sysmon:fs_root:::$val=~s/.*Used..([\d.]*).*/$1/eg

Irgendwie versteh ich nicht wie Daten ohne Bezeichner selektiert werden können :-(

Gruß

Markus

PS:
hier mal die Zeile aus der DB


2016-05-23 18:00:17|sysmon|SYSMON|fs_root: Total: 29077 MB, Used: 3571 MB, 13 %, Available: 24270 MB at /|fs_root|Total: 29077 MB, Used: 3571 MB, 13 %, Available: 24270 MB at /|


Markus

Kannst du bitte die plots für sysmon posten? An denen hab ich mir schon die Zähne ausgebissen...

Gruß Markus
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

Markus.

Hallo Du....

welche genau meinst Du denn? Ich habs soweit hinbekomen und glaube, es laaaaaagsam zu begreifen..:-)
Also wenn der Datensatz in der Datenbank wie folgt aussieht (Beispiel Ram):

2016-05-24 11:05:54|sysmon|SYSMON|ram: Total: 984.42 MB, Used: 282.67 MB, 28.71 %, Free: 701.75 MB

Dort hatte ich das Problem, zum Beispiel die Prozent der Speicherausnutzung in den Plot zu bekommen. Diese ist ja in dem Standard gplot file nicht drin. Das habe ich dann so gelöst
#DbLog sysmon:ram:::$val=~s/[\d.]*.[\d.]*.([\d.]*).[\d.]*/$1/eg
Und zwar wird der Datensatz in vier Teile geteilt und durch die runde Klammer wird eben der Teil aus dem Datensatz extrahiert.
Hier der Prozentwert. Bei den anderen Werten kann man ja nach dem entsprechenden Bezeichner suchen.
Z.B. Total:
#DbLog sysmon:ram:::$val=~s/^Total..([\d.]*).*/$1/eg
Da dieser ja am Anfang des Strings steht muss vor den zu suchenden Bezeichner halt "^"
Wenn der Bezeichner mitten im String steht sucht man nach *Bezeichner.
In der Hoffnung hier nicht zuviel Blödsinn zu erzählen( bin ja noch totaler Anfänger) hier mal mein Beispiel für den Gplot des Ram's.

# Created by FHEM/98_SVG.pm, 2016-05-24 11:41:59
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<L1>'
set ytics
set y2tics
set grid
set ylabel "Ram Total / Free (MB)"
set y2label "Ram Used (MB)"

#logdb sysmon:ram:::$val=~s/^Total..([\d.]*).*/$1/eg
#logdb sysmon:ram:::$val=~s/.*Used..([\d.]*).*/$1/eg
#logdb sysmon:ram:::$val=~s/.*Free..([\d.]*).*/$1/eg
#logdb sysmon:ram:::$val=~s/[\d.]*.[\d.]*.([\d.]*).[\d.]*/$1/eg

plot "<IN>" using 1:2 axes x1y1 title 'Total' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Used' ls l1 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Free' ls l2 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title '%' ls l8 lw 1 with lines


Als Label verwende ich folgendes Attribut

"Load Min: $data{min4}, Max: $data{max4}, Aktuell: $data{currval4}"




Gruß

Markus

Markus.

#8
naja so ganz hab ich es wohl doch nicht vestanden :-(
also ich versuche nun den plot für fs_root umzustellen. Komme auch an alle Werte ran nur nicht an den Prozentwert. Der Unteschied zum RAM plot ist wohl das die Werte im RAM Datensatz zwei Nachkommastellen haben. Die Werte für FS_root haben keine Nachkommastellen.
hie mal ein Auszug aus dem Datensatz.


2016-05-24 18:50:42|sysmon|SYSMON|fs_root: Total: 29077 MB, Used: 3577 MB, 13 %, Available: 24265 MB at /|fs_root|Total: 29077 MB, Used: 3577 MB, 13 %, Available: 24265 MB at /|


Die Auswertung habe ich so versucht. Für Wert 4 Wird Quatsch anzeigt :-(

# Created by FHEM/98_SVG.pm, 2016-05-24 19:17:27
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<L1>'
set ytics
set y2tics
set grid y2tics
set ylabel "Nutzung %"
set y2label "Nutzung MB"
set yrange [0:90]
set y2range [0:7500]

#logdb sysmon:fs_root:::$val=~s/^Total..([\d.]*).*/$1/eg
#logdb sysmon:fs_root:::$val=~s/.*Available..([\d.]*).*/$1/eg
#logdb sysmon:fs_root:::$val=~s/.*Used..([\d.]*).*/$1/eg
#logdb sysmon:fs_root:::$val=~s/[\d.]*.[\d.]*.([\d.]*).[\d.]*/$1/eg

plot "<IN>" using 1:2 axes x1y2 title 'wert 1' ls l0 lw 0.5 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'wert 2' ls l3 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'wert 3' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'wert 4' ls l0 lw 1 with lines


Achso und was ich auch nicht ganz verstehe ist der Datensatz selber. Warum sind alle Werte immer zweimal vohanden nach dem "at /" ?

Kann mir da einer auf die Sprünge helfen?

Gruß

Markus

abc2006

Zitat von: justme1968 am 22 Mai 2016, 19:03:45
die idee hinter der cuttend tabelle ist/war schnell auf den letzen wert zugreifen zu können.

ich schalte es aber über das DbLogType attribt ab da es eigentlich frisst es nur performance.

gruss
  andre

Hi,
ich muss hier nochmal einhaken ... Wenn ich bei mir bei DbLogType den Wert "history" einstelle, bekomme ich bei den SVG's den Fehler

Example lines for input:
No sample data due to missing table 'Current'


Ausserdem sind die Dropdowns zum Auswählen der Devices verschwunden.
Funktioniert das bei dir?

Leider habe ich bisher keine Doku zu diesem Feature gefunden. Wenns irgendwo beschrieben ist, und ich es nur nicht gefunden habe, wäre ich für einen kurzen Hinweis dankbar :)

lg
stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

marvin78

Das ist kein Fehler. Das ist lediglich eine Information und es arbeitet alles, wie es soll. Wenn man nur history verwendet, ist die Tabelle in der Regel viel zu groß, als das man sie für diese Beispielliste durchforsten kann/sollte. Deshalb funktioniert das Feature nur mit aktivierter current Tabelle.

abc2006

aaaaaaah ja ... okay. 8) Habe jetzt zurückgestellt auf current/history, dann die current-tabelle ausgekippt (Falls jemand das statement sucht: DELETE from current;, Achtung, kein Undo :-)

Jetzt siehts schon viel besser aufgeräumter aus.

Was ich noch nicht verstanden habe: die Einträge werden sowohl in die current als auch in die history geschrieben? und aus der current nach einiger Zeit wieder entfernt? und SVG liest immer und ausschließlich aus history? oder ist das mit dem :CURRENT und :HISTORY beeinflussbar ?

Danke!
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

marvin78

Wie an vielen Ecken zu lesen ist, enthält current nur den letzten Wert der zu loggenden Devices/Readings, history alle Daten.

abc2006

Hi,
an so vielen Ecken anscheinend nicht, sonst hätte ich ja was dazu gefunden.

Danke für die Auskunft, ich trags gleich mal im Wiki ein, dann stehts an zentraler Stelle.

Grüße
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

Christian72D

Was muß ich umstellen um die "No sample data due to missing table 'Current'" weg zu bekommen?