最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

1. Actuator 的入門及配置

1.1 安裝和使用 Actuator

我們可以通過 Maven 或 Gradle 將 Actuator 添加到我們的 Spring Boot 應用程序中。Maven 的依賴如下

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

Gradle 的依賴如下:

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

添加依賴后,我們只需要啟動我們的應用程序即可開始使用 Actuator。默認情況下,Actuator 會向應用程序暴露以下 URI:

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

1.2 Actuator 的基本配置

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

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

# 關閉具體某個端點,格式為management.endpoint.<id>.enabled=false
management.endpoint.shutdown.enabled=true
# 開啟所有端點的基礎功能,格式為management.endpoints.<id>.<option-name>
management.endpoints.web.exposure.include=*

上述配置將關閉 shutdown 端點,并開放所有端點。除了以上參量,還可以通過 management.server.port 配置 Actuator 的 HTTP 端口和 management.server.ssl 配置 SSL。

2. Actuator 的端點

Actuator 中各個端點描述如下:

2.1 /actuator/health

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

{
    "status": "UP"
}

如果應用程序是正常運行的,它會返回 UP,否則將返回 DOWN,并向用戶提供有關錯誤的詳細信息。

2.2 /actuator/info

該端點展示與應用程序相關的任何附加信息。如:版本,構建時間等。在應用程序訪問時,返回一個自定義 JSON 格式的響應??梢酝ㄟ^在 application.ymlapplication.properties 文件中添加鍵值對來定制信息。

例如:

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

訪問該端點,將返回如下響應:

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

2.3 /actuator/metrics

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

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

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

2.4 /actuator/beans

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

2.5 /actuator/env

該端點展示應用程序當前環(huán)境變量和屬性的詳細信息??梢允褂?/actuator/env/<key> 端點獲取指定 key 的值,也可以通過 POST 請求,修改或添加屬性。

2.6 /actuator/mappings

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

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

訪問 /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

該端點提供了所有 Spring Boot 應用程序所執(zhí)行的審核事件的詳細信息,包括事件名稱、類型、時間戳和調用者等。此外,還支持通過 Spring Security 的安全審核事件等。

2.8 /actuator/flyway

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

2.9 /actuator/scheduledtasks

該端點展示應用程序中所有調度任務的詳細信息。

2.10 /actuator/sessions

該端點允許查看和失效會話 ID。

3. 自定義 Actuator 端點

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

3.1 編寫自定義 Endpoints

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

@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

實現(xiàn)自定義 Endpoints 后,我們需要通過設置來公開它們。在 application.yml 中添加以下內容:

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

這將允許我們通過訪問 /actuator/my-endpoint 端點來查看自定義的端點信息。

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

4.1 配置度量指標

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

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)建了一個名為 CustomMetrics 的類,它是一個 Spring bean,并使用 MeterRegistry 注冊了一個名為 custom_requests_counter 的度量計數(shù)器。此外,還定義了一個 incrementRequests() 方法,以便我們可以在代碼中增加請求計數(shù)器。我們還可以添加其他類型的指標,如 Gauge、TimerDistributionSummary。

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

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

4.2.1 健康檢查

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

4.2.2 角色和權限

Actuator 支持基于角色的訪問控制,可以限制某些用戶或組的訪問。可以通過設置 management.endpoint.<id>.roles 屬性配置端點的角色。例如,以下代碼將 /actuator/shutdown 端點限制為 ADMIN 角色:

management.endpoint.shutdown.roles=ADMIN

4.2.3 外部配置

Actuator 可以通過外部配置文件進行配置??梢栽谕獠颗渲梦募性O置以下鍵來控制 Actuator 的行為:

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

4.2.4 采樣周期

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

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

5. Actuator 的安全保護

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

5.1 添加 Spring Security 依賴

要使用 Spring Security,我們需要在項目中添加以下 Maven 依賴:

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

5.2 配置 Spring Security

完成依賴添加后,我們需要配置 Spring Security,以保護 Actuator 端點。以下是一個簡單的 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)建了一個名為 ActuatorSecurityConfig 的 Spring Security 配置類,并配置了 /actuator/health/actuator/info 端點的公開訪問權限。對于其他端點,則需要用戶具有 ACTUATOR 角色才能訪問。此外,還啟用了 HTTP 基本身份驗證,以便在調用受保護的端點時要求用戶進行身份驗證。

5.3 添加用戶和角色

完成 Spring Security 配置后,我們還需要為 Actuator 添加用戶和角色??梢酝ㄟ^在 application.propertiesapplication.yml 文件中設置以下鍵來配置用戶名、密碼和角色:

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

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

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

