STAX als Remote logging Tool verwenden
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
STAX als Remote logging Tool verwenden
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 ?!
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).
Re: STAX als Remote logging Tool verwenden
Nur kurz wie ich das von den Begrifflichkeiten her sehe.
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?
So etwas ist normalerweise ein Daemon oder Service.Das Programm wird automatisch gestartet und zeigt normalerweise keine Konsole und läuft im Hintergrund.
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?
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: STAX als Remote logging Tool verwenden
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,...)
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.theo hat geschrieben: ↑Mo 4. Jul 2022, 08:37Dabei 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 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).
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: STAX als Remote logging Tool verwenden
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
Im Pong Demo sieht alles so leicht aus
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: STAX als Remote logging Tool verwenden
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.
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
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: STAX als Remote logging Tool verwenden
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).
Re: STAX als Remote logging Tool verwenden
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.
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: STAX als Remote logging Tool verwenden
Ich muss die Blähungen beobachten und den Geruch bewerten können, falls Sche...e herauskommt.
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).
-
- Beiträge: 1910
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: STAX als Remote logging Tool verwenden
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.af0815 hat geschrieben: ↑Mo 4. Jul 2022, 09:14Um 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
Wäre definitiv interessant wenn du ausprobierst, deine Erfahrungen zu berichten.
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.
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.
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: STAX als Remote logging Tool verwenden
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).
-
- Beiträge: 1910
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: STAX als Remote logging Tool verwenden
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
Re: STAX als Remote logging Tool verwenden
Ich finde es kommt auch drauf an, wie du auf den Remote Rechner zugreifst.af0815 hat geschrieben: ↑Mo 4. Jul 2022, 10:45Wenn 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.
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
Danach kann er z.B. nach /tmp/mylog schreiben und dann kannst du das mit
Code: Alles auswählen
cat /tmp/mylog
Das wäre sicher nicht zuviel Overhead.
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: STAX als Remote logging Tool verwenden
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.theo hat geschrieben: ↑Mo 4. Jul 2022, 12:06Wenn über SSH, kannst du auch Linux Signale verwenden um das Logging zu starten und zu beenden.
Z.B. soDen Lazarus Teil dazu kann ich auf Wunsch anhängen.Code: Alles auswählen
pkill -SIGUSR1 project1
Danach kann er z.B. nach /tmp/mylog schreiben und dann kannst du das mitanschauen.Code: Alles auswählen
cat /tmp/mylog
Das wäre sicher nicht zuviel Overhead.
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).
-
- Beiträge: 830
- 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
Das haben weder FPK und Jonas noch ich so geschrieben.Warf hat geschrieben: ↑Mo 4. Jul 2022, 11:14Leider 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).
FPC Compiler Entwickler
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: STAX als Remote logging Tool verwenden
Hast du davon noch einen Link ?!
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).