Rumah  >  Artikel  >  Java  >  Bagaimana untuk menutup penggerak dalam SpringBoot

Bagaimana untuk menutup penggerak dalam SpringBoot

PHPz
PHPzke hadapan
2023-05-12 19:46:1010324semak imbas

    SpringBoot menutup penggerak

    Bagaimana untuk menutup penggerak dalam SpringBoot

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

    SpringBoot penggerak pengetahuan menyikat

    Spring Boot’s Actuator. Ia menyediakan banyak ciri gred pengeluaran, seperti memantau dan mengukur aplikasi Spring Boot. Ciri Actuator ini tersedia melalui banyak titik akhir REST, cengkerang jauh dan JMX.

    [Persekitaran penggunaan]

    [1] SpringBoot versi 2.5.0, JDK11

    [2] Port perkhidmatan 9999

    Tambah pergantungan

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>

    Mulakan projek dan akses titik akhir /actuator The SpringBoot2 boleh ditetapkan dalam exclude.

    management:
      endpoints:
        web:
          exposure:
            include: "*"
            exclude: ""

    Mulakan semula projek dan anda dapat melihat bahawa titik akhir yang dipaparkan telah meningkat dengan banyakBagaimana untuk menutup penggerak dalam SpringBoot

    Organisasi titik akhir penggerak

    Bagaimana untuk menutup penggerak dalam SpringBoot/ autoconfig dan /conditions Dapatkan syarat autokonfigurasi

    Menyediakan laporan autokonfigurasi untuk merekodkan syarat konfigurasi auto yang lulus dan yang gagal. Versi baharu telah dilaraskan kepada syarat. Konfigurasi automatik Spring Boot dibina pada konfigurasi bersyarat Spring. Ia menyediakan banyak kelas konfigurasi dengan anotasi @Conditional, dan menentukan sama ada untuk mengkonfigurasi kacang ini secara automatik berdasarkan syarat. Titik akhir /autoconfig menyediakan laporan yang menyenaraikan semua syarat yang dinilai, dikumpulkan mengikut sama ada syarat itu lulus atau gagal.

    Titik Tamat: http://localhost:9999/actuator/conditions

    [Contoh]

    Bagaimana untuk menutup penggerak dalam SpringBoot

    Di atas adalah contoh syarat untuk kegagalan, seperti yang ditunjukkan dalam rajah ialah JdbcTemplate, kelas ini boleh membantu kami mengendalikan pangkalan data. Kerana kelas bergantung yang berkaitan tidak diperkenalkan, sama seperti mesej gesaannya berkata:

    "message": "@ConditionalOnClass tidak menemui kelas yang diperlukan ‘org.springframework.jdbc.core.JdbcTemplate’"Bagaimana untuk menutup penggerak dalam SpringBoot

    Pastikan Classpath tidak memerlukan JdbcTemplate Jika syarat tidak dipenuhi, konfigurasi automatik tidak akan dilakukan

    /beans Dapatkan laporan pemasangan Bean

    Kepada. memahami konteks Spring dalam aplikasi Dalam kes ini, titik akhir yang paling penting ialah /beans. Ia mengembalikan dokumen JSON yang menerangkan setiap kacang dalam konteks, termasuk jenis Java dan kacang suntikan lain.

    Minta titik akhir: /actuator/beans

    /env endpoint Lihat sifat konfigurasi

    Bagaimana untuk menutup penggerak dalam SpringBoot

    /env endpoint akan Menghasilkan senarai semua sifat persekitaran yang tersedia untuk aplikasi, sama ada ia digunakan atau tidak. Ini termasuk pembolehubah persekitaran, sifat JVM, parameter baris perintah dan sifat yang disediakan oleh fail application.properties atau application.yml.

    Titik Akhir:/actuator/env

    /env menyediakan beberapa dasar keselamatan untuk melindungi privasi konfigurasi. Untuk mengelakkan maklumat sedemikian daripada terdedah kepada /env, semua atribut bernama kata laluan, rahsia, kunci (atau perenggan terakhir nama adalah ini) akan ditambah dengan "*" dalam /env, rujukannya adalah seperti berikut:

    Bagaimana untuk menutup penggerak dalam SpringBoot

    /permintaan pemetaan pemetaan URL

    Bagaimana untuk menutup penggerak dalam SpringBoot

    /titik akhir pemetaan menunjukkan semua laluan permintaan @RequestMapping

    Titik akhir permintaan: / penggerak/pemetaan

    [Antara muka ujian]

        @GetMapping(value = "/hello", produces = "application/json;charset=utf-8")
        public String hello(@RequestParam("name") String name) {
            return "hello world";
        }

    Bagaimana untuk menutup penggerak dalam SpringBoot

    Setiap nilai yang dipetakan mempunyai dua atribut: kacang dan kaedah. Atribut kacang mengenal pasti nama Spring

    Kacang dari mana pemetaan berasal. Atribut kaedah ialah tandatangan kaedah yang layak sepenuhnya bagi kaedah sepadan pemetaan. Bagaimana untuk menutup penggerak dalam SpringBoot

    /metrics Pemantauan penunjuk masa jalan

    /metrics menyediakan kami pemantauan metrik masa jalan, yang boleh menyemak aplikasi dengan cepat semasa masa jalan.

    Titik akhir: /actuator/metrik

    Item pemantauan utama adalah seperti berikut:

    Bagaimana untuk menutup penggerak dalam SpringBoot

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

    Bagaimana untuk menutup penggerak dalam SpringBoot

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

    /httptrace 追踪Web请求

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

    【请求端点】/actuator/httptrace

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

    Bagaimana untuk menutup penggerak dalam 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

    Bagaimana untuk menutup penggerak dalam SpringBoot

    【测试】

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

    Bagaimana untuk menutup penggerak dalam SpringBoot

    /shutdown 优雅的关闭应用程序

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

    Bagaimana untuk menutup penggerak dalam SpringBoot

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

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

    【示例】

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

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

    Bagaimana untuk menutup penggerak dalam SpringBoot

    Bagaimana untuk menutup penggerak dalam 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] Sebelum ini kami menggunakan beberapa titik akhir terbina dalam yang baik yang disediakan oleh Actuator Kami juga boleh memanjangkan dan menyesuaikan Actuator mengikut keperluan kami sendiri.

    • Malah, Actuator mempunyai banyak cara untuk menyesuaikannya, termasuk lima yang berikut.

    • 1: Namakan semula titik akhir. Tukar titik akhir lalai kepada alamat titik akhir tersuai kami.

    • 2: Dayakan dan lumpuhkan titik akhir.

    • 3: Maklumat ukuran tersuai.

    • 4: Buat gudang tersuai untuk menyimpan data penjejakan.

    • 5: Masukkan penunjuk kesihatan tersuai.

    【7】Pada ketika ini kita dapat melihat bahawa melalui Actuator kita dapat melihat banyak maklumat sistem, yang bagus untuk pembangun, tetapi dari perspektif keselamatan, jika tidak Jika sekatan dikenakan, keselamatan sistem akan terjejas dengan teruk. Perlindungan titik akhir Actuator boleh digunakan dengan cara yang sama seperti laluan URL lain - menggunakan Spring Security. Dalam aplikasi Spring Boot, ini bermakna menambah kebergantungan pemula Keselamatan sebagai kebergantungan binaan dan kemudian membenarkan konfigurasi auto berkaitan keselamatan melindungi aplikasi, termasuk titik akhir Actuator. Contohnya, anda ingin melindungi titik akhir /shutdown dan hanya membenarkan akses kepada pengguna yang mempunyai keistimewaan ADMIN.

    Atas ialah kandungan terperinci Bagaimana untuk menutup penggerak dalam SpringBoot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam