[Modul] LogAnalyzer - Auswertung der Symcon Logs

Hallo,

da ich auch immer wieder interessiert bin schnell ins Log zu schauen ohne erst das Backend öffnen zu müssen habe ich eine Modul für die Tile View gebaut wo man die Log Datei schnell einsehen und auswerten kann. Wer Interesse hat, kann gerne davon Gebrauch nehmen.

Im Store zu finden unter genauer Eingabe von “LogAnalyzer” im Suchfeld.

Ansonsten unter Github:

LogAnalyzer

Das Modul LogAnalyzer ermöglicht die Analyse und Filterung von IP-Symcon Logdateien direkt im WebFront.
Logeinträge können gefiltert, durchsucht und seitenweise geladen werden. Dabei stehen verschiedene Betriebsmodi zur Verfügung.

Hinweis: Dieses Modul ist ausschließlich für die neue Kachelansicht (Tile View) von IP-Symcon entwickelt.
Die klassische WebFront-Ansicht wird nicht unterstützt.


Inhaltsverzeichnis

  1. Funktionsumfang

  2. Voraussetzungen

  3. Software-Installation

  4. Einrichten der Instanzen in Symcon

  5. Statusvariablen und Profile

  6. Visualisierung

  7. PHP-Befehlsreferenz

  8. Screenshots


1. Funktionsumfang

  • Anzeige von IP-Symcon Logdateien in der Kachelvisualisierung

  • Seitenweise Darstellung großer Logdateien

  • Filterung nach:

    • Objekt-ID

    • Meldungstyp inklusive dynamischer Trefferanzahl

    • Sender inklusive dynamischer Trefferanzahl

    • Freitext (Meldung)

  • Dynamische Filterlisten basierend auf Logdaten

  • Navigation durch Logseiten (ältere / neuere Einträge)

  • Anzeige von Trefferbereich und Gesamtmenge

  • Lade- und Statusindikator während der Verarbeitung

  • Umschaltbares Theme (Dark / Light)

  • Umschaltbarer kompakter Darstellungsmodus

  • Auswahl verschiedener Betriebsmodi zur Performance-Optimierung

  • Auswahl der Logdatei direkt in der Tile

  • CSV-Export im Ultra-Modus

  • Temporäre Downloadlinks für CSV-Exporte

  • Automatische Bereinigung abgelaufener Exportdateien

Betriebsmodi

Das Modul stellt drei Betriebsmodi zur Verfügung:

Standard

  • Reine PHP-Verarbeitung

  • Maximale Kompatibilität

  • Geeignet für kleinere Logdateien

System

  • Nutzung von Systemwerkzeugen

  • Unter Unix/Linux werden native Werkzeuge wie grep und awk verwendet

  • Unter Windows wird PowerShell gezielt als plattformspezifischer Fallback verwendet

  • Höhere Performance bei großen Logdateien

Ultra

  • Nutzung eines externen Ultra CLI Tools

  • Höchste Performance

  • Unterstützt:

    • schnelle Seitenabfragen

    • Trefferzählung

    • Filtermetadaten

    • CSV-Export

  • Erfordert ein installiertes Ultra CLI Tool


CSV-Export (Ultra-Modus)

Im Ultra-Modus stehen Exportfunktionen zur Verfügung:

  • Gesamtes Filterergebnis exportieren

  • Aktuellen Seitenbereich exportieren

Eigenschaften:

  • Export erfolgt über Ultra CLI

  • Datei wird temporär gespeichert

  • Download erfolgt über signierten Token-Link

  • Mehrere Exporte gleichzeitig möglich

  • Automatische TTL-basierte Bereinigung

Ultra CLI Tool

Der Ultra-Modus verwendet optional das externe CLI Tool LogAnalyzerUltra:

https://github.com/BugForgeNerd/LogAnalyzerUltra

Das Tool wurde speziell für dieses Modul entwickelt und dient ausschließlich der performanten Analyse großer IP-Symcon Logdateien. Es wird nur verwendet, wenn der Ultra-Modus aktiv ist und das CLI Tool im Backend konfiguriert wurde. Ohne dieses Tool kann das Modul weiterhin im Standard- oder Systemmodus verwendet werden.

