ホームページ > Java > &#&チュートリアル > SpringBootでアクチュエータを閉じる方法

SpringBootでアクチュエータを閉じる方法

PHPz
リリース: 2023-05-12 19:46:10
転載
10415 人が閲覧しました

    SpringBoot はアクチュエータを閉じます

    SpringBootでアクチュエータを閉じる方法

    management:
      endpoint:
        health:
          show-details: ALWAYS
      endpoints:
        enabled-by-default: false #关闭监控
        web:
          exposure:
            include: '*'
    ログイン後にコピー

    SpringBoot アクチュエータの知識を組み合わせる

    Spring Boot のアクチュエータ 。 Spring Boot アプリケーションの監視や測定など、多くの実稼働グレードの機能を提供します。 Actuator のこれらの機能は、多数の REST エンドポイント、リモート シェル、および JMX を通じて利用できます。

    【利用環境】

    【1】SpringBootバージョン2.5.0、JDK11

    【2】サービスポート9999

    依存関係の追加

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
    ログイン後にコピー

    プロジェクトを開始し、SpringBoot2 の /actuator エンドポイントにアクセスします。一部のエンドポイントは除外に設定できます。

    management:
      endpoints:
        web:
          exposure:
            include: "*"
            exclude: ""
    ログイン後にコピー

    プロジェクトを再起動すると、表示されるエンドポイントが大幅に増加していることがわかりますSpringBootでアクチュエータを閉じる方法

    アクチュエータ エンドポイントの配置

    SpringBootでアクチュエータを閉じる方法/ autoconfig and/conditions 自動構成条件の取得

    どの自動構成条件が成功したか、どの自動構成条件が失敗したかを記録する自動構成レポートを提供します。新しいバージョンでは条件が調整されました。 Spring Boot の自動構成は、Spring の条件付き構成に基づいて構築されています。 @Conditional アノテーションを備えた多数の構成クラスを提供し、条件に基づいてこれらの Bean を自動的に構成するかどうかを決定します。 /autoconfig エンドポイントは、評価されたすべての条件を、条件が成功したか失敗したかに従ってグループ化してリストしたレポートを提供します。

    エンドポイント: http://localhost:9999/actuator/conditions

    ##[例]

    SpringBootでアクチュエータを閉じる方法

    # #上記は失敗した条件の例です。図に示されているように、JdbcTemplate、このクラスはデータベースの操作に役立ちます。プロンプト メッセージのとおり、関連する依存クラスが導入されていないため:

    "message": "@ConditionalOnClass は必要なクラス ‘org.springframework.jdbc.core.JdbcTemplate’"

    を示しています。 SpringBootでアクチュエータを閉じる方法 Classpath に JdbcTemplate が必要でないことを確認し、条件を満たさない場合は自動設定を行いません

    /beans Bean アセンブリレポートの取得

    Toアプリケーションの Spring コンテキストを理解する この場合、最も重要なエンドポイントは /beans です。 Java タイプや他の挿入された Bean など、コンテキスト内の各 Bean を説明する JSON ドキュメントを返します。

    リクエストエンドポイント:/actuator/beans

    /env エンドポイント 構成プロパティの表示

    SpringBootでアクチュエータを閉じる方法/env エンドポイントは、使用されているかどうかに関係なく、アプリケーションで使用できるすべての環境プロパティのリストを生成します。これには、環境変数、JVM プロパティ、コマンド ライン パラメータ、application.properties または application.yml ファイルによって提供されるプロパティが含まれます。

    Endpoint:/actuator/env

    /env は、構成のプライバシーを保護するためのいくつかのセキュリティ ポリシーを提供します。このような情報が /env に公開されるのを防ぐために、パスワード、シークレット、キー (または名前の最後の段落) という名前のすべての属性が "*" とともに /env に追加されます。参照は次のとおりです。

    SpringBootでアクチュエータを閉じる方法

    ##/mappingRequest URL マッピング

    /mapping endpoint には、すべての @RequestMapping リクエスト パスが表示されますSpringBootでアクチュエータを閉じる方法

    Request endpoint:/actuator /mappings

    [テスト インターフェイス]

        @GetMapping(value = "/hello", produces = "application/json;charset=utf-8")
        public String hello(@RequestParam("name") String name) {
            return "hello world";
        }
    ログイン後にコピー

    SpringBootでアクチュエータを閉じる方法マップされた各値には、Bean とメソッドという 2 つの属性があります。 Bean 属性は、マッピングの元となる Spring

    Bean の名前を識別します。メソッド属性は、マッピングに対応するメソッドの完全修飾メソッド シグネチャです。

    SpringBootでアクチュエータを閉じる方法/metricsランタイム インジケーターのモニタリング

    /metrics は、実行時にアプリケーションを迅速にチェックできるランタイム メトリックのモニタリングを提供します。

    Endpoint:/actuator/metrics

    主な監視項目は次のとおりです。

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

    SpringBootでアクチュエータを閉じる方法

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

    /httptrace 追踪Web请求

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

    【请求端点】/actuator/httptrace

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

    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();
        }
    
    }
    ログイン後にコピー

    /dump 导出线程快照

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

    【请求端点】/threaddump

    SpringBootでアクチュエータを閉じる方法

    【测试】

         Thread thread = new Thread(() -> {
                try {
                    Thread.sleep(1000000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }, "测试线程");
            thread.start();
    ログイン後にコピー

    SpringBootでアクチュエータを閉じる方法

    /shutdown 优雅的关闭应用程序

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

    SpringBootでアクチュエータを閉じる方法

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

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

    【示例】

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

            Runtime.getRuntime().addShutdownHook(new Thread(() -> {
                System.out.println("关闭应用,释放资源");
            }));
    ログイン後にコピー

    SpringBootでアクチュエータを閉じる方法

    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] 先ほどは Actuator が提供する組み込みエンドポイントの一部を使用しましたが、独自のニーズに応じて Actuator を拡張およびカスタマイズすることもできます。

    • 実は、Actuator には次の 5 つを含め、さまざまなカスタマイズ方法があります。

    • #1: エンドポイントの名前を変更します。デフォルトのエンドポイントをカスタム エンドポイント アドレスに変更します。

    • 2: エンドポイントを有効または無効にします。

    • #3: カスタマイズされた測定情報。

    • 4: 追跡データを保存するカスタム ウェアハウスを作成します。

    • #5: カスタム状態インジケーターを挿入します。
    • [7] この時点で、Actuator を通じて多くのシステム情報を確認できることがわかります。これは開発者にとっては有益ですが、セキュリティの観点から見ると、制限がある場合はそうではありません。強制すると、システムのセキュリティが大幅に侵害されます。 Actuator のエンドポイント保護は、Spring Security を使用して、他の URL パスと同じ方法で使用できます。 Spring Boot アプリケーションでは、セキュリティ スターターの依存関係をビルドの依存関係として追加し、セキュリティ関連の自動構成によって Actuator エンドポイントを含むアプリケーションを保護できるようにすることを意味します。たとえば、/shutdown エンドポイントを保護し、ADMIN 権限を持つユーザーのみにアクセスを許可するとします。

    以上がSpringBootでアクチュエータを閉じる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    関連ラベル:
    ソース:yisu.com
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート