MoSKitoAnleitungJava4 Min. Lesezeit

Bestehende Anwendungen mit dem MoSKito Javaagent überwachen

Eine Schritt-für-Schritt-Anleitung, wie Sie den MoSKito Javaagent an eine Web-App in Tomcat anbinden und ihre Producer in MoSKito Inspect ansehen – ganz ohne Änderungen am Quellcode der App.

In diesem Tutorial zeigen wir, wie Sie mit dem MoSKito Javaagent eine bestehende Webanwendung überwachen, ohne den Quellcode der App zu ändern. Wir zeigen, wie Sie den MoSKito Javaagent zu einer App hinzufügen, die im Servlet-Container Tomcat deployt ist, und wie Sie sich mit MoSKito Inspect mit dieser App verbinden.

Falls während dieses Tutorials Build-Probleme auftreten, beachten Sie bitte, dass wir die folgenden Tools verwenden:

  1. MoSKito 2.8.5
  2. Java 8
  3. Maven 3.3.9
  4. Git 2.15.1
  5. Tomcat 9.0.2
  6. MySQL Community Server 5.7.20

1) MoSKito Javaagent und MoSKito Inspect herunterladen

Laden Sie MoSKito 2.8.5 hier herunter und suchen Sie im heruntergeladenen Archiv den Ordner moskito-javaagent. Sie können diesen Ordner näher an Ihr Arbeitsverzeichnis verschieben. Notieren Sie sich den vollständigen Pfad zu moskito-javaagent-2.8.5.jar, Sie werden ihn später brauchen. Das ist der Javaagent, mit dem wir unsere App überwachen werden.

Um alle Daten, die aus unserer App erfasst werden, einsehen zu können, benötigen wir MoSKito Inspect als Standalone-Version. Suchen Sie im selben heruntergeladenen Archiv den Ordner moskito-inspect und starten Sie MoSKito Inspect mit dem mitgelieferten Tomcat-Server. Rufen Sie http://localhost:8088/moskito/ auf und vergewissern Sie sich, dass es funktioniert.

2) Die Demo-App einrichten

Sie können diesem Tutorial auch mit Ihrer eigenen App folgen, alle Schritte sind ziemlich ähnlich. Zu Demonstrationszwecken empfehlen wir Ihnen jedoch, zunächst unsere Demo-App zu verwenden.

Klonen Sie die Demo-App von GitHub

https://github.com/JPLeoRX/burgershop-spring-hibernate-stripped.git

Führen Sie maven clean install aus. Bitte beachten Sie, dass diese App die Frameworks Spring und Hibernate enthält, und richten Sie Ihre IDE entsprechend ein.

In diesem Projekt verwenden wir eine MySQL-Datenbank. Um die Demo-App auszuführen, legen Sie daher ein neues MySQL-Schema namens burgershop an und erstellen darin eine neue Tabelle wie folgt.

CREATE TABLE `ORDERS` (
  `ORDER_ID` int(11) NOT NULL AUTO_INCREMENT,
  `TOTAL_PRICE` int(11) NOT NULL,
  `ITEM_BREAD` varchar(45) NOT NULL,
  `ITEM_MEAT` varchar(45) NOT NULL,
  `ITEM_EXTRA` varchar(45) NOT NULL,
  PRIMARY KEY (`ORDER_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=latin1;

Deployen Sie die Web-App mit dem Tomcat-Server. Vergewissern Sie sich, dass alles korrekt läuft. Probieren Sie ein wenig herum, geben Sie ein paar Bestellungen auf und prüfen Sie, ob die Bestellungen in der Datenbank gespeichert werden. Sobald Sie sichergestellt haben, dass alles wie vorgesehen funktioniert, fahren Sie mit dem Hinzufügen des Javaagent fort.

3) MoSKito Javaagent zum Tomcat-Server der Web-App hinzufügen

Fügen Sie am Anfang der Datei catalina.sh Ihres Tomcat Folgendes hinzu

export JAVA_OPTS=" $JAVA_OPTS -javaagent:[full path to moskito javaagent]/moskito-javaagent-2.8.5.jar"
export JAVA_OPTS=" $JAVA_OPTS -DapplicationPackages=org.moskito.demo.burgershop.burgershopstripped"

Damit geben Sie den Pfad zur Javaagent-JAR sowie die Packages Ihrer App an, die überwacht werden sollen.

In unserer Demo-App verwenden wir nur ein Root-Package, Sie können aber auch mehrere Packages angeben, etwa so: „-DapplicationPackages=com.myPackage1,com.myPackage2“.

Standardmäßig verwendet der MoSKito Javaagent Port 9451 für die Verbindung mit MoSKito Inspect. Sie können ihn jedoch ändern, entweder über die Property moskitoBackendPort in der Datei moskito-javaagent/configuration/moskito-javaagent-config.json oder indem Sie der catalina.sh des Servers Ihrer Web-App einen weiteren Befehl hinzufügen:

export JAVA_OPTS=" $JAVA_OPTS -DmoskitoAgentPort=[your port]"

4) Starten und mit MoSKito Inspect verbinden

Nachdem alles eingerichtet ist, können wir unsere Demo-App testen. Geben Sie ein paar Bestellungen auf, öffnen Sie MoSKito Inspect, verbinden Sie sich mit localhost auf Port 9451 und wechseln Sie zum Reiter Producers.

Unter Producers-Service sollten Sie Producer mit den Namen OrderController, ShopController und ShopServiceImpl sehen. Das sind die Producer aus unserer App. Standardmäßig werden alle Klassen überwacht, deren Name DAO, Repository, Service, Manager oder Controller enthält. Eigene Namensmuster für Klassen, die standardmäßig überwacht werden sollen, können Sie in der Datei moskito-javaagent/configuration/moskito-javaagent-config.json unter der Property @monitoringDefaultClassConfig festlegen.

Außerdem sollten Sie den Producer SQLQueries sehen. Dieser Producer erfasst alle Interaktionen zwischen unserer App und der Datenbank. Wir können die Insert-Queries beobachten, mit denen unsere Bestellungen in der Datenbank gespeichert werden.

Das war’s! Wir haben den MoSKito Javaagent verwendet und unserer bestehenden Web-App erfolgreich die Kernfunktionen des MoSKito-Monitorings hinzugefügt, ohne den Quellcode der App zu verändern.

Haben Sie ein System, das Sie ausbremst, oder eine Idee, die bisher niemand günstig genug bauen konnte?

Lassen Sie uns reden. 30 Minuten, ohne Pitch-Deck.

Worum geht es?