{"id":198,"date":"2024-02-06T23:42:54","date_gmt":"2024-02-06T22:42:54","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=198"},"modified":"2024-02-19T23:44:00","modified_gmt":"2024-02-19T22:44:00","slug":"effizientes-monitoring-micrometer-in-spring-boot-anwendungen","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=198","title":{"rendered":"Effizientes Monitoring: Micrometer in Spring-Boot-Anwendungen"},"content":{"rendered":"\n<p>In der Welt der Softwareentwicklung ist die \u00dcberwachung und das Monitoring von Anwendungen von entscheidender Bedeutung, um die Leistung zu optimieren, Engp\u00e4sse zu identifizieren und Probleme proaktiv anzugehen. Spring Boot, ein beliebtes Framework f\u00fcr die Entwicklung von Java-Anwendungen, bietet eine leistungsstarke L\u00f6sung f\u00fcr das Monitoring von Anwendungen durch die Integration von Micrometer. In diesem Artikel werden wir uns eingehend mit Micrometer in Spring-Boot-Anwendungen befassen, seine Funktionen erkunden und wie es Entwicklern erm\u00f6glicht, umfassende Einblicke in die Leistung ihrer Anwendungen zu erhalten.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Was ist Micrometer?<\/h2>\n\n\n\n<p>Micrometer ist eine Metrikenbibliothek f\u00fcr Java-Anwendungen, die speziell f\u00fcr das Sammeln von Metriken und das \u00dcberwachen von Anwendungsleistungen entwickelt wurde. Es bietet eine abstrakte API, die die Integration mit verschiedenen Metrikanbietern erm\u00f6glicht, darunter Prometheus, Grafana, InfluxDB, Datadog und viele andere. Spring Boot hat Micrometer als Standard-Metrikenbibliothek ausgew\u00e4hlt, um die Entwicklung von \u00dcberwachungsfunktionen in Anwendungen zu erleichtern.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Integration von Micrometer in Spring Boot<\/h2>\n\n\n\n<p>Die Integration von Micrometer in eine Spring-Boot-Anwendung ist denkbar einfach. Spring Boot bietet bereits eine automatische Konfiguration f\u00fcr Micrometer, was bedeutet, dass keine zus\u00e4tzlichen Abh\u00e4ngigkeiten oder umfangreiche Konfigurationsdateien erforderlich sind. Standardm\u00e4\u00dfig werden grundlegende Metriken wie CPU-Auslastung, Speicherverbrauch und Anforderungsdauer automatisch erfasst.<\/p>\n\n\n\n<p>Um Micrometer in einer Spring-Boot-Anwendung zu verwenden, m\u00fcssen Sie sicherstellen, dass die entsprechenden Abh\u00e4ngigkeiten in Ihrer <code>pom.xml<\/code>-Datei vorhanden sind. Dazu geh\u00f6ren normalerweise <code>spring-boot-starter-actuator<\/code> und <code>micrometer-registry-xxx<\/code>, wobei &#8222;xxx&#8220; f\u00fcr den gew\u00fcnschten Metrikanbieter steht, zum Beispiel <code>micrometer-registry-prometheus<\/code> f\u00fcr die Integration mit Prometheus.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>org.springframework.boot<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>spring-boot-starter-actuator<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>io.micrometer<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>micrometer-registry-prometheus<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Nach dem Hinzuf\u00fcgen dieser Abh\u00e4ngigkeiten k\u00f6nnen Sie auf eine Vielzahl von Metriken zugreifen, indem Sie einfach die Endpunkte des Spring-Boot-Actuators aufrufen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Grundlegende Metriken mit Micrometer sammeln<\/h2>\n\n\n\n<p>Micrometer erm\u00f6glicht das einfache Sammeln von grundlegenden Metriken, die Ihnen Einblick in die Leistung Ihrer Anwendung geben. Einige der wichtigsten Metriken, die standardm\u00e4\u00dfig erfasst werden, sind:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>JVM-Speichernutzung:<\/strong> \u00dcberwacht den Speicherverbrauch der Java Virtual Machine (JVM).<\/li>\n\n\n\n<li><strong>CPU-Auslastung:<\/strong> Zeigt die CPU-Auslastung Ihrer Anwendung an.<\/li>\n\n\n\n<li><strong>Anforderungsdauer:<\/strong> Misst die Zeit, die f\u00fcr die Verarbeitung von HTTP-Anforderungen ben\u00f6tigt wird.<\/li>\n\n\n\n<li><strong>Datenbankzugriffe:<\/strong> Z\u00e4hlt die Anzahl der Datenbankzugriffe und deren Dauer.<\/li>\n<\/ul>\n\n\n\n<p>Sie k\u00f6nnen diese Metriken \u00fcber den <code>\/actuator\/metrics<\/code>-Endpunkt abrufen und in verschiedenen Formaten wie JSON oder Prometheus-Text exportieren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Benutzerdefinierte Metriken erstellen<\/h2>\n\n\n\n<p>Neben den standardm\u00e4\u00dfig erfassten Metriken erm\u00f6glicht Micrometer die einfache Erstellung benutzerdefinierter Metriken. Dies ist besonders n\u00fctzlich, um spezifische Aspekte Ihrer Anwendung zu \u00fcberwachen. Um benutzerdefinierte Metriken zu erstellen, m\u00fcssen Sie eine <code>MeterRegistry<\/code>-Instanz injizieren und dann Metriken wie Counter, Timer oder Gauge erstellen.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">@Autowired\n<span class=\"hljs-keyword\">private<\/span> MeterRegistry meterRegistry;\n\n<span class=\"hljs-comment\">\/\/ Beispiel f\u00fcr die Erstellung eines Counters<\/span>\nCounter customCounter = meterRegistry.counter(<span class=\"hljs-string\">\"custom.counter\"<\/span>);\n\n<span class=\"hljs-comment\">\/\/ Beispiel f\u00fcr die Erstellung eines Timers<\/span>\nTimer customTimer = meterRegistry.timer(<span class=\"hljs-string\">\"custom.timer\"<\/span>);\n\n<span class=\"hljs-comment\">\/\/ Beispiel f\u00fcr die Erstellung eines Gauges<\/span>\nGauge customGauge = Gauge.builder(<span class=\"hljs-string\">\"custom.gauge\"<\/span>, () -&gt; <span class=\"hljs-number\">42<\/span>).register(meterRegistry);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Diese benutzerdefinierten Metriken k\u00f6nnen dann genauso einfach wie die standardm\u00e4\u00dfig erfassten Metriken \u00fcber den <code>\/actuator\/metrics<\/code>-Endpunkt abgerufen werden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Integration mit Prometheus und Grafana<\/h2>\n\n\n\n<p>Eine der h\u00e4ufigsten Kombinationen f\u00fcr das Monitoring von Spring-Boot-Anwendungen besteht aus der Verwendung von Micrometer f\u00fcr die Metriken und Prometheus als Datenbank. Prometheus ist ein leistungsstarker Open-Source-Metriken- und Alarmierungsdienst, der perfekt mit Micrometer integriert werden kann.<\/p>\n\n\n\n<p>Die Konfiguration f\u00fcr die Integration mit Prometheus ist ebenfalls einfach. F\u00fcgen Sie einfach die entsprechende Abh\u00e4ngigkeit in Ihrer <code>pom.xml<\/code>-Datei hinzu und konfigurieren Sie die Endpunkte f\u00fcr Prometheus in Ihrer <code>application.properties<\/code>-Datei.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>io.micrometer<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>micrometer-registry-prometheus<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">management.endpoints.web.exposure.<span class=\"hljs-keyword\">include<\/span>=*\nmanagement.endpoint.metrics.enabled=<span class=\"hljs-keyword\">true<\/span>\nmanagement.metrics.export.prometheus.enabled=<span class=\"hljs-keyword\">true<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Nach dieser Konfiguration k\u00f6nnen Sie Prometheus verwenden, um Metriken zu speichern, abzufragen und in Grafana zu visualisieren. Grafana bietet eine ansprechende Oberfl\u00e4che zur Erstellung von Dashboards, auf denen Sie die Leistung Ihrer Anwendung in Echtzeit \u00fcberwachen k\u00f6nnen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">6. Schlussbetrachtung<\/h2>\n\n\n\n<p>Die Integration von Micrometer in Spring-Boot-Anwendungen stellt sicher, dass Entwickler leicht auf aussagekr\u00e4ftige Metriken zugreifen k\u00f6nnen, um die Leistung ihrer Anwendungen zu \u00fcberwachen und zu verbessern. Die M\u00f6glichkeit, sowohl standardm\u00e4\u00dfige als auch benutzerdefinierte Metriken zu erfassen, macht Micrometer zu einem m\u00e4chtigen Werkzeug f\u00fcr Entwickler, um ihre Anwendungen effizient zu optimieren. In Kombination mit Prometheus und Grafana bietet Micrometer eine robuste L\u00f6sung f\u00fcr das Monitoring von Java-Anwendungen. Durch die regelm\u00e4\u00dfige Analyse von Metriken k\u00f6nnen Entwickler potenzielle Engp\u00e4sse fr\u00fchzeitig erkennen, die Skalierbarkeit verbessern und insgesamt eine reibungslosere Benutzererfahrung gew\u00e4hrleisten.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In der Welt der Softwareentwicklung ist die \u00dcberwachung und das Monitoring von Anwendungen von entscheidender Bedeutung, um die Leistung zu optimieren, Engp\u00e4sse zu identifizieren und Probleme proaktiv anzugehen. Spring Boot, ein beliebtes Framework f\u00fcr die Entwicklung von Java-Anwendungen, bietet eine leistungsstarke L\u00f6sung f\u00fcr das Monitoring von Anwendungen durch die Integration von Micrometer. In diesem Artikel [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-198","post","type-post","status-publish","format-standard","hentry","category-spring"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/198","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=198"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/198\/revisions"}],"predecessor-version":[{"id":199,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/198\/revisions\/199"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=198"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=198"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}