{"id":262,"date":"2024-03-04T20:25:51","date_gmt":"2024-03-04T19:25:51","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=262"},"modified":"2024-03-08T20:27:54","modified_gmt":"2024-03-08T19:27:54","slug":"spring-boot-actuator-ueberwachung-und-verwaltung-von-anwendungen","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=262","title":{"rendered":"Spring Boot Actuator: \u00dcberwachung und Verwaltung von Anwendungen"},"content":{"rendered":"\n<p>Spring Boot ist ein \u00e4u\u00dferst beliebtes Framework f\u00fcr die Entwicklung von Java-Anwendungen, das auf dem bew\u00e4hrten Spring-Framework aufbaut. Es erleichtert die Erstellung von robusten, skalierbaren und einfach zu wartenden Anwendungen. Ein entscheidendes Feature von Spring Boot ist der Spring Boot Actuator, der die \u00dcberwachung und Verwaltung von Anwendungen erm\u00f6glicht.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Einf\u00fchrung in den Spring Boot Actuator<\/h2>\n\n\n\n<p>Der Spring Boot Actuator ist eine Sammlung von Produktionsbereitschaftsfunktionen, die in Spring Boot-Anwendungen integriert sind. Mit diesem Modul k\u00f6nnen Entwickler verschiedene Aspekte ihrer Anwendungen \u00fcberwachen und verwalten, was die Identifizierung von Problemen und die Optimierung der Leistung erheblich erleichtert.<\/p>\n\n\n\n<p>Die Hauptziele des Spring Boot Actuator sind:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Betriebsbereitschaft (Readiness):<\/strong> \u00dcberpr\u00fcfen, ob die Anwendung betriebsbereit ist, bevor sie Live-Traffic verarbeitet.<\/li>\n\n\n\n<li><strong>Lebensf\u00e4higkeit (Liveness):<\/strong> \u00dcberwachen, ob die Anwendung aktiv ist und ordnungsgem\u00e4\u00df funktioniert.<\/li>\n\n\n\n<li><strong>Dynamische Eigenschaften:<\/strong> Erm\u00f6glichen Sie das Abrufen von Anwendungseigenschaften zur Laufzeit.<\/li>\n\n\n\n<li><strong>Anwendungsverwaltung:<\/strong> Bereitstellung von Endpunkten f\u00fcr die Verwaltung von Anwendungen, z. B. das Neuladen von Konfigurationen oder das Anzeigen von Thread-Stack-Traces.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Aktivierung des Spring Boot Actuator<\/h2>\n\n\n\n<p>Die Integration des Spring Boot Actuator in eine Anwendung ist denkbar einfach. Es gen\u00fcgt, die entsprechenden Abh\u00e4ngigkeiten in das Projekt einzuf\u00fcgen. In der <code>pom.xml<\/code>-Datei f\u00fcr Maven-Projekte sieht das zum Beispiel so aus:<\/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><\/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>Nachdem die Abh\u00e4ngigkeit hinzugef\u00fcgt wurde, sind die Actuator-Endpunkte standardm\u00e4\u00dfig aktiviert. Diese Endpunkte bieten eine F\u00fclle von Informationen \u00fcber den Zustand der Anwendung.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wichtige Actuator-Endpunkte<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. <code>\/actuator\/health<\/code><\/h3>\n\n\n\n<p>Der <code>\/actuator\/health<\/code>-Endpunkt gibt Auskunft \u00fcber den Gesundheitszustand der Anwendung. Er liefert Informationen dar\u00fcber, ob die Anwendung betriebsbereit und lebensf\u00e4hig ist. Dies ist besonders n\u00fctzlich, um sicherzustellen, dass die Anwendung ordnungsgem\u00e4\u00df funktioniert, bevor sie Live-Traffic verarbeitet.<\/p>\n\n\n\n<p>Beispielanfrage:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">curl http:<span class=\"hljs-comment\">\/\/localhost:8080\/actuator\/health<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">2. <code>\/actuator\/info<\/code><\/h3>\n\n\n\n<p>Der <code>\/actuator\/info<\/code>-Endpunkt erm\u00f6glicht es, benutzerdefinierte Informationen zur Anwendung hinzuzuf\u00fcgen. Entwickler k\u00f6nnen hier Kontextinformationen oder Versionsinformationen bereitstellen, die dann abgerufen werden k\u00f6nnen.<\/p>\n\n\n\n<p>Beispielanfrage:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">curl http:<span class=\"hljs-comment\">\/\/localhost:8080\/actuator\/info<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">3. <code>\/actuator\/metrics<\/code><\/h3>\n\n\n\n<p>Der <code>\/actuator\/metrics<\/code>-Endpunkt liefert eine Vielzahl von Metriken zur \u00dcberwachung der Anwendungsleistung. Dies umfasst Informationen zu CPU-Auslastung, Speichernutzung, Anfragen pro Sekunde und vielen anderen wichtigen Metriken.<\/p>\n\n\n\n<p>Beispielanfrage:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">curl http:<span class=\"hljs-comment\">\/\/localhost:8080\/actuator\/metrics<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">4. <code>\/actuator\/env<\/code><\/h3>\n\n\n\n<p>Der <code>\/actuator\/env<\/code>-Endpunkt erm\u00f6glicht den Zugriff auf Umgebungsinformationen, einschlie\u00dflich Konfigurationseigenschaften und Umgebungsvariablen.<\/p>\n\n\n\n<p>Beispielanfrage:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">curl http:<span class=\"hljs-comment\">\/\/localhost:8080\/actuator\/env<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">5. <code>\/actuator\/beans<\/code><\/h3>\n\n\n\n<p>Der <code>\/actuator\/beans<\/code>-Endpunkt listet alle im Spring-Anwendungskontext verf\u00fcgbaren Beans auf. Dies ist besonders hilfreich, um einen \u00dcberblick \u00fcber die im Kontext vorhandenen Beans zu erhalten.<\/p>\n\n\n\n<p>Beispielanfrage:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">curl http:<span class=\"hljs-comment\">\/\/localhost:8080\/actuator\/beans<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Anpassung von Actuator-Endpunkten<\/h2>\n\n\n\n<p>Obwohl die standardm\u00e4\u00dfigen Actuator-Endpunkte bereits viele n\u00fctzliche Informationen bereitstellen, gibt es Situationen, in denen Entwickler die Endpunkte anpassen oder sogar eigene hinzuf\u00fcgen m\u00f6chten. Spring Boot erm\u00f6glicht diese Anpassungen durch Konfiguration.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Anpassung von Endpunkt-Pfaden<\/h3>\n\n\n\n<p>Die Pfade der Actuator-Endpunkte k\u00f6nnen mithilfe der <code>application.properties<\/code>&#8211; oder <code>application.yml<\/code>-Datei konfiguriert werden. Zum Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">management.endpoints.web.base-path=\/custom\nmanagement.endpoints.web.path-mapping.health=custom-health<\/code><\/span><\/pre>\n\n\n<p>Mit diesen Konfigurationen werden die Pfade zu den Health-Endpunkten zu <code>\/custom\/custom-health<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Anpassung von Endpunkt-Sicherheit<\/h3>\n\n\n\n<p>Die Sicherheit der Actuator-Endpunkte kann ebenfalls konfiguriert werden. Standardm\u00e4\u00dfig sind die Endpunkte gesch\u00fctzt und erfordern eine Authentifizierung. Dies kann durch Hinzuf\u00fcgen von Benutzern und Berechtigungen in der <code>application.properties<\/code>&#8211; oder <code>application.yml<\/code>-Datei erfolgen.<\/p>\n\n\n\n<p>Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">spring.security.user.name=admin\nspring.security.user.password=adminpassword\nmanagement.endpoint.health.show-details=always<\/code><\/span><\/pre>\n\n\n<p>In diesem Beispiel wird ein Benutzer mit dem Namen &#8222;admin&#8220; und dem Passwort &#8222;adminpassword&#8220; hinzugef\u00fcgt, und es wird festgelegt, dass die Details des Health-Endpunkts immer angezeigt werden sollen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Hinzuf\u00fcgen benutzerdefinierter Endpunkte<\/h3>\n\n\n\n<p>Entwickler k\u00f6nnen auch benutzerdefinierte Endpunkte erstellen und sie dem Actuator hinzuf\u00fcgen. Dies wird durch das Implementieren der <code>Endpoint<\/code>-Schnittstelle erreicht.<\/p>\n\n\n\n<p>Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">import<\/span> <span class=\"hljs-selector-tag\">org<\/span><span class=\"hljs-selector-class\">.springframework<\/span><span class=\"hljs-selector-class\">.boot<\/span><span class=\"hljs-selector-class\">.actuate<\/span><span class=\"hljs-selector-class\">.endpoint<\/span><span class=\"hljs-selector-class\">.annotation<\/span><span class=\"hljs-selector-class\">.Endpoint<\/span>;\n<span class=\"hljs-selector-tag\">import<\/span> <span class=\"hljs-selector-tag\">org<\/span><span class=\"hljs-selector-class\">.springframework<\/span><span class=\"hljs-selector-class\">.boot<\/span><span class=\"hljs-selector-class\">.actuate<\/span><span class=\"hljs-selector-class\">.endpoint<\/span><span class=\"hljs-selector-class\">.annotation<\/span><span class=\"hljs-selector-class\">.ReadOperation<\/span>;\n<span class=\"hljs-selector-tag\">import<\/span> <span class=\"hljs-selector-tag\">org<\/span><span class=\"hljs-selector-class\">.springframework<\/span><span class=\"hljs-selector-class\">.stereotype<\/span><span class=\"hljs-selector-class\">.Component<\/span>;\n\n<span class=\"hljs-keyword\">@Component<\/span>\n@Endpoint(id = <span class=\"hljs-string\">\"custom\"<\/span>)\npublic class CustomEndpoint {\n\n    <span class=\"hljs-keyword\">@ReadOperation<\/span>\n    public String customEndpoint() {\n        <span class=\"hljs-selector-tag\">return<\/span> \"<span class=\"hljs-selector-tag\">Custom<\/span> <span class=\"hljs-selector-tag\">endpoint<\/span> <span class=\"hljs-selector-tag\">response<\/span>\";\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel wird ein benutzerdefinierter Endpunkt mit dem Pfad <code>\/actuator\/custom<\/code> erstellt, der eine einfache Antwort zur\u00fcckgibt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Der Spring Boot Actuator ist ein leistungsstarkes Werkzeug, um die \u00dcberwachung und Verwaltung von Spring Boot-Anwendungen zu verbessern. Durch die Bereitstellung von standardm\u00e4\u00dfigen Endpunkten f\u00fcr Gesundheits\u00fcberpr\u00fcfungen, Metriken und andere n\u00fctzliche Informationen erleichtert er Entwicklern die Identifizierung von Problemen und die Optimierung der Anwendungsleistung. Die M\u00f6glichkeit, Endpunkte anzupassen und benutzerdefinierte Endpunkte hinzuzuf\u00fcgen, macht den Spring Boot Actuator \u00e4u\u00dferst flexibel und anpassungsf\u00e4hig. Entwickler sollten dieses m\u00e4chtige Tool in ihre Projekte integrieren, um die Betriebsbereitschaft und Leistung ihrer Anwendungen zu maximieren.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Spring Boot ist ein \u00e4u\u00dferst beliebtes Framework f\u00fcr die Entwicklung von Java-Anwendungen, das auf dem bew\u00e4hrten Spring-Framework aufbaut. Es erleichtert die Erstellung von robusten, skalierbaren und einfach zu wartenden Anwendungen. Ein entscheidendes Feature von Spring Boot ist der Spring Boot Actuator, der die \u00dcberwachung und Verwaltung von Anwendungen erm\u00f6glicht. Einf\u00fchrung in den Spring Boot Actuator [&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-262","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\/262","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=262"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/262\/revisions"}],"predecessor-version":[{"id":263,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/262\/revisions\/263"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=262"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=262"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}