paint-brush
So extrahieren Sie den Maximalwert aus Protokollenvon@alvinslee
1,460 Lesungen
1,460 Lesungen

So extrahieren Sie den Maximalwert aus Protokollen

von Alvin Lee9m2023/08/25
Read on Terminal Reader
Read this story w/o Javascript

Zu lang; Lesen

Wir werden uns damit befassen, wie Protokolle gestaltet werden können, welche Herausforderungen und Lösungen es bei der Protokollierung in großen Systemen gibt und wie man über protokollbasierte Metriken und die langfristige Aufbewahrung nachdenkt.
featured image - So extrahieren Sie den Maximalwert aus Protokollen
Alvin Lee HackerNoon profile picture

Die Protokollierung ist wohl das wichtigste Element Ihrer Observability-Lösung. Protokolle liefern grundlegende und umfassende Informationen zum Systemverhalten. Im Idealfall würden Sie alle Entscheidungen zur Protokollierung selbst treffen und einen einheitlichen Ansatz in Ihrem gesamten System implementieren.


In der realen Welt arbeiten Sie jedoch möglicherweise mit veralteter Software oder haben es mit verschiedenen Programmiersprachen, Frameworks und Open-Source-Paketen zu tun, von denen jedes sein eigenes Format und seine eigene Struktur für die Protokollierung hat.


Welche Schritte können Sie angesichts einer solchen Vielfalt an Protokollformaten in Ihrem System unternehmen, um den größtmöglichen Nutzen aus all Ihren Protokollen zu ziehen? Darauf werden wir in diesem Beitrag eingehen.


Wir schauen uns an, wie Protokolle gestaltet werden können, welche Herausforderungen und Lösungen es bei der Protokollierung in großen Systemen gibt und wie man über protokollbasierte Metriken und die langfristige Aufbewahrung nachdenkt.


Werfen wir einen Blick auf die Protokollebenen und -formate.

Protokollierungsdesign

Viele Überlegungen fließen in das Protokolldesign ein, aber die beiden wichtigsten Aspekte sind die Verwendung von Protokollebenen und die Frage, ob strukturierte oder unstrukturierte Protokollformate verwendet werden sollen.

Protokollebenen

Protokollebenen werden verwendet, um Protokollnachrichten basierend auf ihrem Schweregrad zu kategorisieren. Spezifische verwendete Protokollebenen können je nach Protokollierungsframework oder -system variieren. Zu den häufig verwendeten Protokollebenen gehören jedoch (in der Reihenfolge der Ausführlichkeit, von der höchsten zur niedrigsten):


  • TRACE : Erfasst jede Aktion des Systems, um eine umfassende Aufzeichnung zu erstellen und jede Zustandsänderung zu berücksichtigen.


  • DEBUG : Erfasst detaillierte Informationen für Debugging-Zwecke. Diese Meldungen sind normalerweise nur während der Entwicklung relevant und sollten in Produktionsumgebungen nicht aktiviert werden.


  • INFO : Bietet allgemeine Informationen über den Systembetrieb, um wichtige Ereignisse oder Meilensteine in der Systemausführung zu übermitteln.


  • WARNUNG : Weist auf potenzielle Probleme oder Situationen hin, die möglicherweise Aufmerksamkeit erfordern. Diese Meldungen sind nicht kritisch, sollten jedoch notiert und bei Bedarf untersucht werden.


  • FEHLER : Zeigt Fehler an, die während der Ausführung des Systems aufgetreten sind. Diese Meldungen weisen in der Regel auf Probleme hin, die behoben werden müssen und sich möglicherweise auf die Funktionalität des Systems auswirken.


Die Protokollierung auf der entsprechenden Ebene hilft dabei, das Systemverhalten zu verstehen, Probleme zu identifizieren und Probleme effektiv zu beheben.


Wenn es um die von Ihnen erstellten Systemkomponenten geht, empfehlen wir Ihnen, sich etwas Zeit für die Definition der sinnvollen Protokollebenen zu nehmen. Verstehen Sie, welche Arten von Informationen in Nachrichten auf jeder Protokollebene enthalten sein sollten, und verwenden Sie die Protokollebenen konsistent.


