STAX als Remote logging Tool verwenden

Rund um die LCL und andere Komponenten
Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5483
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

STAX als Remote logging Tool verwenden

Beitrag von af0815 »

Hallo Warf,

ich möchte meinen Programmen die Möglichkeit geben remote nach Debugging Messages abgefragt zu werden. Daher mehr oder weniger den LazLogger (oder ähnlich) aufzubohren und die Messages die normalerweise an die Konsole gehen auf IP Ebene zu heben. Nur mit dem Unterschied das dafür kein extra Debuggingserver notwendig ist, sondern das ganze als zusätzliches Modul in die Programme eingebunden wird.

Warum das ganze: Viele Programme arbeiten mit Maschinen zusammen und haben keinen Benutzer der bedient. Bzw. wenn ein Fehlerzustand im Programm erkannt wird, so wird der im Notfall auf die Konsole (wenn vorhanden) dokumentiert und dann versucht das Programm wieder in einen Zustand zu bringen, das es weiterhin funktioniert.

Das Programm wird automatisch gestartet und zeigt normalerweise keine Konsole und wenn im Hintergrund. Ich möchte mich aber verbinden können und ganz einfach mitlesen können, wenn es zu Problemzuständen kommt. Als Erweiterung wäre, das ich mir über Befehle den Inhalt von Objekten ausgeben lassen könnte, was halt derzeit über RTTI möglich ist. Ev. auch ein paar definierte globale Variablen.

Bisher ist mir das ganze etwas zu schwergewichtig mit Threads gewesen, nur hat mir das Pong Beispiel in den Demos von STAX da Hoffung gegeben das das ganze doch umsetzbar sein könnte. So ähnlich wie es mit ZeroMQ umsetzbar sein könnte (nur ich will natives Pascal, keine zusätzlichen Libs wegen Wartung)

Ist STAX soweit, das man es damit mal versuchen kann bzw. ist das angedachte realistisch ?!
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 9580
Registriert: Mo 11. Sep 2006, 19:01

Re: STAX als Remote logging Tool verwenden

Beitrag von theo »

Nur kurz wie ich das von den Begrifflichkeiten her sehe.
Das Programm wird automatisch gestartet und zeigt normalerweise keine Konsole und läuft im Hintergrund.
So etwas ist normalerweise ein Daemon oder Service.
Dabei gibt es von System her Möglichkeiten des Loggings und (Remote-) Viewings.
Z.B.
https://www.loggly.com/ultimate-guide/w ... ng-basics/
https://www.loggly.com/ultimate-guide/l ... h-systemd/

Wahrscheinlich damit zugreifbar
https://www.freepascal.org/docs-html/fc ... ntlog.html

Das wäre so quasi der "offizielle" Weg.
Kommt das nicht in Frage?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5483
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: STAX als Remote logging Tool verwenden

Beitrag von af0815 »

theo hat geschrieben:
Mo 4. Jul 2022, 08:37
Nur kurz wie ich das von den Begrifflichkeiten her sehe.
Das Programm wird automatisch gestartet und zeigt normalerweise keine Konsole und läuft im Hintergrund.
So etwas ist normalerweise ein Daemon oder Service.
Vielleicht schlecht von mir beschrieben. Es ist eine GUI App ohne humane Bedienung. Die Bedienung erfolgt über eine Maschinenschnittstelle die mittels Industrieprotokoll bedient wird (ModBus, S7 Protokol,...)
theo hat geschrieben:
Mo 4. Jul 2022, 08:37
Dabei gibt es von System her Möglichkeiten des Loggings und (Remote-) Viewings.
Z.B.
https://www.loggly.com/ultimate-guide/w ... ng-basics/
https://www.loggly.com/ultimate-guide/l ... h-systemd/

Wahrscheinlich damit zugreifbar
https://www.freepascal.org/docs-html/fc ... ntlog.html
Die Lösungen haben meist den Nachteil, das das FileSystem damit belastet wird. Die Geräte sind meistens RasPis mit SD-Karte. Dort ist es besser nichts in das Syslog oder eigene Logs zu schreiben, ansonsten ist die SD-Karte in ein paar Wochen defekt und auch SSDs haben eine begrenzte Lebensdauer.

