欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot監(jiān)控模塊Actuator的用法詳解

 更新時(shí)間:2023年06月15日 09:12:24   作者:蜀山劍客李沐白  
Spring?Boot?Actuator?是?Spring?Boot?自帶的一個(gè)功能模塊,提供了一組已經(jīng)開(kāi)箱即用的生產(chǎn)環(huán)境下常用的特性和服務(wù),比如應(yīng)用程序的健康檢查、信息暴露、度量收集、日志記錄等,本文將給大家詳細(xì)SpringBoot監(jiān)控模塊Actuator的用法

1. Actuator 的入門(mén)及配置

1.1 安裝和使用 Actuator

我們可以通過(guò) Maven 或 Gradle 將 Actuator 添加到我們的 Spring Boot 應(yīng)用程序中。Maven 的依賴(lài)如下

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

Gradle 的依賴(lài)如下:

implementation 'org.springframework.boot:spring-boot-starter-actuator'

添加依賴(lài)后,我們只需要啟動(dòng)我們的應(yīng)用程序即可開(kāi)始使用 Actuator。默認(rèn)情況下,Actuator 會(huì)向應(yīng)用程序暴露以下 URI:

  • /actuator/auditevents:顯示當(dāng)前配置的審核事件信息
  • /actuator/beans:顯示應(yīng)用程序中所有 Bean 的完整名稱(chēng)列表
  • /actuator/conditions:顯示自動(dòng)配置類(lèi)及其應(yīng)用情況的信息
  • /actuator/configprops:顯示所有 Spring Boot 配置文件及其對(duì)應(yīng)值的詳細(xì)信息
  • /actuator/env:顯示應(yīng)用程序當(dāng)前環(huán)境變量和屬性的詳細(xì)信息
  • /actuator/flyway:顯示 Flyway 數(shù)據(jù)庫(kù)遷移信息的詳細(xì)信息
  • /actuator/health:顯示應(yīng)用程序的健康狀況
  • /actuator/info:顯示應(yīng)用程序相關(guān)信息
  • /actuator/mappings:顯示 Spring MVC 控制器映射的詳細(xì)信息
  • /actuator/metrics:顯示各種 JVM 指標(biāo)、計(jì)數(shù)器和度量數(shù)據(jù)的詳細(xì)信息
  • /actuator/prometheus:將指標(biāo)暴露為 Prometheus 格式,以便在 Grafana 或其他監(jiān)控系統(tǒng)中使用
  • /actuator/scheduledtasks:顯示應(yīng)用程序中所有調(diào)度任務(wù)的詳細(xì)信息
  • /actuator/sessions:允許查看和失效會(huì)話(huà) ID
  • /actuator/shutdown:關(guān)閉應(yīng)用程序(需要加入 actuator/shutdown 配置)

1.2 Actuator 的基本配置

Actuator 默認(rèn)是開(kāi)啟的,并暴露所有端點(diǎn),我們甚至可以在瀏覽器中直接訪問(wèn)上面提到的 URI。但是,在生產(chǎn)環(huán)境中,我們通常不希望所有端點(diǎn)都對(duì)外暴露。這時(shí),我們需要對(duì) Actuator 進(jìn)行一些配置。

application.propertiesapplication.yml 文件中添加如下配置:

# 關(guān)閉具體某個(gè)端點(diǎn),格式為management.endpoint.<id>.enabled=false
management.endpoint.shutdown.enabled=true
# 開(kāi)啟所有端點(diǎn)的基礎(chǔ)功能,格式為management.endpoints.<id>.<option-name>
management.endpoints.web.exposure.include=*

上述配置將關(guān)閉 shutdown 端點(diǎn),并開(kāi)放所有端點(diǎn)。除了以上參量,還可以通過(guò) management.server.port 配置 Actuator 的 HTTP 端口和 management.server.ssl 配置 SSL。

2. Actuator 的端點(diǎn)

Actuator 中各個(gè)端點(diǎn)描述如下:

2.1 /actuator/health

該端點(diǎn)提供有關(guān)應(yīng)用程序健康狀況的詳細(xì)信息。通過(guò)檢查數(shù)據(jù)庫(kù)、緩存、消息代理等檢查資源的狀態(tài),Health Indicators 能夠確定應(yīng)用程序是否正常運(yùn)行。默認(rèn)情況下,該端點(diǎn)顯示以下信息:

{
    "status": "UP"
}

如果應(yīng)用程序是正常運(yùn)行的,它會(huì)返回 UP,否則將返回 DOWN,并向用戶(hù)提供有關(guān)錯(cuò)誤的詳細(xì)信息。

2.2 /actuator/info

該端點(diǎn)展示與應(yīng)用程序相關(guān)的任何附加信息。如:版本,構(gòu)建時(shí)間等。在應(yīng)用程序訪問(wèn)時(shí),返回一個(gè)自定義 JSON 格式的響應(yīng)??梢酝ㄟ^(guò)在 application.ymlapplication.properties 文件中添加鍵值對(duì)來(lái)定制信息。

例如:

info.app.name=My Application
info.app.description=A demo application
info.app.version=1.0.0

訪問(wèn)該端點(diǎn),將返回如下響應(yīng):

{
    "app": {
        "description": "A demo application",
        "name": "My Application",
        "version": "1.0.0"
    }
}

2.3 /actuator/metrics

該端點(diǎn)提供了可以收集和監(jiān)控的度量指標(biāo)的詳細(xì)信息。Spring Boot 提供了一些默認(rèn)的度量指標(biāo),如系統(tǒng) CPU 使用率、內(nèi)存使用情況、HTTP 請(qǐng)求延遲等。此外,Spring Boot 還支持使用 Micrometer 框架創(chuàng)建自定義的度量指標(biāo)。

/actuator/metrics 端點(diǎn)下,有許多子路徑,每個(gè)子路徑中包含一些度量項(xiàng)。例如,我們可以查看 Tomcat 正在監(jiān)聽(tīng)的連接數(shù)和活動(dòng)線(xiàn)程數(shù)等:

{
    "connections": {
        "active": 13,
        "max": 1000,
        "total": 29
    },
    "threads": {
        "daemon": 7,
        "total": 22
    }
}

2.4 /actuator/beans

該端點(diǎn)提供了應(yīng)用程序所有 Bean 的完整列表,包括它們的相關(guān)信息。需要注意的是,Actuator 只顯示由 Spring IOC 容器管理的 Bean 信息。

2.5 /actuator/env

該端點(diǎn)展示應(yīng)用程序當(dāng)前環(huán)境變量和屬性的詳細(xì)信息。可以使用 /actuator/env/<key> 端點(diǎn)獲取指定 key 的值,也可以通過(guò) POST 請(qǐng)求,修改或添加屬性。

2.6 /actuator/mappings

該端點(diǎn)提供了所有 Spring MVC 控制器映射的詳細(xì)信息,包括請(qǐng)求 URL、處理器方法、HTTP 方法等等,并按照優(yōu)先級(jí)遞減的順序進(jìn)行排序。例如,如下代碼:

@RestController
@RequestMapping("/hello")
public class HelloController {
    @GetMapping("/world")
    public String greeting() {
        return "Hello, world!";
    }
}

訪問(wèn) /actuator/mappings ,將返回:

{
    "contexts": {
        "application": {
            "mappings": {
                "dispatcherServlets": {
                    "dispatcherServlet": {
                        "mvcHandlerMappings": {
                            "/hello": {
                                "methods": [],
                                "params": {},
                                "headers": {},
                                "consumes": [],
                                "produces": [],
                                "custom": {}
                            },
                            "/hello/world": {
                                "bean": "helloController",
                                "method": "greeting",
                                "beanType": "com.example.demo.HelloController",
                                "args": [],
                                "responseDetails": {
                                    "status": 200,
                                    "headers": {},
                                    "content": {
                                        "id": "1",
                                        "name": "Tom"
                                    }
                                },
                                "methods": [
                                    "GET"
                                ],
                                "params": {},
                                "headers": {},
                                "consumes": [],
                                "produces": [],
                                "custom": {}
                            },
                            ...
                        }
                    }
                }
            }
        }
    }
}

2.7 /actuator/auditevents

該端點(diǎn)提供了所有 Spring Boot 應(yīng)用程序所執(zhí)行的審核事件的詳細(xì)信息,包括事件名稱(chēng)、類(lèi)型、時(shí)間戳和調(diào)用者等。此外,還支持通過(guò) Spring Security 的安全審核事件等。

2.8 /actuator/flyway