Später besprechen wir den Umgang mit Anwendungen von Drittanbietern, bei denen Sie keine Kontrolle über die Protokollebenen haben. Wir betrachten auch Legacy-Anwendungen, die Sie steuern, die jedoch zu umfangreich sind, um auf die Standardprotokollebenen zu migrieren.

Strukturierte versus unstrukturierte Protokolle

Einträge in strukturierten Protokollen haben ein klar definiertes Format, normalerweise als Schlüssel-Wert-Paare oder JSON-Objekte. Dies ermöglicht konsistente und maschinenlesbare Protokolleinträge und erleichtert die programmgesteuerte Analyse und Analyse von Protokolldaten.


Die strukturierte Protokollierung ermöglicht erweiterte Protokollabfragen und -analysen und ist daher besonders in großen Systemen nützlich.


Andererseits erfasst die unstrukturierte (Freiform-)Protokollierung Nachrichten in einem besser lesbaren Format ohne vordefinierte Struktur. Dieser Ansatz ermöglicht es Entwicklern, Nachrichten natürlicher und flexibler zu protokollieren.


Das programmgesteuerte Extrahieren spezifischer Informationen aus den resultierenden Protokollen kann jedoch eine große Herausforderung sein.


Die Wahl zwischen strukturierten und unstrukturierten Protokollen hängt von Ihren spezifischen Anforderungen sowie den Anforderungen und Einschränkungen Ihres Systems ab. Wenn Sie die Notwendigkeit einer erweiterten Protokollanalyse oder der Integration mit Protokollanalysetools voraussehen, können strukturierte Protokolle erhebliche Vorteile bieten.


Wenn Sie jedoch lediglich Einfachheit und Lesbarkeit benötigen, können unstrukturierte Protokolle ausreichend sein.


In einigen Fällen kann auch ein Hybridansatz verwendet werden, bei dem Sie strukturierte Protokolle für wichtige Ereignisse und unstrukturierte Protokolle für allgemeinere Nachrichten verwenden.


Bei großen Systemen sollten Sie nach Möglichkeit zur strukturierten Protokollierung tendieren, beachten Sie jedoch, dass dies Ihrer Planung eine weitere Dimension hinzufügt. Bei strukturierten Protokollnachrichten wird erwartet, dass in allen Systemkomponenten konsistent derselbe Feldsatz verwendet wird. Dies erfordert strategische Planung.

Herausforderungen bei der Protokollierung

Bei Systemen, die aus mehreren Komponenten bestehen, verfügt jede Komponente höchstwahrscheinlich über ein eigenes Modell zur Verwaltung ihrer Protokolle. Lassen Sie uns die damit verbundenen Herausforderungen Revue passieren lassen.

Unterschiedliche Ziele

Komponenten protokollieren an unterschiedlichen Zielen – Dateien, Systemprotokolle, stdout oder stderr. In verteilten Systemen ist das Sammeln dieser verstreuten Protokolle für eine effektive Nutzung umständlich.


Hierzu benötigen Sie einen abwechslungsreichen Ansatz zur Protokollerfassung, beispielsweise die Verwendung installierter Collectors und gehosteter Collectors von Sumo Logic.

Unterschiedliche Formate

Einige Komponenten verwenden eine unstrukturierte Protokollierung in freier Form, die keinem bestimmten Format folgt. Mittlerweile sind strukturierte Protokolle möglicherweise besser organisiert, Komponenten mit strukturierten Protokollen verwenden jedoch möglicherweise völlig andere Feldsätze.


Um die Informationen, die Sie aus einer Vielzahl von Protokollen und Formaten erhalten, zu vereinheitlichen, sind die richtigen Tools erforderlich.

Inkonsistente Protokollebenen

Komponenten in Ihrem System verwenden möglicherweise unterschiedliche Bereiche von Protokollebenen. Selbst wenn Sie alle Protokollmeldungen in einem zentralen Protokollierungssystem konsolidieren (was Sie sollten), müssen Sie sich mit der Vereinigung aller Protokollebenen befassen.


Eine Herausforderung besteht darin, dass unterschiedliche Protokollebenen gleich behandelt werden sollten. Beispielsweise kann „FEHLER“ in einer Komponente dasselbe sein wie „KRITISCH“ in einer anderen Komponente, sodass eine sofortige Eskalation erforderlich ist.


Sie stehen vor der gegenteiligen Herausforderung, wenn dieselbe Protokollebene in verschiedenen Komponenten unterschiedliche Bedeutungen hat. Beispielsweise können INFO-Nachrichten in einer Komponente wichtig für das Verständnis des Systemstatus sein, während sie in einer anderen Komponente möglicherweise zu ausführlich sind.

Protokollspeicherkosten

Große verteilte Systeme sammeln viele Protokolle an. Das Sammeln und Speichern dieser Protokolle ist nicht billig. Protokollbezogene Kosten in der Cloud können einen erheblichen Teil der Gesamtkosten des Systems ausmachen.

Umgang mit diesen Herausforderungen

Obwohl die Protokollierung in großen, verteilten Systemen erhebliche Herausforderungen mit sich bringt, können Lösungen durch einige der folgenden Vorgehensweisen gefunden werden.

Fassen Sie Ihre Protokolle zusammen

Wenn Sie ein verteiltes System betreiben, sollten Sie eine zentralisierte Protokollierungslösung verwenden. Wenn Sie auf jedem Computer in Ihrem System Protokollsammlungsagenten ausführen, senden diese Sammler alle Protokolle an Ihre zentrale Observability-Plattform.


Sumo Logic, das sich schon immer auf Protokollverwaltung und -analyse konzentriert hat, ist der Klassenbeste, wenn es um Protokollaggregation geht.

Gehen Sie zu einem einheitlichen Format

Der Umgang mit Protokollen in unterschiedlichen Formaten ist ein großes Problem, wenn Sie Protokolldaten für Analysen und Fehlerbehebung über Anwendungen und Komponenten hinweg korrelieren möchten. Eine Lösung besteht darin, verschiedene Protokolle in ein einheitliches Format umzuwandeln.


Der Aufwand für diese Aufgabe kann hoch sein. Erwägen Sie daher, dies in Phasen zu tun, beginnend mit den wichtigsten Komponenten und arbeiten Sie sich nach unten vor.

Richten Sie einen Protokollierungsstandard für Ihre Anwendungen ein

Arbeiten Sie für Ihre eigenen Anwendungen daran, einen Standardprotokollierungsansatz zu etablieren, der einen einheitlichen Satz von Protokollebenen, ein einziges strukturiertes Protokollformat und eine konsistente Semantik übernimmt.


Wenn Sie auch über Legacy-Anwendungen verfügen, bewerten Sie das Risiko und die Kosten, die mit der Migration dieser Anwendungen zur Einhaltung Ihres Standards verbunden sind.


Wenn eine Migration nicht möglich ist, behandeln Sie Ihre Legacy-Anwendungen wie Anwendungen von Drittanbietern.

Bereichern Sie Protokolle aus Drittquellen

Das Anreichern von Protokollen aus Drittquellen umfasst das Anreichern von Protokolldaten mit Kontextinformationen von externen Systemen oder Diensten. Dies führt zu einem besseren Verständnis der Protokollereignisse und hilft bei der Fehlerbehebung, Analyse und Überwachung von Aktivitäten.


Um Ihre Protokolle anzureichern, können Sie externe Systeme (z. B. APIs oder Nachrichtenwarteschlangen) integrieren, um zusätzliche Daten im Zusammenhang mit Protokollereignissen (z. B. Benutzerinformationen, Kundendetails oder Systemmetriken) abzurufen.

Verwalten Sie Protokollvolumen, Häufigkeit und Aufbewahrung

Für eine effiziente Protokollverwaltung und -speicherung ist die sorgfältige Verwaltung des Protokollvolumens, der Häufigkeit und der Aufbewahrung von entscheidender Bedeutung.


  • Volumen : Durch die Überwachung des generierten Protokollvolumens können Sie den Ressourcenverbrauch und die Auswirkungen auf die Leistung kontrollieren.


  • Häufigkeit : Bestimmen Sie, wie oft protokolliert werden soll, basierend auf der Kritikalität der Ereignisse und dem gewünschten Überwachungsgrad.


  • Aufbewahrung : Definieren Sie eine Protokollaufbewahrungsrichtlinie, die den Compliance-Anforderungen, den Betriebsanforderungen und dem verfügbaren Speicher entspricht.


  • Rotation : Archivieren oder löschen Sie regelmäßig ältere Protokolldateien, um die Größe der Protokolldateien effektiv zu verwalten.


  • Komprimierung : Komprimieren Sie Protokolldateien, um den Speicherbedarf zu reduzieren.

Protokollbasierte Metriken

Metriken, die aus der Analyse von Protokolldaten abgeleitet werden, können Einblicke in das Systemverhalten und die Systemleistung liefern. Das Arbeiten mit protokollbasierten Metriken hat seine Vorteile und Herausforderungen.

Vorteile

  • Detaillierte Einblicke : Protokollbasierte Metriken bieten detaillierte und detaillierte Einblicke in Systemereignisse und ermöglichen Ihnen die Identifizierung von Mustern, Anomalien und potenziellen Problemen.


  • Umfassende Überwachung : Durch die Nutzung protokollbasierter Metriken können Sie Ihr System umfassend überwachen und erhalten Einblick in kritische Metriken in Bezug auf Verfügbarkeit, Leistung und Benutzererfahrung.


  • Historische Analyse : Protokollbasierte Metriken liefern historische Daten, die für Trendanalysen, Kapazitätsplanung und Leistungsoptimierung verwendet werden können. Durch die Untersuchung von Protokolltrends im Laufe der Zeit können Sie datengesteuerte Entscheidungen treffen, um die Effizienz und Skalierbarkeit zu verbessern.


  • Flexibilität und Anpassung : Sie können die Extraktion protokollbasierter Metriken an Ihre Anwendung oder Ihr System anpassen und sich dabei auf die Ereignisse und Datenpunkte konzentrieren, die für Ihre Anforderungen am aussagekräftigsten sind.

Herausforderungen

  • Definieren aussagekräftiger Metriken : Da der Satz an Metriken, die Ihnen für alle Ihre Komponenten zur Verfügung stehen, unglaublich umfangreich ist – und es keinen Sinn machen würde, sie alle zu erfassen – kann die Identifizierung der zu erfassenden und aus Protokollen zu extrahierenden Metriken eine komplexe Aufgabe sein.


    Diese Identifizierung erfordert ein tiefes Verständnis des Systemverhaltens und eine enge Abstimmung mit Ihren Geschäftszielen.


  • Datenextraktion und -analyse : Für die Analyse von Protokollen zum Extrahieren nützlicher Metriken sind möglicherweise spezielle Tools oder benutzerdefinierte Parser erforderlich. Dies gilt insbesondere dann, wenn Protokolle von einer Komponente zur nächsten unstrukturiert oder inkonsistent formatiert sind.


    Das Einrichten kann zeitaufwändig sein und möglicherweise eine Wartung erfordern, wenn sich Protokollformate ändern oder neue Protokollquellen entstehen.


  • Bedarf an Echtzeitanalysen : Verzögerungen bei der Verarbeitung protokollbasierter Metriken können dazu führen, dass die Metriken veraltet oder irrelevant sind. In den meisten Situationen benötigen Sie eine Plattform, die eine schnelle Echtzeitverarbeitung eingehender Daten durchführen kann, um protokollbasierte Metriken effektiv zu nutzen.


  • Auswirkungen auf die Leistung : Die kontinuierliche Erfassung von Komponentenprofilierungsmetriken belastet die Systemressourcen zusätzlich. Sie müssen ein gutes Gleichgewicht zwischen der Erfassung ausreichender protokollbasierter Metriken und der Aufrechterhaltung einer angemessenen Systemleistung finden.


  • Datenrauschen und Irrelevanz : Protokolldaten enthalten oft viel Rauschen und irrelevante Informationen und tragen nicht zu aussagekräftigen Metriken bei. Eine sorgfältige Protokollfilterung und -normalisierung ist erforderlich, um die Datenerfassung auf relevante Ereignisse zu konzentrieren.

