Hallo und gesundes neues Jahr euch allen!
gaert: In den letzten Tagen habe ich mich wieder Docker-Edomi gewidmet und die erste CentOS7-Variante für amd64 sowie arm32v7 auf DockerHub gepushed. Dabei bin ich auch einem speziellen Problem der Kombination Docker-Edomi nachgegangen und zwar dem Heartbeat auf der Konsole.
In proc_main.php gibt es die Funktion consoleInfo($n, $color), welche im Edomi-Lebenszyklus sekündlich aufgerufen wird und mit verschiedenen Escape-Sequenzen die letzte Zeile der Konsolenausgabe modifiziert resp. überschreibt. Auf der normalen Linux-Konsole ist das kein Problem. Bei Docker und insbesondere bei der Verwendung von Management-Tools wie Portainer funktionieren aber die Escape-Sequenzen nicht, weshalb im Sekundentakt eine neue Zeile geschrieben und damit auch geloggt wird. Damit schreibt man sich überraschend schnell die Platte mit sinnlosen Logs voll.
Ich habe nun testweise den Funktionsaufruf
aus dem jede Sekunde aufgerufenen Codeblock in den stündlichen Codeblock verschoben, was das Fluten des Logs um den Faktor 3600 reduziert. In der Docker-Umgebung ist es m.M.n. völlig ausreichend, das Heartbeat-Logging soweit zu reduzieren, zumal alle anderen Log-Ausgaben davon nicht betroffen sind.
Nun wäre es schön, wenn das irgendwie konfigurierbar wäre. Lösungsvarianten gibt es natürlich viele, wobei es wohl am einfachsten (aber auch unschönsten) wäre, den sekündlichen Log-Aufruf zu entfernen. Mein Vorschlag wäre ein zusätzlicher Konfig-Schalter dieser Art:
Default auf false. Damit bleibt der Heartbeat wie er ist. Wird der Parameter auf true gesetzt, wird der Heartbeat nur stündlich auf der Konsole geloggt.
Was meinst Du?
gaert: In den letzten Tagen habe ich mich wieder Docker-Edomi gewidmet und die erste CentOS7-Variante für amd64 sowie arm32v7 auf DockerHub gepushed. Dabei bin ich auch einem speziellen Problem der Kombination Docker-Edomi nachgegangen und zwar dem Heartbeat auf der Konsole.
In proc_main.php gibt es die Funktion consoleInfo($n, $color), welche im Edomi-Lebenszyklus sekündlich aufgerufen wird und mit verschiedenen Escape-Sequenzen die letzte Zeile der Konsolenausgabe modifiziert resp. überschreibt. Auf der normalen Linux-Konsole ist das kein Problem. Bei Docker und insbesondere bei der Verwendung von Management-Tools wie Portainer funktionieren aber die Escape-Sequenzen nicht, weshalb im Sekundentakt eine neue Zeile geschrieben und damit auch geloggt wird. Damit schreibt man sich überraschend schnell die Platte mit sinnlosen Logs voll.
Ich habe nun testweise den Funktionsaufruf
Code:
$this->consoleInfo($this->edomiStartDateTime, '42');
Nun wäre es schön, wenn das irgendwie konfigurierbar wäre. Lösungsvarianten gibt es natürlich viele, wobei es wohl am einfachsten (aber auch unschönsten) wäre, den sekündlichen Log-Aufruf zu entfernen. Mein Vorschlag wäre ein zusätzlicher Konfig-Schalter dieser Art:
Code:
global_longHeartbeatLogInterval=[true|false]
Was meinst Du?
Kommentar