相關文章

  • 基于SpringBoot實現(xiàn)一個有趣好玩的年會抽獎系統(tǒng)

    基于SpringBoot實現(xiàn)一個有趣好玩的年會抽獎系統(tǒng)

    年會抽獎是每個企業(yè)年末的重要活動,本文將基于SpringBoot框架,設計并實現(xiàn)一個公正、有趣、好玩的年會抽獎系統(tǒng),確保抽獎過程的透明性和隨機性,同時增加多種互動功能,有需要的可以了解下
    2026-02-02
  • java 利用HttpClient PostMethod提交json數(shù)據(jù)操作

    java 利用HttpClient PostMethod提交json數(shù)據(jù)操作

    這篇文章主要介紹了java 利用HttpClient PostMethod提交json數(shù)據(jù)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • 使用Java實現(xiàn)壓縮圖片,視頻和音頻

    使用Java實現(xiàn)壓縮圖片,視頻和音頻

    在?Java?中,要實現(xiàn)視頻壓縮通常需要使用外部的庫或工具,下面就跟隨小編一起來看看如何利用這些庫實現(xiàn)壓縮圖片,視頻和音頻功能吧
    2024-03-03
  • java利用phantomjs進行截圖實例教程

    java利用phantomjs進行截圖實例教程

    PlantomJs是一個基于javascript的webkit內核無頭瀏覽器 也就是沒有顯示界面的瀏覽器,你可以在基于 webkit 瀏覽器做的事情,它都能做到。下面這篇文章主要給大家介紹了關于java利用phantomjs進行截圖的相關資料,需要的朋友可以參考下
    2018-10-10
  • 記錄jdk21連接SQLServer因為TLS協(xié)議報錯問題

    記錄jdk21連接SQLServer因為TLS協(xié)議報錯問題

    在使用Druid連接池連接SQL Server時,可能會遇到因TLS版本不匹配導致的連接失敗問題,具體表現(xiàn)為客戶端使用TLS1.3或TLS1.2,而SQL Server僅支持TLS1.0,導致無法建立安全連接,解決方法是修改JDK的安全配置,啟用TLS1.0
    2024-10-10
  • SpringMVC+EasyUI實現(xiàn)頁面左側導航菜單功能

    SpringMVC+EasyUI實現(xiàn)頁面左側導航菜單功能

    這篇文章主要介紹了SpringMVC+EasyUI實現(xiàn)頁面左側導航菜單功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • java實現(xiàn)隨機輸出300題四則運算

    java實現(xiàn)隨機輸出300題四則運算

    本文主要介紹了java實現(xiàn)隨機輸出300題四則運算實例,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • Spring?Boot?Rest常用框架注解詳情簡介

    Spring?Boot?Rest常用框架注解詳情簡介

    這篇文章主要介紹了Spring?Boot?Rest常用框架注解,通過將嘗試解釋Spring?Boot?Rest?API的不同注釋,這些注釋是Spring?Boot中REST?API所必需的,需要的朋友可以參考一下
    2022-06-06
  • Mybatis-Plus中的MetaObjectHandler組件的使用

    Mybatis-Plus中的MetaObjectHandler組件的使用

    MetaObjectHandler是Mybatis-Plus中一個實用組件,專門用于自動處理實體對象中的特定字段,如創(chuàng)建時間、更新時間、創(chuàng)建人和修改人等,該接口允許開發(fā)者在不修改業(yè)務代碼的情況下,實現(xiàn)自動填充功能,極大地簡化了代碼的復雜性,感興趣的可以了解一下
    2024-10-10
  • Springboot整合logback多節(jié)點日志文件加端口號區(qū)分的操作方法

    Springboot整合logback多節(jié)點日志文件加端口號區(qū)分的操作方法

    這篇文章主要介紹了Springboot整合logback多節(jié)點日志文件加端口號區(qū)分的操作方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09

最新評論

万源市| 新和县| 大同县| 广饶县| 文成县| 石河子市| 九江县| 景宁| 舒兰市| 淮阳县| 台中县| 门头沟区| 左贡县| 子洲县| 会泽县| 祁连县| 修水县| 昌都县| 富民县| 枣庄市| 金沙县| 房产| 万载县| 昭苏县| 宿迁市| 通榆县| 曲阳县| 盐亭县| 油尖旺区| 浦县| 普兰店市| 金秀| 集贤县| 敖汉旗| 香河县| 灯塔市| 涟水县| 葫芦岛市| 北辰区| 万全县| 滨州市|