Kamon ist ein Framework zur Überwachung des Zustands und der Leistung von Anwendungen, die auf akka basieren, dem beliebten Actor-System-Framework, das häufig mit Scala verwendet wird. Es liefert gute Schnellindikatoren, ermöglicht aber auch eine tiefgreifende Analyse.
Rückverfolgung
Kamon sammelt nicht nur lokale Metriken pro Akteur (z.B. Verarbeitungszeiten von Nachrichten und Größe der Mailbox), sondern überwacht auch den Nachrichtenfluss zwischen den Akteuren. Im Wesentlichen führt Kamon einen TraceContext ein, der über asynchrone Aufrufe hinweg beibehalten wird: Es verwendet AOP, um den Kontext zusammen mit den Nachrichten zu übergeben. Keiner Ihrer eigenen Codes muss geändert werden. Dank der praktischen Integrationsmodule für Spray/Play kann ein TraceContext automatisch gestartet werden, wenn eine HTTP-Anfrage eingeht. Zumindest kann dies leicht mit dem Logback-Konverter kombiniert werden, der mit Kamon ausgeliefert wird: Die einfache Protokollierung des Tokens ist von großem Nutzen, und zwar von Anfang an.
Dashboarding
Kamon wird nicht mit einem Dashboard ausgeliefert (obwohl einige Arbeiten in dieser Richtung im Gange sind). Stattdessen bietet es 3 'Backends', an die Sie die Daten senden können (4, wenn Sie das 'LogReporter'-Backend mitzählen, das lediglich einige Statistiken in Slf4j ausgibt): 2 Online-Dienste (NewRelic und DataDog), und statsd (von Etsy). Die Einrichtung von statsd mag mühsam erscheinen, da es zusätzliche Komponenten wie Grafana/Graphite benötigt, um die Statistiken tatsächlich zu durchsuchen. Glücklicherweise bietet Kamon einen korrekt eingerichteten Docker-Container, mit dem Sie schnell loslegen können. Leider sind wir auf einige Probleme mit dem in die Docker Hub Registry hochgeladenen Image gestoßen, aber indem wir es selbst aus der Definition auf github erstellt haben, wurden die meisten dieser Probleme gelöst.
Implementierung
Wir fanden den Quellcode von Kamon klar und auf den Punkt gebracht. Obwohl wir generell kein großer Fan von AspectJ sind, scheint die Technik für diesen Zweck recht gut geeignet zu sein. Es kann natürlich gefährlich sein, einen zentralen Teil Ihres Stacks auf diese Weise zu verändern, insbesondere im Hinblick auf die Leistung. Solange Sie die schwereren Analysen nicht aktivieren (die standardmäßig ausgeschaltet und deutlich gekennzeichnet sind), scheint dies ziemlich leicht zu sein - aber das können natürlich nur echte Tests zeigen.
Erste Schritte
Die meisten Kamon-Module werden durch Hinzufügen ihrer jeweiligen Akka-Erweiterung aktiviert. Wir haben herausgefunden, dass der schnellste Weg zum Einstieg darin besteht:
- Fügen Sie die Kamon-Abhängigkeiten zu Ihrem Projekt hinzu, wie im offiziellen Getting Started Guide beschrieben
- Aktivieren Sie die Erweiterungen Metrics und LogReporter in Ihrer akka-Konfiguration
- Starten Sie Ihre Anwendung mit aktiviertem AspectJ-Laufzeit-Webing. Wie Sie dies tun, hängt davon ab, wie Sie Ihre Anwendung starten. Wir haben das Plugin sbt-aspectj verwendet.
Um AspectJ Weaving zu aktivieren, müssen Sie ein wenig herumprobieren, aber das Hinzufügen des LogReporters sollte Ihnen eine schnelle Rückmeldung geben, ob Sie erfolgreich waren: Er sollte damit beginnen, regelmäßig Metrikinformationen zu protokollieren. Die nächsten Schritte sind:
- Aktivieren von Spray oder Play Plugins
- Hinzufügen des Trace-Tokens zu Ihrer Protokollierung
- Aktivieren anderer Backends (z.B. statsd)
- Hinzufügen von anwendungsspezifischen Metriken und Trace-Punkten
Fazit
Kamon sieht wie ein gesundes, nützliches Tool aus, das nicht nur ein großes Potenzial hat, sondern auch einige großartige Quick Wins bietet. Die verfügbare Dokumentation ist von großer Qualität, aber es gibt einige Teile des Systems, die nicht so gut abgedeckt sind. Glücklicherweise ist der Quellcode sehr zugänglich. Es ist klar, dass das Kamon-Projekt noch nicht sehr populär ist, wenn man sich einige der Ecken und Kanten ansieht, auf die wir gestoßen sind. Diese scheinen jedoch meist oberflächlich zu sein: Die Kernideen und die Implementierung scheinen solide zu sein. Wir empfehlen Ihnen, einen Blick darauf zu werfen.
Remco Beckers Arnout Engelen
Verfasst von

Arnout Engelen
Contact



