Inhaltsverzeichnis
SpringBoot schließt den Aktuator. Es bietet viele produktionstaugliche Funktionen, wie z. B. die Überwachung und Messung von Spring Boot-Anwendungen. Diese Funktionen von Actuator sind über zahlreiche REST-Endpunkte, Remote-Shells und JMX verfügbar.
Heim Java javaLernprogramm So schließen Sie den Aktuator in SpringBoot

So schließen Sie den Aktuator in SpringBoot

May 12, 2023 pm 07:46 PM
springboot actuator

    SpringBoot schließt den Aktuator. Es bietet viele produktionstaugliche Funktionen, wie z. B. die Überwachung und Messung von Spring Boot-Anwendungen. Diese Funktionen von Actuator sind über zahlreiche REST-Endpunkte, Remote-Shells und JMX verfügbar.

    【Nutzungsumgebung】So schließen Sie den Aktuator in SpringBoot

    【1】SpringBoot-Version 2.5.0, JDK11

    【2】Service-Port 9999

    Abhängigkeiten hinzufügen

    management:
      endpoint:
        health:
          show-details: ALWAYS
      endpoints:
        enabled-by-default: false #关闭监控
        web:
          exposure:
            include: '*'
    Nach dem Login kopieren

    Starten Sie das Projekt und greifen Sie auf den /actuator-Endpunkt zu Standardmäßig wie folgt aktiviert: Endpunkte

    können andere Endpunkte auf folgende Weise öffnen. Wenn Sie einige Endpunkte schließen müssen, können Sie sie ausschließen.

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
    Nach dem Login kopieren

    Starten Sie das Projekt neu und Sie können sehen, dass die angezeigten Endpunkte stark zugenommen haben

    So schließen Sie den Aktuator in SpringBoot

    Aktuator-Endpunktorganisation

    /autoconfig und /conditions, um automatische Konfigurationsbedingungen zu erhalten

    So schließen Sie den Aktuator in SpringBoot

    bietet einen automatischen Konfigurationsbericht, um welche aufzuzeichnen Die automatischen Konfigurationsbedingungen wurden erfüllt und welche fehlgeschlagen. Die neue Version wurde den Gegebenheiten angepasst. Die automatische Konfiguration von Spring Boot basiert auf der bedingten Konfiguration von Spring. Es stellt zahlreiche Konfigurationsklassen mit @Conditional-Annotationen bereit und bestimmt, ob diese Beans automatisch auf der Grundlage von Bedingungen konfiguriert werden sollen. Der /autoconfig-Endpunkt stellt einen Bericht bereit, der alle ausgewerteten Bedingungen auflistet, gruppiert danach, ob die Bedingung erfüllt oder fehlgeschlagen ist.

    Endpunkt: http://localhost:9999/actuator/conditions

    [Beispiel]

    So schließen Sie den Aktuator in SpringBootDas Obige ist ein Beispiel für eine fehlgeschlagene Bedingung, wie im Bild gezeigt, ist JdbcTemplate, diese Klasse kann helfen Wir betreiben die Datenbank. Da die relevanten abhängigen Klassen nicht eingeführt wurden, lautet die Meldung:

    „message“: „@ConditionalOnClass hat die erforderliche Klasse ‘org.springframework.jdbc.core.JdbcTemplate“ nicht gefunden

    Überprüfen Sie den Klassenpfad und Es besteht keine Anforderung. Wenn die JdbcTemplate-Bedingung nicht erfüllt ist, wird keine automatische Konfiguration durchgeführt. Es gibt ein JSON-Dokument zurück, das jede Bean im Kontext beschreibt, einschließlich ihres Java-Typs und anderer injizierter Beans. So schließen Sie den Aktuator in SpringBoot

    Endpunkt anfordern: /actuator/beans

    /env endpoint Konfigurationseigenschaften anzeigen

    /env endpoint generiert eine Liste aller für die Anwendung verfügbaren Umgebungseigenschaften, unabhängig davon, ob sie verwendet werden oder nicht. Dazu gehören Umgebungsvariablen, JVM-Eigenschaften, Befehlszeilenparameter und Eigenschaften, die von application.properties- oder application.yml-Dateien bereitgestellt werden.

    Endpoint:/actuator/env

    So schließen Sie den Aktuator in SpringBoot/env bietet einige Sicherheitsrichtlinien zum Schutz der Vertraulichkeit der Konfiguration. Um zu verhindern, dass solche Informationen in /env offengelegt werden, werden alle Attribute mit den Namen „Passwort“, „Geheimnis“ und „Schlüssel“ (oder der letzte Absatz des Namens) in /env mit „*“ hinzugefügt. Die Referenz lautet wie folgt:

    Die URL-Zuordnung der /mapping-Anfrage

    /mapping-Endpunkt zeigt alle @RequestMapping-Anfragepfade an

    Der Wert von Jede Zuordnung hat zwei Attribute: Bean und Methode. Das Bean-Attribut identifiziert den Namen der SpringSo schließen Sie den Aktuator in SpringBoot

    Bean, von der die Zuordnung stammt. Das Methodenattribut ist die vollständig qualifizierte Methodensignatur der der Zuordnung entsprechenden Methode.

    /metrics Laufzeitindikatorüberwachung So schließen Sie den Aktuator in SpringBoot

    /metrics bietet uns eine Überwachung von Laufzeitmetriken, mit denen wir die Anwendung zur Laufzeit schnell überprüfen können. Endpunkt: /actuator/metrics

    Die wichtigsten Überwachungselemente sind wie folgt:

    So schließen Sie den Aktuator in SpringBoot

    /metrics端点会返回所有的可用度量值,但你也可能只对某个值感兴趣。要获取单个值,请求时可以在URL后加上对应的键名。

    So schließen Sie den Aktuator in SpringBoot

    如上图所示,查询jvm最大内存,结果值大约为6G。

    /httptrace 追踪Web请求

    /httptrace端点能报告所有Web请求的详细信息,包括请求方法、路径、时间戳以及请求和响应的头信息。

    【请求端点】/actuator/httptrace

    默认情况下httptrace没有启用,它要求一个HttpTraceRepository 的对象Bean.

    So schließen Sie den Aktuator in SpringBoot

    在系统中创建如下配置,提供一个HttpTraceRepository 类型的Bean,这里选择的是InMemoryHttpTraceRepository内存存储的方式。该方式默认提供最新的100条请求记录。

    import org.springframework.boot.actuate.trace.http.HttpTraceRepository;
    import org.springframework.boot.actuate.trace.http.InMemoryHttpTraceRepository;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class HttpTraceActuatorConfiguration {
    
        @Bean
        public HttpTraceRepository httpTraceRepository() {
            return new InMemoryHttpTraceRepository();
        }
    
    }
    Nach dem Login kopieren

    /dump 导出线程快照

    /dump端点会生成当前线程活动的快照。完整的线程导出报告里会包含应用程序的每个线程。其中包含很多线程的特定信息,还有线程相关的阻塞和锁状态。

    【请求端点】/threaddump

    So schließen Sie den Aktuator in SpringBoot

    【测试】

         Thread thread = new Thread(() -> {
                try {
                    Thread.sleep(1000000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }, "测试线程");
            thread.start();
    Nach dem Login kopieren

    So schließen Sie den Aktuator in SpringBoot

    /shutdown 优雅的关闭应用程序

    /shutdown可以让应用服务优雅的关闭,默认是关闭的。假设你要关闭运行中的应用程序。比方说,在微服务架构中,你有多个微服务应用的实例运行在云上,其中某个实例有问题了,你决定关闭该实例并重启这个有问题的应用程序。在这个场景中,Actuator的/shutdown端点就很有用了。

    So schließen Sie den Aktuator in SpringBoot

    优雅的关闭和kill -9的方式是相对的,它不会粗暴的立马关闭应用,而是会释放相关链接以及执行SpringBoot容器停止后的一些操作,然后再关闭应用。

    【端点】/actuator/shutdown 要求POST请求方式

    【示例】

    在应用中添加一个关闭前处理的钩子方法

            Runtime.getRuntime().addShutdownHook(new Thread(() -> {
                System.out.println("关闭应用,释放资源");
            }));
    Nach dem Login kopieren

    So schließen Sie den Aktuator in SpringBoot

    So schließen Sie den Aktuator in SpringBoot

    可以看到通过/actuator/shutdown关闭应用可以触发这些关闭处理的钩子函数,方便我们在应用停止时关闭一些连接以及做一些其他的处理。

    整理

    【1】上面实践了一些Actuator端点示例,虽然Actuator提供的功能很强大,但是在如今的集群化,K8S容器化应用部署下,这些直接访问某些应用的情况就变得很少了,比如监控Zipkin 、Spring Cloud Sleuth等等,内存监控这一块K8S容器化平台也有很多。但是,去学习实践这样的一个工具也是很值得的,如果后面有类似监控、关闭应用、获取请求URL映射、获取配置等等,那么我们就可以去看看Actuator是如何做的,学习和扩展。

    【2】本次的学习时看的《SpringBoot实战》书籍的学习笔记,该书Actuator章节后在后面也提及了很多进阶的知识,因为具体应用场景不多,下面就简单的整理下,把一些知识点记录下来,如果后面需要在重点实践学习下。

    【3】《SpringBoot实战》书籍关于Actuator介绍的一些使用可能在当下的版本中有些出入,这里贴上官方文档地址,参考对比下https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.enabling

    【4】Actuator通过REST端点提供了不少非常有用的信息。另一个深入运行中应用程序内部的方式是使用远程shell。Spring Boot集成了CRaSH,一种能嵌入任意Java应用程序的shell。Spring Boot还扩展了CRaSH,添加了不少Spring Boot特有的命令,提供了与Actuator端点类似的功能。该工具附上应用上,会在启动时提供一个访问秘钥,我们通过ssh user@localhost -p 2000 的方式就可以去访问,并且执行一些命令去查看应用数据。

    【5】除了REST端点和远程shell,Actuator还把它的端点以MBean的方式发布了出来,可以通过JMX来查看和管理。使用JMX是管理Spring Boot应用程序的一个好方法,如果你已在用JMX管理应用程序中的其他MBean,则尤其如此。

    [6] Zuvor haben wir einige der integrierten Endpunkte von Actuator verwendet. Wir können Actuator auch entsprechend unseren eigenen Anforderungen erweitern und anpassen.

    • Tatsächlich bietet Actuator viele Möglichkeiten, es anzupassen, einschließlich der folgenden fünf.

    • 1: Benennen Sie den Endpunkt um. Ändern Sie den Standardendpunkt in unsere benutzerdefinierte Endpunktadresse.

    • 2: Endpunkte aktivieren und deaktivieren.

    • 3: Benutzerdefinierte metrische Informationen.

    • 4: Erstellen Sie ein benutzerdefiniertes Lager zum Speichern von Tracking-Daten.

    • 5: Fügen Sie einen benutzerdefinierten Gesundheitsindikator ein.

    【7】Hier können wir sehen, dass wir durch Actuator viele Informationen über das System sehen können, was für Entwickler großartig ist, aber im Hinblick auf die Sicherheit Wenn es nicht eingeschränkt wird, wird die Sicherheit des Systems stark beeinträchtigt. Der Endpunktschutz von Actuator kann auf die gleiche Weise wie andere URL-Pfade verwendet werden – mit Spring Security. In einer Spring Boot-Anwendung bedeutet dies, dass die Security-Starter-Abhängigkeit als Build-Abhängigkeit hinzugefügt wird und dann die Anwendung, einschließlich des Actuator-Endpunkts, durch eine sicherheitsbezogene automatische Konfiguration geschützt wird. Sie möchten beispielsweise den Endpunkt /shutdown schützen und den Zugriff nur Benutzern mit ADMIN-Berechtigungen ermöglichen.

    Das obige ist der detaillierte Inhalt vonSo schließen Sie den Aktuator in SpringBoot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    AI Hentai Generator

    AI Hentai Generator

    Erstellen Sie kostenlos Ai Hentai.

    Heißer Artikel

    R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
    1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Beste grafische Einstellungen
    1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
    Will R.E.P.O. Crossplay haben?
    1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

    Heiße Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    Wie Springboot Jasypt integriert, um die Verschlüsselung von Konfigurationsdateien zu implementieren Wie Springboot Jasypt integriert, um die Verschlüsselung von Konfigurationsdateien zu implementieren Jun 01, 2023 am 08:55 AM

    Einführung in Jasypt Jasypt ist eine Java-Bibliothek, die es einem Entwickler ermöglicht, seinem Projekt mit minimalem Aufwand grundlegende Verschlüsselungsfunktionen hinzuzufügen und kein tiefes Verständnis der Funktionsweise der Verschlüsselung erfordert. standardbasierte Verschlüsselungstechnologie. Passwörter, Text, Zahlen, Binärdateien verschlüsseln ... Geeignet für die Integration in Spring-basierte Anwendungen, offene API, zur Verwendung mit jedem JCE-Anbieter ... Fügen Sie die folgende Abhängigkeit hinzu: com.github.ulisesbocchiojasypt-spring-boot-starter2 Die Vorteile von Jasypt schützen unsere Systemsicherheit. Selbst wenn der Code durchgesickert ist, kann die Datenquelle garantiert werden.

    Wie SpringBoot Redisson integriert, um eine Verzögerungswarteschlange zu implementieren Wie SpringBoot Redisson integriert, um eine Verzögerungswarteschlange zu implementieren May 30, 2023 pm 02:40 PM

    Nutzungsszenario 1. Die Bestellung wurde erfolgreich aufgegeben, die Zahlung erfolgte jedoch nicht innerhalb von 30 Minuten. Die Zahlung ist abgelaufen und die Bestellung wurde automatisch storniert. 2. Die Bestellung wurde unterzeichnet und es wurde 7 Tage lang keine Bewertung durchgeführt. Wenn die Bestellung abläuft und nicht ausgewertet wird, wird die Bestellung standardmäßig positiv bewertet. Wenn der Händler die Bestellung innerhalb von 5 Minuten nicht erhält, wird die Bestellung abgebrochen Es wird eine SMS-Erinnerung gesendet ... Für Szenarien mit langen Verzögerungen und geringer Echtzeitleistung können wir die Aufgabenplanung verwenden, um eine regelmäßige Abfrageverarbeitung durchzuführen. Zum Beispiel: xxl-job Heute werden wir auswählen

    So implementieren Sie verteilte Sperren mit Redis in SpringBoot So implementieren Sie verteilte Sperren mit Redis in SpringBoot Jun 03, 2023 am 08:16 AM

    1. Redis implementiert das Prinzip der verteilten Sperren und warum verteilte Sperren erforderlich sind. Bevor über verteilte Sperren gesprochen wird, muss erläutert werden, warum verteilte Sperren erforderlich sind. Das Gegenteil von verteilten Sperren sind eigenständige Sperren. Wenn wir Multithread-Programme schreiben, vermeiden wir Datenprobleme, die durch den gleichzeitigen Betrieb einer gemeinsam genutzten Variablen verursacht werden. Normalerweise verwenden wir eine Sperre, um die Richtigkeit der gemeinsam genutzten Variablen sicherzustellen Die gemeinsam genutzten Variablen liegen im gleichen Prozess. Wenn es mehrere Prozesse gibt, die gleichzeitig eine gemeinsam genutzte Ressource betreiben müssen, wie können sie sich dann gegenseitig ausschließen? Heutige Geschäftsanwendungen sind in der Regel Microservice-Architekturen, was auch bedeutet, dass eine Anwendung mehrere Prozesse bereitstellen muss. Wenn mehrere Prozesse dieselbe Datensatzzeile in MySQL ändern müssen, ist eine Verteilung erforderlich, um fehlerhafte Daten zu vermeiden wird zu diesem Zeitpunkt eingeführt. Der Stil ist gesperrt. Punkte erreichen wollen

    So lösen Sie das Problem, dass Springboot nach dem Einlesen in ein JAR-Paket nicht auf die Datei zugreifen kann So lösen Sie das Problem, dass Springboot nach dem Einlesen in ein JAR-Paket nicht auf die Datei zugreifen kann Jun 03, 2023 pm 04:38 PM

    Springboot liest die Datei, kann aber nach dem Packen in ein JAR-Paket nicht auf die neueste Entwicklung zugreifen. Es gibt eine Situation, in der Springboot die Datei nach dem Packen in ein JAR-Paket nicht lesen kann ist ungültig und kann nur über den Stream gelesen werden. Die Datei befindet sich unter resources publicvoidtest(){Listnames=newArrayList();InputStreamReaderread=null;try{ClassPathResourceresource=newClassPathResource("name.txt");Input

    Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC Dec 29, 2023 am 11:02 AM

    SpringBoot und SpringMVC sind beide häufig verwendete Frameworks in der Java-Entwicklung, es gibt jedoch einige offensichtliche Unterschiede zwischen ihnen. In diesem Artikel werden die Funktionen und Verwendungsmöglichkeiten dieser beiden Frameworks untersucht und ihre Unterschiede verglichen. Lassen Sie uns zunächst etwas über SpringBoot lernen. SpringBoot wurde vom Pivotal-Team entwickelt, um die Erstellung und Bereitstellung von Anwendungen auf Basis des Spring-Frameworks zu vereinfachen. Es bietet eine schnelle und einfache Möglichkeit, eigenständige, ausführbare Dateien zu erstellen

    So implementieren Sie Springboot+Mybatis-plus, ohne SQL-Anweisungen zum Hinzufügen mehrerer Tabellen zu verwenden So implementieren Sie Springboot+Mybatis-plus, ohne SQL-Anweisungen zum Hinzufügen mehrerer Tabellen zu verwenden Jun 02, 2023 am 11:07 AM

    Wenn Springboot + Mybatis-plus keine SQL-Anweisungen zum Hinzufügen mehrerer Tabellen verwendet, werden die Probleme, auf die ich gestoßen bin, durch die Simulation des Denkens in der Testumgebung zerlegt: Erstellen Sie ein BrandDTO-Objekt mit Parametern, um die Übergabe von Parametern an den Hintergrund zu simulieren dass es äußerst schwierig ist, Multi-Table-Operationen in Mybatis-plus durchzuführen. Wenn Sie keine Tools wie Mybatis-plus-join verwenden, können Sie nur die entsprechende Mapper.xml-Datei konfigurieren und die stinkende und lange ResultMap konfigurieren Schreiben Sie die entsprechende SQL-Anweisung. Obwohl diese Methode umständlich erscheint, ist sie äußerst flexibel und ermöglicht es uns

    Wie SpringBoot Redis anpasst, um die Cache-Serialisierung zu implementieren Wie SpringBoot Redis anpasst, um die Cache-Serialisierung zu implementieren Jun 03, 2023 am 11:32 AM

    1. Passen Sie den RedisTemplate1.1-Standard-Serialisierungsmechanismus an. Die API-basierte Redis-Cache-Implementierung verwendet die RedisTemplate-Vorlage für Daten-Caching-Vorgänge. Öffnen Sie hier die RedisTemplate-Klasse und zeigen Sie die Quellcodeinformationen der Klasse publicclassRedisTemplateextendsRedisAccessorimplementsRedisOperations an. Schlüssel deklarieren, verschiedene Serialisierungsmethoden des Werts, der Anfangswert ist leer @NullableprivateRedisSe

    So erhalten Sie den Wert in application.yml in Springboot So erhalten Sie den Wert in application.yml in Springboot Jun 03, 2023 pm 06:43 PM

    In Projekten werden häufig einige Konfigurationsinformationen benötigt. Diese Informationen können in der Testumgebung und in der Produktionsumgebung unterschiedliche Konfigurationen haben und müssen möglicherweise später basierend auf den tatsächlichen Geschäftsbedingungen geändert werden. Wir können diese Konfigurationen nicht fest im Code codieren. Am besten schreiben Sie sie in die Konfigurationsdatei. Sie können diese Informationen beispielsweise in die Datei application.yml schreiben. Wie erhält oder verwendet man diese Adresse im Code? Es gibt 2 Methoden. Methode 1: Wir können den Wert, der dem Schlüssel in der Konfigurationsdatei (application.yml) entspricht, über den mit @Value versehenen Wert erhalten. Diese Methode eignet sich für Situationen, in denen es relativ wenige Mikrodienste gibt: Tatsächlich Projekte, wenn das Geschäft kompliziert ist, Logik

    See all articles