Langfristige Protokollaufbewahrung

Nachdem Sie den Schritt zur Protokollaggregation in einem zentralen System vollzogen haben, müssen Sie noch über langfristige Protokollaufbewahrungsrichtlinien nachdenken. Lassen Sie uns die kritischen Fragen für diesen Bereich behandeln.

Wie lange sollten Sie Protokolle aufbewahren?

Wie lange Sie ein Protokoll aufbewahren sollten, hängt von mehreren Faktoren ab, darunter:


  • Protokolltyp : Einige Protokolle (z. B. Zugriffsprotokolle) können nach kurzer Zeit gelöscht werden. Andere Protokolle (z. B. Fehlerprotokolle) müssen möglicherweise länger aufbewahrt werden, falls sie zur Fehlerbehebung benötigt werden.


  • Regulatorische Anforderungen : In Branchen wie dem Gesundheitswesen und dem Finanzwesen gelten Vorschriften, die von Organisationen verlangen, Protokolle für einen bestimmten Zeitraum, manchmal sogar einige Jahre, aufzubewahren.


  • Unternehmensrichtlinien : In Ihrem Unternehmen gibt es möglicherweise Richtlinien, die vorschreiben, wie lange Protokolle aufbewahrt werden sollen.


  • Protokollgröße : Wenn Ihre Protokolle groß sind, müssen Sie sie möglicherweise häufiger rotieren oder löschen.


  • Speicherkosten : Unabhängig davon, wo Sie Ihre Protokolle speichern – vor Ort oder in der Cloud – müssen Sie die Speicherkosten berücksichtigen.

Wie reduzieren Sie den Detaillierungsgrad und die Kosten älterer Protokolle?

Das Löschen alter Protokolle ist natürlich die einfachste Möglichkeit, Ihre Speicherkosten zu senken. Es kann jedoch etwas umständlich sein, und manchmal möchten Sie möglicherweise Informationen aus alten Protokollen aufbewahren.


Wenn Sie Informationen aus alten Protokollen behalten, aber auch kosteneffizient arbeiten möchten, sollten Sie einige dieser Maßnahmen in Betracht ziehen:


  • Downsampling-Protokolle : Bei Komponenten, die viele sich wiederholende Protokollanweisungen generieren, erfassen Sie möglicherweise nur eine Teilmenge der Anweisungen (z. B. 1 von 10).


  • Protokolle kürzen : Bei Protokollen mit großen Nachrichten können Sie einige Felder verwerfen. Wenn ein Fehlerprotokoll beispielsweise einen Fehlercode und eine Fehlerbeschreibung enthält, verfügen Sie möglicherweise über alle benötigten Informationen, wenn Sie nur den Fehlercode behalten.


  • Komprimierung und Archivierung : Sie können alte Protokolle komprimieren und in einen günstigeren und weniger zugänglichen Speicher verschieben (insbesondere in die Cloud). Dies ist eine großartige Lösung für Protokolle, die Sie über Jahre hinweg speichern müssen, um gesetzliche Compliance-Anforderungen zu erfüllen.

Abschluss

In diesem Artikel haben wir untersucht, wie Sie die Protokollierung in großen Systemen optimal nutzen können.


Obwohl die Protokollierung in diesen Systemen eine Reihe einzigartiger Herausforderungen mit sich bringt, haben wir nach möglichen Lösungen für diese Herausforderungen gesucht, wie etwa Protokollaggregation, die Umwandlung von Protokollen in ein einheitliches Format und die Anreicherung von Protokollen mit Daten aus Drittquellen.


Die Protokollierung ist ein wichtiger Teil der Beobachtbarkeit. Indem Sie die in diesem Artikel beschriebenen Vorgehensweisen befolgen, können Sie sicherstellen, dass Ihre Protokolle effektiv verwaltet werden, sodass Sie Probleme beheben, Probleme identifizieren und Einblicke in das Verhalten Ihres Systems gewinnen können.


Und Sie können dies tun, während Sie Ihre Protokollierungskosten in Schach halten.


Auch hier veröffentlicht