Wir betrachten die Tools zur Überwachung verteilter Anwendungen



Wenn die Anwendung monolithisch war und plötzlich, sobald sie verteilt wurde, der Verfügbarkeitsberechnungsformel ein weiteres Unbekanntes hinzugefügt wurde - das Netzwerk. Aufgrund von Problemen mit Anrufen zwischen Komponenten fallen Anwendungen häufig herum und beginnen, die Beine zu ruckeln. Eine weitere Aufgabe besteht darin, die Gründe für die instabile Arbeit einer verteilten Anwendung herauszufinden. Ein zusätzliches Durcheinander in der Anwendungsstruktur wird durch bedingte Kubernetes verursacht, die nach eigenem Ermessen bedingte Pods willkürlich durch bedingte Knoten verteilen können. Ich schreibe "bedingt", weil es anstelle von Kubernetes Schwarm und Offenheit geben kann und andere und andere.

Ich meine, ohne normale Visualisierung kann es sehr schwierig sein, herauszufinden, wo die Temperatur ist. Unter dem Schnitt meine Vorstellung von den möglichen Fähigkeiten von Werkzeugen, mit denen eine Anwendungskarte gezeichnet und die Stellen zum Anwenden einer Wegerich hervorgehoben werden können, sowie eine Liste dieser Werkzeuge mit Screenshots.

Lassen Sie uns herausfinden, was auf der Anwendungsübersicht wünschenswert ist. Anschließend werden wir Überwachungsansätze in Betracht ziehen und dann zu bestimmten Anbietern übergehen.

Was ich auf der Anwendungsübersicht sehen möchte


Das erste, was mir in den Sinn kommt, ist die Fähigkeit, Anwendungsknoten nach bestimmten Kriterien zu gruppieren. Zum Beispiel sage ich, dass ich in dieser Gruppe ein Frontend habe und in diesem Backend oder hier habe ich Instanzen des Zahlungsdienstes und hier Versand. Nun und so weiter. Und die Personen, die für diesen oder jenen Teil verantwortlich sind, sehen sofort das vollständige Bild dessen, was in ihrem Verantwortungsbereich geschieht.

Die zweite besteht darin, die Anwendung nach Ebenen zu ordnen, die beispielsweise in Bezug auf Infrastruktur, Dienst, Dienstinstanzen usw. angezeigt werden können. Ebenso wie im ersten Fall hilft es, die Problemschicht zu identifizieren.

Drittens die Ausgänge und Eingänge dieser Knoten, einschließlich der Verbindungen zwischen ihnen. Auf diesen Zeichenfolgen möchte ich die goldenen Signale sehen, die Google in Site 6 Reliability Engineering in Kapitel 6 der Überwachung verteilter Systeme beschreibt. Ich habe bereits eine Übersetzung dieses Kapitels in einem Blog auf dem Medium veröffentlicht . Die Signale lauten wie folgt: Latenz, Verkehr (Durchsatz), Fehler (Fehlerrate) und Sättigung (Sättigung).

Vielleicht habe ich etwas nicht berücksichtigt. Bitte gehen Sie zu den Kommentaren, wenn Sie denken, dass andere wichtige Dinge fehlen.

Was sind die verschiedenen Überwachungsansätze


Ich weiß nicht, wie es sonst noch genannt werden kann, daher werde ich den Ansatzagenten und die agentenlose Überwachung anrufen. Jetzt werde ich hu von hu erklären.

Agentenüberwachung


Agentenüberwachung bedeutet die Notwendigkeit, spezielle Überwachungsagenten in einer kontrollierten Anwendung zu implementieren. Agenten binden die Trace-ID in die Paket-Header ein.

Dieser Typ umfasst APM-Überwachungslösungen und alle Lösungen, die durch Einfügen von SDKs in Anwendungscode eingebettet werden.

Vorteile: Hilft bei der Suche nach der Hauptursache des Problems. Die Header können den Pfad der Transaktionen genau verfolgen.

Nachteile: Möglicher Overhead aufgrund einer Änderung des Anwendungsalgorithmus, der Unfähigkeit, in ältere Anwendungen einzubetten, Unterstützung für einen begrenzten Satz von Programmiersprachen

Agentenlose Überwachung