Die meisten Meldungen sind reine Statusmeldungen, wie sich ein Zustand in der Maschine geändert hat und wie der Status im Programm ist. Das sind 'wegwerf' Informationen die nur im Fehlerfall relevant sind. Das Problem ist, das es öfters Probleme gibt, die Aufgrund nicht korrekter Daten von der Maschinenschnittstelle hervorgerufen werden. Damit sollte man sich sofort mit dem Programm verbinden können und die aktuellen Statusinfos abrufen. Dazu haben andere Industriegeräte und SPS genau so eine Schnittstelle, wo man bei Bedarf interne Infos sich ansehen kann. Und eine Neustart des Programmes mit Konsole verändert oft die Umgebung und der Fehler ist nicht mehr ersichtlich.

Zusammengefasst, es ist nicht sinnvoll diese volatilen und nicht persistenten Infos zu speichern. Auf Wunsch beobachten schon.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5483
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: STAX als Remote logging Tool verwenden

Beitrag von af0815 »

Um es zu präzisieren - kann STAX als leichtgewichtige Threadsteuerung für UDP/TCP verwendet werden. Weil der Server schläft eigentlich die ganze Zeit, ausser ein Client will Loggen und der eigentliche (bisherige) Ablauf sollte nicht gestört werden.

Im Pong Demo sieht alles so leicht aus :lol: :shock:
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 9580
Registriert: Mo 11. Sep 2006, 19:01

Re: STAX als Remote logging Tool verwenden

Beitrag von theo »

af0815 hat geschrieben:
Mo 4. Jul 2022, 09:09
und auch SSDs haben eine begrenzte Lebensdauer.
Naja, bis eine moderne SSD wegen ein bisschen Logging die Grätsche macht, schauen wir zwei Hübschen uns die "Rüebli" längst von unten an. :mrgreen:

Ich kann dir nicht ganz folgen, vielleicht kommen noch passendere Tipps von Anderen.
Für alle die (wie ich) nicht wissen was "STAX" ist:
https://wiki.freepascal.org/STAX
https://github.com/Warfley/STAX

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5483
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: STAX als Remote logging Tool verwenden

Beitrag von af0815 »

theo hat geschrieben:
Mo 4. Jul 2022, 09:40
Naja, bis eine moderne SSD wegen ein bisschen Logging die Grätsche macht, schauen wir zwei Hübschen uns die "Rüebli" längst von unten an. :mrgreen:
Das geht im Industriebereich sehr schnell :-) Die SSDs sind in den Geräten klein bemessen 128GB- 240GB und die Daten kleine Schnippsel, dafür laufend und 24/7/365.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 9580
Registriert: Mo 11. Sep 2006, 19:01

Re: STAX als Remote logging Tool verwenden

Beitrag von theo »

af0815 hat geschrieben:
Mo 4. Jul 2022, 10:17
theo hat geschrieben:
Mo 4. Jul 2022, 09:40
Naja, bis eine moderne SSD wegen ein bisschen Logging die Grätsche macht, schauen wir zwei Hübschen uns die "Rüebli" längst von unten an. :mrgreen:
Das geht im Industriebereich sehr schnell :-) Die SSDs sind in den Geräten klein bemessen 128GB- 240GB und die Daten kleine Schnippsel, dafür laufend und 24/7/365.
Was heisst "schnell"?
Gibt es dazu Daten? 256 TBW muss man ja auch erst schaffen.
Ich meine du musst ja auch nicht sekündlich jeden Furz loggen. Ab Loglevel "Warning" (oder so) reicht doch.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5483
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: STAX als Remote logging Tool verwenden

Beitrag von af0815 »

theo hat geschrieben:
Mo 4. Jul 2022, 10:25
Ich meine du musst ja auch nicht sekündlich jeden Furz loggen. Ab Loglevel "Warning" (oder so) reicht doch.
Ich muss die Blähungen beobachten und den Geruch bewerten können, falls Sche...e herauskommt. :mrgreen:

