Ich verwende akka
(Java) in Kombination mit . Ich möchte Metriken mit kamon
überwachen und sie auf einem grafana
Dashboard zeigen. Ich habe kamon core
kamon statsd
zu den Abhängigkeiten eingeschlossen und ein application.conf
mit dem korrekten Hafen und dem hostname für statsd
verursacht. Es gibt keine klaren Beispiele oder Tutorials, die den Stack zeigen, den ich verwende. Ist es möglich, die akka
Messwerte unter Verwendung von spring boo
t, java
, akka
und kamon
als Krieg in tomcat
eingesetzt zu messen?Kamon mit Frühling und Akka
0
A
Antwort
3
Hier ist ein einfaches Beispiel
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>kamon.annotation</groupId>
<artifactId>kamon-spring-boot</artifactId>
<version>0.1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>io.kamon</groupId>
<artifactId>kamon-core_2.11</artifactId>
<version>0.6.2</version>
</dependency>
<dependency>
<groupId>io.kamon</groupId>
<artifactId>kamon-annotation_2.11</artifactId>
<version>0.6.2</version>
</dependency>
<dependency>
<groupId>io.kamon</groupId>
<artifactId>kamon-akka_2.11</artifactId>
<version>0.6.2</version>
</dependency>
<dependency>
<groupId>io.kamon</groupId>
<artifactId>kamon-log-reporter_2.11</artifactId>
<version>0.6.2</version>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>io.kamon</id>
<url>http://snapshots.kamon.io</url>
</repository>
</repositories>
zwei Schauspieler ein Ping-Pong-Spiel
import akka.actor.UntypedActor;
class Pinger extends UntypedActor {
static final class PingMessage {}
public void onReceive(Object message) throws Exception {
if (message instanceof Ponger.PongMessage) getSender().tell(new PingMessage(), getSelf());
else unhandled(message);
}
}
import akka.actor.UntypedActor;
class Ponger extends UntypedActor {
static final class PongMessage {}
public void onReceive(Object message) throws Exception {
if (message instanceof Pinger.PingMessage) getSender().tell(new PongMessage(), getSelf());
else unhandled(message);
}
spielen
}
eine Federkomponente
import akka.actor.ActorRef;
import akka.actor.ActorSystem;
import akka.actor.Props;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class PingPong {
@PostConstruct
public void initialize() {
final ActorSystem system = ActorSystem.create("kamon-spring-boot-actor-system");
final ActorRef pinger = system.actorOf(Props.create(Pinger.class), "pinger");
final ActorRef ponger = system.actorOf(Props.create(Ponger.class), "ponger");
pinger.tell(new Ponger.PongMessage(), ponger);
}
}
auch einen einfachen Controller, um zu zeigen, machen, wie einfach unter Verwendung des kamon-annotation Modul einige andere Metriken
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@Controller
@EnableAutoConfiguration
@RequestMapping("/kamon")
@EnableKamon
public class KamonController {
@RequestMapping("/counter")
@ResponseBody
@Count(name = "awesomeCounter")
public String counter() { return "count!!!"; }
}
die Anwendung Haupt
sammelnimport kamon.akka.pingpong.PingPong;
import kamon.annotation.KamonController;
import org.springframework.boot.SpringApplication;
public class KamonSpringApplication {
public static void main(String... args) {
Kamon.start();
SpringApplication.run(KamonController.class, args);
}
}
zu Testzwecken
application.conf
kamon {
metric {
filters {
trace.includes = [ "**" ]
akka-actor.includes = [ "**" ]
akka-actor.excludes = ["*/system/**", "*/user/IO-**" ]
akka-dispatcher.includes = [ "**" ]
akka-dispatcher.excludes = [ ]
}
}
}
bauen die Anwendung vereinfacht und laufen
mvn package && java -javaagent:/path/to/aspectjweaver.jar -jar target/kamon-spring-boot-0.1.0.jar
sollten wir so etwas wie dieses
+--------------------------------------------------------------------------------------------------+
| |
| Actor: kamon-spring-boot-actor-system/user/pinger |
| |
| Processing Time (nanoseconds) Time in Mailbox (nanoseconds) Mailbox Size |
| Msg Count: 3393358 Msg Count: 3393405 Min: 0 |
| Min: 237 Min: 178 Avg.: 0.0 |
| 50th Perc: 672 50th Perc: 756 Max: 2 |
| 90th Perc: 988 90th Perc: 1264 |
| 95th Perc: 1088 95th Perc: 1368 |
| 99th Perc: 1520 99th Perc: 1848 Error Count: 0 |
| 99.9th Perc: 20480 99.9th Perc: 17920 |
| Max: 16646144 Max: 34865152 |
| |
+--------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------+
| |
| Actor: kamon-spring-boot-actor-system/user/ponger |
| |
| Processing Time (nanoseconds) Time in Mailbox (nanoseconds) Mailbox Size |
| Msg Count: 3739208 Msg Count: 3739161 Min: 0 |
| Min: 272 Min: 172 Avg.: 0.0 |
| 50th Perc: 672 50th Perc: 732 Max: 2 |
| 90th Perc: 976 90th Perc: 1232 |
| 95th Perc: 1064 95th Perc: 1344 |
| 99th Perc: 1360 99th Perc: 1656 Error Count: 0 |
| 99.9th Perc: 10496 99.9th Perc: 14272 |
| Max: 7766016 Max: 30277632 |
| |
+--------------------------------------------------------------------------------------------------+
bekommen und wenn wir zwei Locken tun
http://localhost:8080/kamon/counter
http://localhost:8080/kamon/counter
+--------------------------------------------------------------------------------------------------+
| |
| Counters |
| ------------- |
| awesomeCounter => 2 |
| |
| |
| Histograms |
| -------------- |
| |
| MinMaxCounters |
| ----------------- |
| |
| Gauges |
| ---------- |
| |
+--------------------------------------------------------------------------------------------------+
link zum vollständigen Beispiel.
Hoffe, das kann Ihnen helfen.
Verwandte Themen
- 1. Akka Schauspieler Tracing in nicht in Kamon arbeiten
- 2. Akka Camel und Spring
- 3. akka-http und JsonEntityStreamingSupport
- 4. Akka und ReactiveMongo
- 5. Akka- und Spielserver-Architektur
- 6. Scala Akka und Protokollpuffer
- 7. Akka und Kuchen Muster
- 8. akka-http und JWT
- 9. Akka Remoting und Heroku
- 10. Akka Actors und Scheduler
- 11. Akka Actor "fragen" und "Wartet" mit Timeout
- 12. Akka mit Remote-Actors und dauerhaften Postfächern
- 13. Akka FSM Schauspieler mit stashing und unstashing
- 14. Arbeiten mit Objekt mit Frühling und Winterschlaf
- 15. Authentifizierung mit Akka-Http
- 16. Frühling Sicherheit und eckigen
- 17. Akka Schauspieler, Futures und Schließungen
- 18. Akka Clustering und große Payloads
- 19. Wie kann man Kamon Logging für Tests deaktivieren?
- 20. AKKA Actor und DataBase Operation
- 21. Frühling und OJDBC Fahrer
- 22. Akka Stream-TCP + Akka Stream-Kafka Produzent nicht zu stoppen keine Nachrichten zu veröffentlichen und nicht fehler ing out
- 23. akka Ströme und -auslässe Mismatch
- 24. Akka Streams und Java 7
- 25. Akka: Benutzerdefinierte akka Überwachung Strategien nicht mit Java
- 26. Frühling Stiefel mit Apache CXF und CDI
- 27. JWT Authentifizierung mit Winkel und Frühling
- 28. Mixing XML und Java Config mit Frühling
- 29. URL-Mapping mit Glassfish und Frühling
- 30. Mocking Frühling + Hibernate mockmvc und Mockito mit
Das hat funktioniert, danke! – Erik