該端點(diǎn)展示 Flyway 數(shù)據(jù)庫(kù)遷移信息的詳細(xì)信息,包括已應(yīng)用遷移的版本和狀態(tài)等。

2.9 /actuator/scheduledtasks

該端點(diǎn)展示應(yīng)用程序中所有調(diào)度任務(wù)的詳細(xì)信息。

2.10 /actuator/sessions

該端點(diǎn)允許查看和失效會(huì)話(huà) ID。

3. 自定義 Actuator 端點(diǎn)

除了使用 Actuator 默認(rèn)端點(diǎn)之外,我們還可以根據(jù)自己的業(yè)務(wù)需求自定義 Actuator 端點(diǎn)。

3.1 編寫(xiě)自定義 Endpoints

自定義 Actuator 端點(diǎn)需要實(shí)現(xiàn) Endpoint 接口,并重寫(xiě) getId()invoke() 方法。例如,以下代碼實(shí)現(xiàn)了一個(gè)名為 MyEndpoint 的自定義端點(diǎn):

@Component
public class MyEndpoint implements Endpoint<Map<String, Object>> {
    @Override
    public String getId() {
        return "my-endpoint";
    }
    @Override
    public Map<String, Object> invoke() {
        Map<String, Object> result = new HashMap<>();
        result.put("name", "My name is Actuator");
        return result;
    }
}

3.2 暴露自定義 Endpoints

實(shí)現(xiàn)自定義 Endpoints 后,我們需要通過(guò)設(shè)置來(lái)公開(kāi)它們。在 application.yml 中添加以下內(nèi)容:

management:
  endpoints:
    web:
      exposure:
        include: my-endpoint

這將允許我們通過(guò)訪問(wèn) /actuator/my-endpoint 端點(diǎn)來(lái)查看自定義的端點(diǎn)信息。

4. Actuator 的監(jiān)控和管理功能

4.1 配置度量指標(biāo)

Actuator 提供了很多度量指標(biāo),但默認(rèn)只包含一些 JVM 層面的指標(biāo)。如果我們需要檢測(cè)自己應(yīng)用程序的度量指標(biāo),那么可以使用 Micrometer 庫(kù)來(lái)幫助我們完成。它是一個(gè)跨度量系統(tǒng)和時(shí)間序列數(shù)據(jù)庫(kù)的工具庫(kù),支持多種后端存儲(chǔ)如 Prometheus、Graphite 和 InfluxDB。使用 Micrometer,我們可以在 Actuator 中創(chuàng)建自定義度量指標(biāo):

import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.MeterRegistry;
import org.springframework.stereotype.Component;
@Component
public class CustomMetrics {
    private final MeterRegistry meterRegistry;
    private final Counter requestsCounter;
    public CustomMetrics(MeterRegistry meterRegistry) {
        this.meterRegistry = meterRegistry;
        this.requestsCounter = Counter.builder("custom_requests_counter")
                .description("A counter for counting custom requests.")
                .register(meterRegistry);
    }
    public void incrementRequests() {
        requestsCounter.increment();
    }
}

在上述代碼中,我們創(chuàng)建了一個(gè)名為 CustomMetrics 的類(lèi),它是一個(gè) Spring bean,并使用 MeterRegistry 注冊(cè)了一個(gè)名為 custom_requests_counter 的度量計(jì)數(shù)器。此外,還定義了一個(gè) incrementRequests() 方法,以便我們可以在代碼中增加請(qǐng)求計(jì)數(shù)器。我們還可以添加其他類(lèi)型的指標(biāo),如 Gauge、TimerDistributionSummary。

4.2 監(jiān)控和管理應(yīng)用程序

Actuator 還提供了一些有用的監(jiān)控和管理功能,讓我們可以更方便地跟蹤和管理應(yīng)用程序。

4.2.1 健康檢查

Actuator 的 /actuator/health 端點(diǎn)提供了應(yīng)用程序的健康狀況,我們可以通過(guò)檢查該端點(diǎn)來(lái)確定應(yīng)用程序是否正常運(yùn)行。如果應(yīng)用程序出現(xiàn)故障,該端點(diǎn)將顯示 DOWN 狀態(tài),并提供有關(guān)錯(cuò)誤的詳細(xì)信息。

4.2.2 角色和權(quán)限

Actuator 支持基于角色的訪問(wèn)控制,可以限制某些用戶(hù)或組的訪問(wèn)??梢酝ㄟ^(guò)設(shè)置 management.endpoint.<id>.roles 屬性配置端點(diǎn)的角色。例如,以下代碼將 /actuator/shutdown 端點(diǎn)限制為 ADMIN 角色:

management.endpoint.shutdown.roles=ADMIN

4.2.3 外部配置

Actuator 可以通過(guò)外部配置文件進(jìn)行配置??梢栽谕獠颗渲梦募性O(shè)置以下鍵來(lái)控制 Actuator 的行為:

  • management.endpoints.enabled-by-default:是否啟用所有端點(diǎn)(默認(rèn)為 true)
  • management.endpoints.jmx.exposure.exclude:要排除的端點(diǎn) JMX MBean 名稱(chēng)
  • management.endpoint.<id>.enabled:指定是否啟用特定端點(diǎn)
  • management.endpoint.<id>.sensitive:指定特定端點(diǎn)是否包含敏感信息

4.2.4 采樣周期

Actuator 還支持將某些端點(diǎn)的采樣周期設(shè)置為非默認(rèn)值,以在一定時(shí)間間隔內(nèi)定期輪詢(xún)信息??梢酝ㄟ^(guò) management.endpoint.<id>.time-to-live 屬性配置采樣周期。例如,以下代碼將 /actuator/metrics 端點(diǎn)的采樣周期設(shè)置為 30 秒:

management.endpoint.metrics.time-to-live=30s

5. Actuator 的安全保護(hù)

在生產(chǎn)環(huán)境中,Actuator 的安全保護(hù)非常重要。Actuator 支持基于 Spring Security 的安全保護(hù),可以使用 Spring Security 配置來(lái)授權(quán) Actuator 端點(diǎn)的訪問(wèn)。

5.1 添加 Spring Security 依賴(lài)

要使用 Spring Security,我們需要在項(xiàng)目中添加以下 Maven 依賴(lài):

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

5.2 配置 Spring Security

完成依賴(lài)添加后,我們需要配置 Spring Security,以保護(hù) Actuator 端點(diǎn)。以下是一個(gè)簡(jiǎn)單的 Spring Security 配置示例:

@Configuration
@EnableWebSecurity
public class ActuatorSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .requestMatchers(EndpointRequest.to("health", "info")).permitAll()
            .requestMatchers(EndpointRequest.toAnyEndpoint()).hasRole("ACTUATOR")
            .and().httpBasic();
    }
}

在上述代碼中,我們創(chuàng)建了一個(gè)名為 ActuatorSecurityConfig 的 Spring Security 配置類(lèi),并配置了 /actuator/health/actuator/info 端點(diǎn)的公開(kāi)訪問(wèn)權(quán)限。對(duì)于其他端點(diǎn),則需要用戶(hù)具有 ACTUATOR 角色才能訪問(wèn)。此外,還啟用了 HTTP 基本身份驗(yàn)證,以便在調(diào)用受保護(hù)的端點(diǎn)時(shí)要求用戶(hù)進(jìn)行身份驗(yàn)證。

5.3 添加用戶(hù)和角色

完成 Spring Security 配置后,我們還需要為 Actuator 添加用戶(hù)和角色。可以通過(guò)在 application.propertiesapplication.yml 文件中設(shè)置以下鍵來(lái)配置用戶(hù)名、密碼和角色:

spring.security.user.name=actuator
spring.security.user.password=actuator-password
spring.security.user.roles=ACTUATOR

在上述配置中,我們創(chuàng)建了一個(gè)名為 actuator、密碼為 actuator-password,且擁有 ACTUATOR 角色的用戶(hù)。

