Mikrometerverbindung für Java-Webanwendung

Mit dem Mikrometer werden JVM-Anwendungsmetriken erfasst und Sie können Daten in verschiedene Überwachungssysteme exportieren. In diesem Artikel werde ich Ihnen erklären, wie Sie Mikrometer für Spring-Webanwendungen anschließen und Daten nach Prometheus exportieren (ein guter Beitrag dazu ). Da meine Anwendung in Spring 3 geschrieben wurde, gibt es keine Möglichkeit, Spring Boot ohne ein Upgrade zu verwenden. Deshalb müssen Sie mit Ihren Händen arbeiten.

Zunächst benötigen wir die Prometheus-Abhängigkeiten, den Client selbst und das Servlet zum Exportieren von Daten:

pom.xml
<dependency> <groupId>io.prometheus</groupId> <artifactId>simpleclient</artifactId> <version>0.6.0</version> </dependency> <dependency> <groupId>io.prometheus</groupId> <artifactId>simpleclient_servlet</artifactId> <version>0.6.0</version> </dependency> 


Fügen Sie als Nächstes das Metlet-Exportservlet zu web.xml hinzu und geben Sie den Pfad an, in dem die Metriken verfügbar sein sollen:

 <servlet> <servlet-name>prometheus</servlet-name> <servlet-class>io.prometheus.client.exporter.MetricsServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>prometheus</servlet-name> <url-pattern>/metrics</url-pattern> </servlet-mapping> 

Vergessen Sie nicht, bei Bedarf eine Zugriffsrichtlinie hinzuzufügen:

 <http pattern="/metrics" security="none"/> 

Jetzt sind Statistiken bei localhost verfügbar: 8080 / Metriken, aber im Moment ist dies eine leere Seite. Damit Daten darin angezeigt werden, müssen Sie die Sammlung von Anwendungsmetriken registrieren.

So verwenden Sie Mikrometer: Fügen Sie Abhängigkeiten hinzu:

pom.xml
 <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-core</artifactId> <version>1.1.3</version> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>1.1.3</version> </dependency> 


Als Nächstes müssen Sie die erforderlichen Metrikkollektoren registrieren:

 @WebListener public class PrometheusInitListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { PrometheusMeterRegistry meterRegistry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT, CollectorRegistry.defaultRegistry, Clock.SYSTEM); new ClassLoaderMetrics().bindTo(meterRegistry); new JvmMemoryMetrics().bindTo(meterRegistry); new JvmGcMetrics().bindTo(meterRegistry); new ProcessorMetrics().bindTo(meterRegistry); new JvmThreadMetrics().bindTo(meterRegistry); } @Override public void contextDestroyed(ServletContextEvent sce) { } } 

Fertig, wenn wir jetzt zu localhost: 8080 /metrics wechseln, erhalten wir Daten zur JVM.

Es sieht ungefähr so ​​aus:



Prometheus verfügt über eine eigene Bibliothek für JVM-Statistiken von simpleclient_hotspot- Anwendungen, die durch Aufrufen von DefaultExports.initialize () konfiguriert wird. in der Initialisierungsmethode des Weblisteners.

So konfigurieren Sie die Metriksammlung in prometheus.yml: Fügen Sie ein Ziel hinzu:

 scrape_configs: - job_name: 'test-server' # Override the global default and scrape targets from this job every 5 seconds. scrape_interval: 5s metrics_path: /metrics static_configs: - targets: ['localhost:8080'] 

In Prometheus gesammelte Metriken können mit einer speziellen Sprache PromQL angezeigt werden. Der Vorteil von Micrometr ist, dass Sie nichts schreiben können, sondern vorgefertigte Plug-Ins für metrische Visualisierungssysteme verwenden.


Anzeigen von Anwendungsmetriken in Grafana, Plugin 4683

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


All Articles