Wie Logfiles an 2 Orten speichern?

Begonnen von Thomas24568, 26 Februar 2018, 11:59:37

Vorheriges Thema - Nächstes Thema

Thomas24568

Moin!

Der Versuch, eine Log-Datei an 2 Stellen zu speichern endet mit der Fehlermeldung, das so eine Datei schon existiert. Also, meine Idee ist, neben den Logfiles die direkt im Rechner (Raspberry Pi) gespeichert werden, eine 2. Datei (jeden Logfiles, es sind inzwischen einige) auf den Server zu schreiben. Welche Möglichkeiten habe ich da? Oder wie wäre ein passender Eintrag in die Suchfunktion?

Thomas

Ralph

#1
Du könntest zusätzlich zu der normalen Log-Datei eine "selbsterfundene" Logdatei schreiben,
die - wie im folgenden Beispiel - nur einzelne Readings des Originals enthält.


sub FritzBoxLog() {
  my $zeit  = ReadingsTimestamp("FritzBox","box_ipExtern","0");
  my $state = ReadingsVal("FritzBox","state","0");
  my $ipext = ReadingsVal("FritzBox","box_ipExtern", 0);
  my $fb    = ReadingsVal("FB_Link","state",0);
  my $down  = ReadingsVal("FritzBox","box_rateDown","0");
  my $up    = ReadingsVal("FritzBox","box_rateUp","0");
  my $xled  = ReadingsVal("X_LED","state","0");
  open (DATEI, ">>/opt/fhem/log/box.log") or die $!;
  print DATEI $zeit."  IP: ".$ipext."  State: ".$state."  Speed: ".$fb."  Geladen Up: ".$up."  Down: ".$down."\n";
  close (DATEI);
  $state =~ s,[\r\n]*,,g;    # remove CR from return-string
  if (($state =~ m/500/i) && ($xled eq "on")) { system ("gammu sendsms TEXT 01meineSMSNummer -text '$hms  500 Kein Kontakt zur Fritzbox'") , fhem "set X_LED on" };
  return
}
FHEM auf RaspberryPi3 mit Geekworm USV und SignalDUINO 433MHz und HM-MOD-RPI-PCB mit 3 HM-Sec-SD-2, 5 FHT, 2 RM 100-2 Uni S, 2 HMS100, 6 CUL_WS, 6 CUL_FHTTK, 11 FS20 und 7 FS20V Spannungsüberwachungen

Beta-User

Das liest sich eher so, als ginge es nicht vorrangig darum, ein weiteres filelog-Device zu erstellen, dass dann (teilweise?) dieselben Daten aufnimmt.

Kann es sein, dass du periodisch (z.B. alle x Stunden) versuchst, eine Sicherungskopie vorhandener logs an einen entfernten Rechner zu senden und sich das OS weigert, das ohne ausdrückliche Overwrite-Anweisung einfach so zu tun, eben weil es die Datei(en) dort schon gibt?

Wenn letzteres der Fall ist, sollte das Stichwort für die SuFu "backup" lauten ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Thomas24568

@Beta-User:
Nicht ganz: Ich habe eine Menge Plots, die den Pi merklich "belasten" (es dauert ewig lange, bis die Plots gezeichnet werden). Also soll der Pi nur die Logs schreiben, aber die Auswertung will ich auf dem Mac machen - mit einer 2. FHEM-Installation. Das würde noch gehen mit einer Logdatei (auf einem Rechner). Aber um auch gleichzeitig ein Backup der DATEN (also der Logfiles) zu haben UND schneller auf die Daten zugreifen zu können sollen die Daten vom Server geholt werden (Pi: 100Mb/s, Server: 1000Mb/s).

Deswegen sollte der Pi die Logfiles ohne Zeitverzug an 2 verschiedenen Orten schreiben: Auf dem Pi-Eigenem Laufwerk (SD-Karte) und auf den Server.

@Ralph: Deine Antwort schaue ich mir später genauer an, da muß ich erst mal durchsteigen.

Th.

Beta-User

Danke für die Klarstellung.

Dann könntest du ein weiteres log-Device definieren, was immer gehen dürfte, darauf läuft im Kern m.E. auch die Lösung von Ralph raus.

