WildFly undersystem til RHQ Metrics
Til RHQ-Metrics er jeg begyndt at skrive et undersystem til WildFly 8, der er i stand til at indsamle metrics inde i WildFly og derefter sende dem med regelmæssige intervaller (i øjeblikket hvert minut) til en RHQ-Metrics-server.
Den næste graf er en visualisering med Grafana af resultatet, da denne afsender kørte i 1,5 dage i træk:
Grafer over JVM-hukommelsesbrugWildFly-hukommelsesbrug
(Det er interessant at se, hvordan JVM'en finjusterer sit hukommelsesbehov over tid og bruger mindre og mindre hukommelse til denne konstante arbejdsbyrde).
Følgende er en visualisering af opsætningen:
Opsætning
Afsenderen kører som et undersystem inde i WildFly og læser metrics fra WildFly management-api'et. De indsamlede metrics bliver derefter skubbet via REST til RHQ-Metrics. Det er selvfølgelig muligt at sende dem til en RHQ-Metrics server, der kører på en separat vært.
Konfigurationen af undersystemet ser således ud:
<subsystem xmlns="urn:org.rhq.metrics:wildflySender:1.0"> <rhqm-server name="localhost" enabled="true" port="8080" token="0x-deaf-beef"/> <metric name="non-heap" path="/core-service=platform-mbean/type=memory" attribute="non-heap-memory-usage"/> <metric name="thread-count" path="/core-service=platform-mbean/type=threading" attribute="thread-count"/> </subsystem>
Som du kan se, kan stien til DMR-ressourcen og navnet på den attribut, der skal overvåges som metrik, angives i konfigurationen.
Implementeringen er stadig grundlæggende i øjeblikket - du kan finde kildekoden i RHQ-Metrics repository på GitHub. Bidrag er meget velkomne.
Heiko Braun og Harald Pehl arbejder i øjeblikket på at optimere planlægningen med individuelle intervaller og eventuel batching af anmodninger om administrerede servere i et domæne.
Mange tak går til Emmanuel Hugonnet, Kabir Khan og især Tom Cerar for deres hjælp til at få mig i gang med at skrive et undersystem, hvilket var ret besværligt for mig. Parserne, objektmodellen og XML havde en stor tendens til at være uenige med hinanden!