Im Ultra-Modus können Index- und Cache-Dateien als Sidecar-Dateien zur jeweiligen Logdatei erzeugt werden. Diese Dateien dienen ausschließlich der Beschleunigung der Analyse und werden nicht zur allgemeinen Manipulation anderer Systembereiche verwendet.


Dateizugriff

Das Modul liest ausschließlich IP-Symcon Logdateien aus dem von IPS_GetLogDir() gelieferten Logverzeichnis. Frei wählbare externe Dateipfade werden nicht verarbeitet.

Der Zugriff auf lokale Dateien ist Bestandteil der Kernfunktion des Moduls, da Logdateien analysiert, gefiltert und optional exportiert werden. Dateioperationen beschränken sich auf die Logdateien, temporäre Exportdateien sowie im Ultra-Modus auf zugehörige Index- und Cache-Dateien.

Sicherheit (Download-Hook)

Der CSV-Download erfolgt über einen internen WebHook:

/hook/loganalyzer/<InstanceID>/download?token=<token>

Sicherheitsmechanismen:

  • Zufälliger Token pro Export

  • Token-Formatprüfung

  • Serverseitige Token-Validierung

  • Kein Zugriff auf beliebige Dateien möglich

  • Keine Ausführung von Befehlen über URL

  • Zugriff nur auf intern registrierte Exportdateien

  • Automatische TTL-basierte Löschung

  • Kein Directory Traversal möglich

Der Hook ist somit auch bei aktivem Connect-Dienst sicher nutzbar.


Unterstützte Betriebssysteme

Getestete Systeme:

  • Linux Debian 13

  • Windows 11

  • Docker (Debian basierend)

  • Tinker Board R2.0 mit ARM32

Weitere Systeme sollten grundsätzlich funktionieren, sind jedoch nicht getestet:

  • macOS

  • NAS-Systeme

  • andere Linux Distributionen


2. Voraussetzungen


3. Software-Installation

  • Über den Module Store das Modul LogAnalyzer installieren

  • Alternativ über das Module Control eine entsprechende Repository-URL hinzufügen


4. Einrichten der Instanzen in Symcon

Unter „Instanz hinzufügen“ kann das Modul LogAnalyzer über den Schnellfilter gefunden und hinzugefügt werden.

Weitere Informationen:
https://www.symcon.de/service/dokumentation/konzepte/instanzen/#Instanz_hinzufügen


Konfigurationsseite:

Die meisten Einstellungen erfolgen direkt in der Tile-Visualisierung.
Für den Ultra-Modus muss zusätzlich der Pfad zur Ultra CLI im Backend hinterlegt werden.

Der Ultra-Modus ist optional. Ist das externe CLI Tool nicht vorhanden oder nicht verwendbar, bleibt das Modul weiterhin funktionsfähig und kann über die internen Modi verwendet werden.


5. Statusvariablen und Profile

Dieses Modul legt keine eigenen Statusvariablen oder Profile an.

Die gesamte Darstellung erfolgt direkt über die Visualisierung.


6. Visualisierung

Die Visualisierung stellt eine interaktive Oberfläche zur Analyse der Logdaten bereit.

Funktionen

Filterbereich

  • Logdatei-Auswahl

  • Zeilen pro Seite

  • Objekt-ID Filter

  • Meldungstyp (Multi-Select mit Trefferanzahl je Typ)

  • Sender (Multi-Select mit Trefferanzahl je Sender)

  • Freitextsuche

Bedienelemente

  • Filter anwenden

  • Aktualisieren

  • Navigation zu älteren / neueren Einträgen

  • Theme-Auswahl (Dark / Light)

  • Kompaktmodus

  • Auswahl des Betriebsmodus (Standard / System / Ultra)

  • CSV Export (Ultra)

Statusanzeige

  • Aktuelle Datei

  • Dateigröße

  • Trefferbereich

  • Gesamtanzahl Treffer

  • Ladezeit Tabelle

  • Ladezeit Filter

  • Zeitstempel der Daten

