FHEM Forum

FHEM => Automatisierung => Thema gestartet von: m.zielinski am 10 Dezember 2023, 10:51:37

Titel: logfile - reagieren wenn mehr als x Zeilen pro Minute generiert werden
Beitrag von: m.zielinski am 10 Dezember 2023, 10:51:37
Ich suche bisher vergeblich nach einer Möglichkeit, z.b. einen Notify abzufeuern wen im Logfile mehr als ein Schwellenwert Zeilen pro Minute erzeugt werden.
Ich nutze das Logfile nur noch für Fehlernmeldungen - readings sind bei mir in der LogDB.
Heute morgen hat das Netatmo-Device bei mir verrückt gespielt und Fhem lahmgelegt durch 3 Logeinträge pro Sekunde (natürlich passierte im Hintergrund noch mehr um Fhem zu blockieren)

Deswegen würde ich gerne einen Alarm per Email bekommen wenn zu viele Zeilen innerhalb eines Zeitraumes geschrieben werden.

Titel: Aw: logfile - reagieren wenn mehr als x Zeilen pro Minute generiert werden
Beitrag von: rudolfkoenig am 10 Dezember 2023, 12:15:57
Man kann ein notify mit dem readLog Attribut definieren.
Leider ist ab hier "Handarbeit" gefragt...
Titel: Aw: logfile - reagieren wenn mehr als x Zeilen pro Minute generiert werden
Beitrag von: betateilchen am 10 Dezember 2023, 12:49:01
defmod logAt at +*00:01:00 {countLog(5)}

sub countLog {
  my $limit = shift;
  $limit //= 1;
  my ($err,@content) = FileRead( { ( "ForceType" => "FILE", "FileName" => InternalVal('Logfile','currentlogfile','') ) } );
  return $err if($err);
  my $count = scalar(@content);
  my $diff  = $count - ReadingsNum('Logfile','oldCount',0);
  if($diff >= $limit) {
    Debug "Alarm im Log: $diff neue Einträge innerhalb der letzten Minute";
  }
  fhem("setreading Logfile oldCount $count",1);
}

Der Code ist absichtlich sehr ausführlich gehalten, um die Idee zu verdeutlichen.
Anstatt der Debug Meldung kann man natürlich auch andere Aktionen ausführen.
Titel: Aw: logfile - reagieren wenn mehr als x Zeilen pro Minute generiert werden
Beitrag von: m.zielinski am 10 Dezember 2023, 21:36:39
Vielen Dank.

Ich hatte erst das Notify verwendet aber einmal alle 10 Minuten die Zeilenzahl abfragen erscheint mir Ressourcenschonender.