In dem Fall ist es eventuell aber einfacher, entweder die logs tatsächlich periodisch komplett zu kopieren oder auf ein datenbankgestütztes logging (auf einer remote Datenbank) zu setzen. Dann bist du in der Auswertung auch freier (Stichwort graphana (?)).

EDIT: habe gesehen, es geht um ein NAS...
Aber wenn du eh' einen potenten Server immer am Laufen hast, warum ziehst du FHEM nicht gleich dahin um und quälst dich mit dem Pi?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Thomas24568

Weil es keine Anleitung gibt wie ich FHEM auf einem NAS (HP Proliant G8) unter FreeNAS 10.x zum laufen bekommen. Nach der vorhandenen allgemeinen Anleitung hat es nicht geklappt. Dazu kommt, das das NAS dann nur die 1wire Daten lesen und schreiben (1wire Busmaster) könnte, aber die 40 I/O-Kanäle, die ein Pi hat, fehlen.

Muß noch etwas arbeiten, bis später.

Th.

Wzut

Zitat von: Thomas24568 am 26 Februar 2018, 14:57:42
Nicht ganz: Ich habe eine Menge Plots, die den Pi merklich "belasten"
Da stellen sich mir automatisch zwei Fragen :
a. sind viele Plots auf einer Webseite oder schön verteilt ?
b. ist vllt. die Menge an Daten in den Files dafür verantwortlich ? Stichwort event-on-change reading , d.h. nur loggen
wenn es wirklich nötig ist und auch nur das loggen was nachher auch irgendwie gebraucht wird.

Aber anyway , wenn wirklich ein NAS irgendwo steht kannst du auch meine Lösung einsetzen :
auf dem Raspi selbst wird nichts  direkt gelogt , /opt/fhem/log ist auf der SD ein leeres Verzeichnis und gleichzeitig der Mountpoint für eine nfs Freigabe vom NAS.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Thomas24568

@Ralph: Deine Antwort von 13:59:
Ich erkenne, das du aus irgendwas Daten extrhierst, aber nicht, was das mit meiner Idee/Problem zu tun hat.

@Wzut:
Antwort zu a: "viel" ist relativ... ;-)) Ich habe - weil noch in der Erprobung - derzeit 15 Temperatursensoren im Betrieb, die ihre Daten in 4 Plots und einem Floorplan anzeigen. Die Plots sind auf einer Seite, die am Mac aufgerufen wird. Der Floorplan ist auch nur am Mac angezeigt, und beide Seiten sind ständig offen.

b: Sicher sind es viele Daten, die meisten im 10s-Rhytmus, einige nur alle 20 Minuten. [Bei einer Therme nützt mir eine 5 Minuten Abfrage gar nichts, in der Zeit hat das Teil ca. 30 mal an- und wieder ausgeschaltet. Bei den Temperaturen der Mischerbatterie (elektronisch gesteuert) gibt es noch ein Rekla-Problem, da muß ich alle paar Sekunden die Temperatur wissen.]

Event-on-* habe ich probiert und bin damit abgestürzt, dazu gibt es hier auch einen Eintrag. Da werde ich mich gerne später mit befassen.

Dein Vorschlag mit den Komplettdaten auf dem NAS ist super, aber bisher noch nicht durchführbar (weil der Zugriff noch nicht stabil läuft). Ein kleiner Nachteil ist bei deiner Lösung aber dabei: Es gibt kein Datenduplikat... (Ja, ein NAS ist sicherer als alles andere, aber eben auch nicht 100%. Außerdem wird im NAS auch mal eine HDD gewechselt (durch größere ersetzt), daher also auch nicht 100% einsatzbereit.)

Aber schreib mir doch mal wie du das genau gelöst hast, ggf. als email.

Thomas

Ralph

Ich wollte nur beispielhaft aufzeigen, wie man sich ein zweites verkürztes und kompaktes Logbuch anlegt.
FHEM auf RaspberryPi3 mit Geekworm USV und SignalDUINO 433MHz und HM-MOD-RPI-PCB mit 3 HM-Sec-SD-2, 5 FHT, 2 RM 100-2 Uni S, 2 HMS100, 6 CUL_WS, 6 CUL_FHTTK, 11 FS20 und 7 FS20V Spannungsüberwachungen