Überwachung ohne Änderung der Anwendung. Dieser Typ umfasst Protokolle, Ablaufverfolgung auf Betriebssystemebene und Überwachung des Netzwerkverkehrs.

Vorteile: Die Überwachung der Abdeckung verschiedener Frameworks und Programmiersprachen kann funktionieren, wenn eine Trace-ID-Injection nicht möglich ist und eine kontrollierte Anwendung keinen Overhead verursacht.

Nachteile: Ohne eine Trace-ID kann es schwierig sein, den Kontext einer Geschäftstransaktion wiederherzustellen, den Datenverkehr nicht abzuhören, wenn die SSL-Kapselung konfiguriert ist und keine Schlüssel vorhanden sind.

Was Anbieter anbieten


Vendorov wurde auf der Basis von Agent / Agentless zerlegt. Sie können in den Kommentaren oder in einer persönlichen Nachricht nach anderen Merkmalen fragen. Die größte Erfahrung, die ich mit Instana, Appdynamics und New Relic gemacht habe. Wenn Sie sich das ansehen möchten, kann ich Ihnen für einen Zeitraum von mehr als 14 Tagen bei Demolizenzen helfen (wie sie standardmäßig auf ihren Websites angeboten werden).

Agentenüberwachung


Instana ist ein Tool zur Überwachung verteilter Systeme. Eine wichtige Funktion ist ein einzelner Agent für alle unterstützten Technologien und die Erfassung von Metriken einmal pro Sekunde.

Bild

Appdynamics ist eine bekannte Lösung für die APM-Überwachung. Kann eine Anwendungszuordnung basierend auf Aufrufen zwischen Anwendungskomponenten erstellen. Die Überwachung des Agenten ist erforderlich, um Anrufe zu überwachen.

Bild

New Relic ist ein direkter Konkurrent von Appdynamics. Der Hauptunterschied besteht darin, dass nur eine Überwachung aus der Cloud möglich ist (Agenten sind auch auf den Zielservern installiert). Erstellt eine Karte von Anwendungen basierend auf Aufrufen.

Bild

Dynatrace ist ein APM-Überwachungstool. Es unterstützt die Überwachung verschiedener Programmiersprachen und kann sowohl aus der Cloud als auch vor Ort arbeiten.

Bild

AWS X-Ray - Überwachen Sie auf AWS gehostete Anwendungen. Unterstützt die Visualisierung der Anwendungszuordnung und erfordert die Installation eines eigenen SDK.

Bild

OpenTracing ist eine API zur Instrumentierung verteilter Anwendungen. Viele kommerzielle und nichtkommerzielle Lösungen basieren auf dieser API.

Jaeger ist ein kostenloses Open Source-Handelstool. Erbaut auf Basis von OpenTracing.

Bild

Datadog APM ist ein kommerzielles Tool zur Überwachung verteilter Anwendungen. Es funktioniert auf Basis des genannten OpenTracing.

Bild

Agentenlose Überwachung


OpenZipkin ist ein kostenloses Tool zum Verfolgen verteilter Anwendungen. Ein Merkmal seiner Arbeit ist das Sammeln von Daten über Anrufe unter Verwendung der Instrumentierungsbibliotheken und das weitere Senden dieser Daten an den OpenZipkin-Sammler.

Bild

Linkerd ist ein kostenloses Tool zum Verfolgen von Anrufen innerhalb der Anwendung. Es ist ein Add-On für OpenZipkin und wird als Beiwagen-Container in der kubernetes-Infrastruktur installiert.

Bild

Envoy ist ein kostenloses Tool. Es fungiert als Proxy, an den Anrufdaten zwischen Anwendungskomponenten gesendet werden. Es gibt keine eigene Weboberfläche, Daten können über HTTP-GET-Anforderungen empfangen oder an statsd gesendet werden.

Netsil ist ein Tool zur Überwachung verteilter Anwendungen basierend auf dem Abhören des Datenverkehrs. Es funktioniert unabhängig von der Sprache, in der die Anwendung geschrieben ist.

Bild

Sagen Sie, wer was verwendet hat und welcher Eindruck übrig geblieben ist.

Source: https://habr.com/ru/post/de422931/


All Articles