Tabelle

  • Zeitstempel

  • Objekt-ID

  • Meldungstyp

  • Sender

  • Meldung


7. PHP-Befehlsreferenz

Dieses Modul stellt keine öffentlichen PHP-Funktionen zur direkten Verwendung bereit.

Die Kommunikation erfolgt ausschließlich über die interne Visualisierung (RequestAction).


8. Screenshots

WebFront Ansicht

Ansicht im Webfront der neuen Kacheloberfläche - hier DarkMode:

Konfiguration

Ansicht im Webfront der neuen Kacheloberfläche - hier LightMode:

Konfiguration


Konfigurationsformular (Backend)

Ansicht im Konfigurationsformular des Moduls:

Konfiguration


Hinweise

  • Große Logdateien werden seitenweise geladen

  • Ultra-Modus benötigt das externe CLI Tool LogAnalyzerUltra

  • Ohne Ultra CLI bleibt das Modul im Standard- und Systemmodus nutzbar

  • CSV-Export nur im Ultra-Modus verfügbar

  • Exportdateien werden automatisch gelöscht

  • Verhalten kann je nach Plattform variieren

6 „Gefällt mir“

Super Idee und Modul.

Leider obwohl 8.1 läuft und das log im Standardordner leigt bleibt die Visu leer.

Komisch auch die Warnung:

Idee?

danke+lg hagi

Hab das Modul mal installiert.

folgender Fehler taucht auf:

Hallo hagi01, die Warnung über dem Pfad ist nur eine Info und hat keine Auswirkung auf den Ablauf. Da ist ein Bug, den ich in der nächsten Version korrigiere. Warum die Visu leer bleibt beschäftigt mich mehr. Hast du in der Visu direkt das Modul eingebunden oder einen Link auf das Modul reingelegt? Welches Betriebssystem?

Hallo power1625, offensichtlich ist der RAM voll. Wie groß ist die Logdatei? Welches Betriebssystem und welcher Unterbau/Gerät, Version IPS? Da werde ich wohl noch etwas nachhärten müssen. Wenn die Dateien zu groß sind, dann kann ich die wohl nicht voll in den Speicher laden.

Hallo Lan

Symcon 9.0, Raspberry Pi (arm64), 05.03.2026, b9a34e92f86a

Holla die Waldfee, du hast ja Logs zwischen26 und teils bis knapp an die 100MB. Schau mal in die Spezialschalter. Da ist mit 9.0 zwischenzeitlich eingeführt worden bestimmtes Logging im Standard abzuschalten 8wird nur nicht bei Update automatisch übernommen). Ich glaub unter anderen “ScriptWatch”. Da wird viel unnötiges Zeug geloggt. In meinem Modul werde ich mal schauen, wie ich mit solchen Logs umgehen kann - ohne alles in den Arbeitsspeicher zu laden.

Ich habe mal den SpriptWatch und VariableWatch deaktiviert, wusste gar nicht das die aktiv waren.

Jetzt wird schon mal was angezeigt, wenn ich Kachel erweitere ist sie leer ist das normal?

Leere Kachel nach erweitern ist normal. Das geht leider nicht anders mit dem html sdk

Gruß Stephan

Super Modul! Vielen Dank dafür. Jetzt wo es existiert, weiß man erst, dass man es vermisst hat :slight_smile:

Darf ich gleich mit ein paar Wünschen kommen, die mir beim Ausprobieren aufgefallen sind?

  • bei ID, Typ und Sender würde ich mir gerne eine Mehrfachauswahl wünschen (z.B. nach WARNINGS und ERRORS filtern)
  • die Einstellung des Light oder Dark Modus finde ich noch suboptimal. Zum einen bleibt sie bei mir nicht erhalten, zum anderen kollidiert sie mit der Einstellung der Visu. Wenn nicht beide synchron sind, dann kann man den Kacheltitel nicht lesen. Wäre es nicht besser, auf die Einstellung zu verzichten und den Modus der Kachelvisu automatisch zu übernehmen?
  • es fehlt ein Vollbildmodus :slight_smile:

@Dr.Niels Das ist in diesem Fall hier sehr schlecht. Eine Logfile ruft förmlich danach. Auch ist man es als Anwender gewohnt, dass man HTML-Darstellungen zum Vollbild erweitern kann. Ließe sich da nicht etwas machen?

1 „Gefällt mir“

HTML als Vollbild ist weiterhin auf unserer Roadmap :+1: Wir sind halt nur noch nicht da angekommen

1 „Gefällt mir“

Hatte ich bereits zwecks Erweiterung und Verbesserung auf der eigenen Liste. Das ist ja erstmal der Anfang und steckt noch viel Potential drinnen. Stück für Stück wird das noch erweitert. Die nächste Revision wird erstmal ein Schutz gegen zu große Logs erhalten. Um damit umzugehen muss ich etwas mehr schrauben - habe aber schon einen Weg aufgemacht das in den Griff zu bekommen.

Die Vollbildsache liegt ja bei Dr.Niels. Mal schauen wann das soweit sein wird. Ich habe mir die Log in einer einer eigenen Kategorie gemacht wo sonst nichts anderes ist, dann kann man das schon sehr groß ziehen.

3 „Gefällt mir“

So, erst mal die wichtigsten Sachen erledigt, sodass große Logs erkannt werden und es eine Fehlermeldung kommt mit entsprechenden Anweisungen.

v0.2.0_beta1
Versionsprüfung anpassen in Formular, Bug im Link zu Github
Prüfung Loggröße in Abhängigkeit der PHP memory

Auf der Wunschliste steht aktuell noch:
Oberen Bereich festhalten und nur unten scrollen, aber nur umschaltbar per Flag
Mehrfachauswahl in den DropDowns
Dropdown aller Logdateien, auch ältere zur Auswahl
DarkLight aus Symcon Einstellung übernehmen (Rückmeldung Dr.Niels)
Seiteweise vorblättern bei Auswahl der maxLines je Seite
Große Logdateien ermöglichen
Anzeige bei MaxExpand-Kachel (Erweiterung Symcon abzuwarten)

Ahh jetzt wird es auch gleich klarer woran das Problem liegt :wink:

Selbes Thema wie oben.

438 MB ist ne Hausnummer :cold_face: :see_no_evil_monkey: :speak_no_evil_monkey: :hear_no_evil_monkey:

So jetzt die Spezialschalter deaktiviert, aber noch immer fast 50MB.

@KaiS Kai deine Energierechner müllen das log ohne Ende zu, kann man das irgendwo deaktivieren?

lg hagi

Poste mal bitte einen Auszug aus dem Log im Modul Thread.

Grüße,
Kai

Hast PN :wink: lg hagi

Normalerweise halte ich mich eigentlich aus Ungemach raus, aber weil ich ja selber mal das Log per Script ins WebFront gebracht habe zwei kleine Anmerkungen:

  1. den User das Log file so weit runterschrumpfen zu lassen das nix mehr drin ist kann für ein Modul das LogAnalyser heißt keine gute Idee sein
  2. der Versuch das ganze File in den Speicher zu lesen halte ich auch nicht für eine gute Idee

Vielleicht falsch, vielleicht aber regt es auch zur Lösung in die richtige Richtung an.

Nutze erstmal weiter mein StatusLog-Script weiter :slight_smile:

Duck und weg!

2 „Gefällt mir“

Darum wird mein Log in eine MySQL Tabelle geschrieben. Mit Blätterfunktion in der HTML Tabelle und einstellbarer Anzahl der Zeilen pro Seite. Selbst wenn das Log 1GB hat, funktioniert das.

Ja, warum nicht. Wichtig ist, das es funktoniert :slight_smile:
Nur wenn man von außen es so hinoptimieren muss, das was geht - kann nicht die Lösung sein - jedenfalls mein Gedanke!

Für mich ist das Log klar nach dem Motto “haben ist besser als brauchen” konfiguriert, 700-800 MB am Tag sind normal. Das ist mit dem klassichen Handling in PHP nicht wirklich sinnvoll nutzbar.

Aber eine einfache, schnelle Lösung würde ich auch gut finden :innocent: .