以上就是SpringBoot監(jiān)控模塊Actuator的用法詳解的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot監(jiān)控模塊Actuator的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java網(wǎng)上圖書(shū)商城(6)訂單模塊1

    java網(wǎng)上圖書(shū)商城(6)訂單模塊1

    這篇文章主要為大家詳細(xì)介紹了java網(wǎng)上圖書(shū)商城,訂單模塊,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 關(guān)于IDEA無(wú)法預(yù)覽Markdown文件的解決思路

    關(guān)于IDEA無(wú)法預(yù)覽Markdown文件的解決思路

    在IntelliJ IDEA中,有時(shí)Markdown文件無(wú)法預(yù)覽可能是因?yàn)槲募P(guān)聯(lián)設(shè)置不正確或配置信息錯(cuò)誤,首先,檢查IDE的File Types設(shè)置,確保.md和.markdown后綴已正確注冊(cè),其次,對(duì)照官方配置信息,調(diào)整Markdown設(shè)置
    2024-09-09
  • HashMap的底層實(shí)現(xiàn)原理分析

    HashMap的底層實(shí)現(xiàn)原理分析

    本文主要介紹了HashMap的底層實(shí)現(xiàn)結(jié)構(gòu),包括JDK1.7和1.8版本的區(qū)別,JDK1.7使用數(shù)組加鏈表實(shí)現(xiàn),而JDK1.8引入了紅黑樹(shù)優(yōu)化,文章詳細(xì)解釋了HashMap如何確定哈希桶數(shù)組索引位置、put方法的執(zhí)行過(guò)程以及擴(kuò)容原理
    2025-01-01
  • java 在Jetty9中使用HttpSessionListener和Filter

    java 在Jetty9中使用HttpSessionListener和Filter

    這篇文章主要介紹了java 在Jetty9中使用HttpSessionListener和Filter的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • SpringBoot結(jié)合mockito測(cè)試實(shí)戰(zhàn)

    SpringBoot結(jié)合mockito測(cè)試實(shí)戰(zhàn)

    與集成測(cè)試將系統(tǒng)作為一個(gè)整體測(cè)試不同,單元測(cè)試更應(yīng)該專(zhuān)注于某個(gè)類(lèi)。所以當(dāng)被測(cè)試類(lèi)與外部類(lèi)有依賴(lài)的時(shí)候,尤其是與數(shù)據(jù)庫(kù)相關(guān)的這種費(fèi)時(shí)且有狀態(tài)的類(lèi),很難做單元測(cè)試。但好在可以通過(guò)“Mockito”這種仿真框架來(lái)模擬這些比較費(fèi)時(shí)的類(lèi),從而專(zhuān)注于測(cè)試某個(gè)類(lèi)內(nèi)部的邏輯
    2022-11-11
  • java.sql.SQLException:com.mysql.cj.jdbc.Driver報(bào)錯(cuò)問(wèn)題解決

    java.sql.SQLException:com.mysql.cj.jdbc.Driver報(bào)錯(cuò)問(wèn)題解決

    這篇文章主要給大家介紹了關(guān)于java.sql.SQLException:com.mysql.cj.jdbc.Driver報(bào)錯(cuò)問(wèn)題解決的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • java使用正則表達(dá)式判斷手機(jī)號(hào)的方法示例

    java使用正則表達(dá)式判斷手機(jī)號(hào)的方法示例

    這篇文章主要介紹了java使用正則表達(dá)式判斷手機(jī)號(hào)的方法,分析了手機(jī)號(hào)碼段的原理及java使用正則表達(dá)式針對(duì)手機(jī)號(hào)的匹配操作實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-06-06
  • springboot項(xiàng)目以jar包運(yùn)行的操作方法

    springboot項(xiàng)目以jar包運(yùn)行的操作方法

    公司一個(gè)springboot項(xiàng)目本來(lái)是打war包的,突然要改為打jar包,不知所措了,糾結(jié)該如何操作呢,折騰半天終于搞定了,下面把解決方案分享給大家,對(duì)springboot打jar包方式感興趣的朋友一起看看吧
    2021-06-06
  • 詳解重試框架Spring retry實(shí)踐

    詳解重試框架Spring retry實(shí)踐

    spring retry是從spring batch獨(dú)立出來(lái)的一個(gè)能功能,主要實(shí)現(xiàn)了重試和熔斷。這篇文章主要介紹了詳解重試框架Spring retry實(shí)踐,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Spring3?中?RabbitMQ?的使用與常見(jiàn)場(chǎng)景分析

    Spring3?中?RabbitMQ?的使用與常見(jiàn)場(chǎng)景分析

    本文介紹了Spring3中RabbitMQ的使用,涵蓋了RabbitMQ的基本知識(shí)、五種模式、數(shù)據(jù)隔離、消費(fèi)者確認(rèn)、死信交換機(jī)、延遲功能、消息堆積解決方法、高可用性以及消息重復(fù)消費(fèi)問(wèn)題的解決方案,感興趣的朋友跟隨小編一起看看吧
    2025-02-02

最新評(píng)論