Zur tiefgehenden Analyse deines Problems: Bei asynchronen Microservices ist Logging eine der kritischsten Komponenten, vor allem wenn vollständige Nachvollziehbarkeit gewährleistet werden soll.
MALM leidet manchmal unter Backpressure, wenn Logs schnell generiert, aber langsam verarbeitet werden.
Einige Punkte, die du prüfen solltest:
- Kommt es zu Blockaden in Buffer-Pools?
- Wie hoch ist die Flush-Frequenz?
- Welche Sinks werden genutzt? Lokal oder Remote?
Serilog bietet z.B. mit seinem Async Sink besseren Umgang mit Backpressure. Das heißt, Logs können gepuffert und asynchron in verschiedene Systeme geschrieben werden, ohne den Hauptprozess zu blockieren.
Auch eine Trennung von kritischen Fehlerlogs und Standardlogs in unterschiedliche Pipelines kann helfen, Last besser zu balancieren.
Ebenfalls wichtig: Prüfe Instrumentation-Tools für spezifische Metrics bei deiner Lastspitze. Sobald du Bottlenecks identifizierst, kannst du gezielt anpassen oder zu einer Alternative wechseln.
Was genau nutzt du aktuell als Sink? File, Database, ELK-Stack?
MALM leidet manchmal unter Backpressure, wenn Logs schnell generiert, aber langsam verarbeitet werden.
Einige Punkte, die du prüfen solltest:
- Kommt es zu Blockaden in Buffer-Pools?
- Wie hoch ist die Flush-Frequenz?
- Welche Sinks werden genutzt? Lokal oder Remote?
Serilog bietet z.B. mit seinem Async Sink besseren Umgang mit Backpressure. Das heißt, Logs können gepuffert und asynchron in verschiedene Systeme geschrieben werden, ohne den Hauptprozess zu blockieren.
Auch eine Trennung von kritischen Fehlerlogs und Standardlogs in unterschiedliche Pipelines kann helfen, Last besser zu balancieren.
Ebenfalls wichtig: Prüfe Instrumentation-Tools für spezifische Metrics bei deiner Lastspitze. Sobald du Bottlenecks identifizierst, kannst du gezielt anpassen oder zu einer Alternative wechseln.
Was genau nutzt du aktuell als Sink? File, Database, ELK-Stack?
L
Leandrop5729.07.18 13:18Aktuell wird hauptsächlich in lokale Dateien geschrieben, die dann von einem Logshipper abgeholt und ins zentrale ELK-System eingespeist werden.
Es könnte also sein, dass MALM den Fileoutput nicht schnell genug vollzieht, ja. Danke – das deckt sich mit den Beobachtungen.
Async Sink bei Serilog klingt schon sehr interessant. Wäre das in so einem Setup die erste Empfehlung, um Verluste bei hoher Last zu minimieren?
Es könnte also sein, dass MALM den Fileoutput nicht schnell genug vollzieht, ja. Danke – das deckt sich mit den Beobachtungen.
Async Sink bei Serilog klingt schon sehr interessant. Wäre das in so einem Setup die erste Empfehlung, um Verluste bei hoher Last zu minimieren?
Leandrop57 schrieb:
Aktuell wird hauptsächlich in lokale Dateien geschriebenDas ist ein klassischer Flaschenhals, insbesondere bei hohen Lograten.
Deshalb:
1. Verwende Serilog mit Async File Sink oder sogar besser: direkt Syslog- oder Netzwerk-Sinks, wenn dein ELK-Stack sie unterstützt.
2. Gliedere deine Logs in Prioritätsklassen: kritische Fehler synchron, alles andere asynchron.
3. Prüfe auch das Rolling Intervall der Dateien. Sehr kleine Dateien verursachen öfter Schreibzugriffe.
4. Falls möglich, entkopple Logging vom Hauptprozess, z.B. durch Log-Queues.
Diese Tipps verbessern nicht nur Performance, sondern auch Stabilität bei Lastspitzen.
poted schrieb:
Ebenfalls wichtig: Prüfe Instrumentation-Tools für spezifische Metrics bei deiner Lastspitze.Genau, bevor du MALM komplett wechselst, solltest du mit Profiler-Tools und Telemetrie die Hotspots analysieren. Es ist oft Fehlkonfiguration oder falsch dimensionierte Hardware.
Guyju schrieb:
Gliedere deine Logs in PrioritätsklassenDas sehe ich als kritischen Punkt. ‚Ein Framework, das alles gleichzeitig versucht abzubilden, wird nie stabil sein.‘
Leandrop57, ich würde dir raten, deine Logging-Strategie komplett zu überdenken und erst dann alternativen ernsthafte Chancen zu geben.
Hey zusammen :-)
Mal ein bisschen Farbe ins Thema bringen: Ich finde MALM klasse, aber ja, es hat seine Macken. Ich hab’s mal mit Serilog und NLog probiert – und muss sagen, dass Serilog für Microservices tatsächlich simpler abzuwickeln ist, gerade wegen der API und extensiven Plugins.
Aber: Man sollte nicht vergessen, dass Logging auch Spaß machen kann 🎉. Wenn man die Einrichtung geschafft hat, kann man mit strukturierten Logs richtig viel Spaß bei der Fehlersuche haben!
Vielleicht einfach mal einen Prototypen mit Serilog probieren? Sieht da echt sehr frisch aus!
Schon probiert?
Mal ein bisschen Farbe ins Thema bringen: Ich finde MALM klasse, aber ja, es hat seine Macken. Ich hab’s mal mit Serilog und NLog probiert – und muss sagen, dass Serilog für Microservices tatsächlich simpler abzuwickeln ist, gerade wegen der API und extensiven Plugins.
Aber: Man sollte nicht vergessen, dass Logging auch Spaß machen kann 🎉. Wenn man die Einrichtung geschafft hat, kann man mit strukturierten Logs richtig viel Spaß bei der Fehlersuche haben!
Vielleicht einfach mal einen Prototypen mit Serilog probieren? Sieht da echt sehr frisch aus!
Schon probiert?
Ähnliche Themen