Wenn alles läuft, also 99,9 % der Zeit sind die Infos unwichtig (=unnötig) und werden nicht gebraucht, allerdings wenn was Probleme bereitet, so muss man ganz schnell sichere Diagnosedaten haben um sagen zu können wo die Ursache liegt. Daher ein System was auf Anforderung die Datenbereitstellt im Hintergrund aber fast die ganze Zeit wartet, bis zu kurzen Benutzung.
Zuletzt geändert von af0815 am Mo 4. Jul 2022, 10:53, insgesamt 1-mal geändert.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Warf
Beiträge: 1693
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: STAX als Remote logging Tool verwenden

Beitrag von Warf »

af0815 hat geschrieben:
Mo 4. Jul 2022, 09:14
Um es zu präzisieren - kann STAX als leichtgewichtige Threadsteuerung für UDP/TCP verwendet werden. Weil der Server schläft eigentlich die ganze Zeit, ausser ein Client will Loggen und der eigentliche (bisherige) Ablauf sollte nicht gestört werden.

Im Pong Demo sieht alles so leicht aus :lol: :shock:
Wie "leichtgewichtig" STAX tatsächlich ist (im Vergleich zu threads) kann ich dir nocht sagen, da ich das nicht so eingehend getestet hab, mein Ziel bei STAX war es einfach das der code möglichst simpel sein soll, und threads machen immer alles kompliziert. Eine richtrige performance Evaluierung habe ich aber noch nicht gemacht.
Wäre definitiv interessant wenn du ausprobierst, deine Erfahrungen zu berichten.
af0815 hat geschrieben:
Mo 4. Jul 2022, 07:37
(nur ich will natives Pascal, keine zusätzlichen Libs wegen Wartung)
Für STAX brauchst du unter Linux einen custom FPC build (da 2 zusätzliche funktionen in der RTL benötigt werden um Setjmp/Longjmp zum laufen zu kriegen). Ist also was das angeht wahrscheinlich nicht besser.
af0815 hat geschrieben:
Mo 4. Jul 2022, 07:37
Ist STAX soweit, das man es damit mal versuchen kann bzw. ist das angedachte realistisch ?!
STAX läuft meines erachtens nach schon recht robust. Für Netzwerk kram solltest du AsyncNet (https://github.com/Warfley/AsyncNet) verwenden, die STAX AsyncTCP unit ist im grunde nur ne lite version davon (die auch sonst keine updates mehr groß enthält, will ich irgendwann komplett rausschmeißen). AsyncNet ist zwar noch lang nicht feature complete (z.B. fehlt noch SSL, und ich will DualStack ausbauen), sollte aber wenn du nur ne einfache TCP Verbindung brauchst um ein paar Strings hin und her zu schicken, gar kein Problem sein.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5483
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: STAX als Remote logging Tool verwenden

Beitrag von af0815 »

Warf hat geschrieben:
Mo 4. Jul 2022, 10:47
af0815 hat geschrieben:
Mo 4. Jul 2022, 07:37
(nur ich will natives Pascal, keine zusätzlichen Libs wegen Wartung)
Für STAX brauchst du unter Linux einen custom FPC build (da 2 zusätzliche funktionen in der RTL benötigt werden um Setjmp/Longjmp zum laufen zu kriegen). Ist also was das angeht wahrscheinlich nicht besser.
Ist es angedacht das in den FPC zu bekommen, bzw. ist das im Trunk vielleicht drinnen ? Oder brauch ich das bei AsyncNET nicht ?!
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Warf
Beiträge: 1693
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: STAX als Remote logging Tool verwenden

Beitrag von Warf »

af0815 hat geschrieben:
Mo 4. Jul 2022, 10:57
Ist es angedacht das in den FPC zu bekommen, bzw. ist das im Trunk vielleicht drinnen ? Oder brauch ich das bei AsyncNET nicht ?!
Leider nein, hatte die Änderung damals als Merge Request an FPC gestellt, wurde aber nicht als nötig erachtet zu integrieren (anscheinend soll man setjmp/longjmp eh nicht verwenden und die existieren nur für interne Vorgäne in der RTL. Warum sie dann öffentlich zugänglich sind verstehe ich aber dann nicht).
Und AsyncNet braucht STAX (und damit den Fix), ist nur ne ausgliederung von dem Netzwerkkram in ein separates projekt ums sauber zu halten

Benutzeravatar
theo
Beiträge: 9580
Registriert: Mo 11. Sep 2006, 19:01

Re: STAX als Remote logging Tool verwenden

Beitrag von theo »

af0815 hat geschrieben:
Mo 4. Jul 2022, 10:45
Wenn alles läuft, also 99,9 % der Zeit sind die Infos unwichtig (=unnötig) und werden nicht gebraucht, allerdings wenn was Probleme bereitet, so muss man ganz schnell sichere Diagnosedaten haben um sagen zu können wo die Ursache liegt. Daher ein System was auf Anforderung die Datenbereitstellt im Hintergrund aber fast die ganze Zeit wartet, bis zu kurzen Benutzung.
Ich finde es kommt auch drauf an, wie du auf den Remote Rechner zugreifst.
Wenn über SSH, kannst du auch Linux Signale verwenden um das Logging zu starten und zu beenden.
Z.B. so

Code: Alles auswählen

pkill -SIGUSR1 project1
Den Lazarus Teil dazu kann ich auf Wunsch anhängen.
Danach kann er z.B. nach /tmp/mylog schreiben und dann kannst du das mit

Code: Alles auswählen

cat /tmp/mylog
anschauen.

Das wäre sicher nicht zuviel Overhead. :wink:

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5483
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: STAX als Remote logging Tool verwenden

Beitrag von af0815 »

theo hat geschrieben:
Mo 4. Jul 2022, 12:06
Wenn über SSH, kannst du auch Linux Signale verwenden um das Logging zu starten und zu beenden.
Z.B. so

Code: Alles auswählen

pkill -SIGUSR1 project1
Den Lazarus Teil dazu kann ich auf Wunsch anhängen.
Danach kann er z.B. nach /tmp/mylog schreiben und dann kannst du das mit

Code: Alles auswählen

cat /tmp/mylog
anschauen.

Das wäre sicher nicht zuviel Overhead. :wink:
Für einen SSH-Terminalisten und Linuxianer kein Problem. Vor allen muss man das mit einem 2ten Signal sicher abschalten. Nur kann ich von der Zielgruppe das nicht unbedingt verlangen. Es ist aber eine weitere Idee, die ich mal geistig abspeichere.

Bezüglich Code meinst du sicher viewtopic.php?f=16&t=14015 als Beispiel.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

PascalDragon
Beiträge: 626
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: STAX als Remote logging Tool verwenden

Beitrag von PascalDragon »

Warf hat geschrieben:
Mo 4. Jul 2022, 11:14
af0815 hat geschrieben:
Mo 4. Jul 2022, 10:57
Ist es angedacht das in den FPC zu bekommen, bzw. ist das im Trunk vielleicht drinnen ? Oder brauch ich das bei AsyncNET nicht ?!
Leider nein, hatte die Änderung damals als Merge Request an FPC gestellt, wurde aber nicht als nötig erachtet zu integrieren (anscheinend soll man setjmp/longjmp eh nicht verwenden und die existieren nur für interne Vorgäne in der RTL. Warum sie dann öffentlich zugänglich sind verstehe ich aber dann nicht).
Das haben weder FPK und Jonas noch ich so geschrieben.
FPC Compiler Entwickler

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5483
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: STAX als Remote logging Tool verwenden

Beitrag von af0815 »

Warf hat geschrieben:
Mo 4. Jul 2022, 11:14
af0815 hat geschrieben:
Mo 4. Jul 2022, 10:57
Ist es angedacht das in den FPC zu bekommen, bzw. ist das im Trunk vielleicht drinnen ? Oder brauch ich das bei AsyncNET nicht ?!
Leider nein, hatte die Änderung damals als Merge Request an FPC gestellt, wurde aber nicht als nötig erachtet zu integrieren
Hast du davon noch einen Link ?!
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten