自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一文帶你了解Spring Actuator

開發(fā) 項目管理
服務監(jiān)控是為了更好的了解服務運行狀況,及時發(fā)現(xiàn)服務可能出現(xiàn)的問題,并在出現(xiàn)故障時能夠有效的定位問題產(chǎn)生的原因。更大層面解決系統(tǒng)運行過程中的維護 成本。關(guān)于監(jiān)控相關(guān)的應用還有一些,比如SkyWalking、Zipkin、Elastic APM等等。

服務監(jiān)控

Spring Boot Actuator是一個用于監(jiān)控和管理Spring Boot應用的子項目,它提供了一組REST端點和命令行工具, 用于查看應用的運行狀態(tài)、性能指標和健康狀況等。Actuator還支持應用度量數(shù)據(jù)的導出,以及自定義端點和安全控制等功能。通過使用Spring Boot Actuator,開發(fā)人員可以更加方便地了解應用的運行狀況,及時發(fā)現(xiàn)和解決問題。

概述

隨著微服務架構(gòu)的普及,Spring Boot 已經(jīng)成為Java開發(fā)人員的首選框架。然而,隨著應用的規(guī)模不斷擴大, 如何有效地監(jiān)控和管理這些應用成為一個重要的問題。Spring Boot Actuator的出現(xiàn),為開發(fā)人員提供了一個解決方案。本文將詳細介紹Spring Boot Actuator的功能、工作原理、使用場景以及應用示例,幫助讀者更好地理解和掌握這一工具。

功能簡介

  • 應用度量數(shù)據(jù)的導出:Actuator 可以將應用的運行數(shù)據(jù)導出到各種不同的存儲后端,例如 Prometheus、Datadog、New Relic 等。這樣,開發(fā)人員可以方便地使用這些數(shù)據(jù)來監(jiān)控應用的性能和健康狀況。
  • REST 端點:Actuator 提供了一組 REST 端點,用于查看應用的運行狀態(tài)、健康狀況、度量數(shù)據(jù)等信息。開發(fā)人員可以通過 HTTP 請求來獲取這些數(shù)據(jù),并使用各種工具進行可視化展示。
  • 命令行工具:除了 REST 端點之外,Actuator 還提供了一些命令行工具,例如 spring-boot-cli 和 spring-boot-admin。這些工具可以讓開發(fā)人員更方便地管理和監(jiān)控應用。
  • 自定義端點:Actuator 支持自定義端點的開發(fā),讓開發(fā)人員可以根據(jù)自己的需求來暴露自定義的監(jiān)控數(shù)據(jù)。這樣可以更靈活地監(jiān)控和管理應用。
  • 安全控制:Actuator 支持對監(jiān)控端點的安全控制,例如限制訪問權(quán)限、身份驗證等。這樣可以保護應用的敏感信息不被泄露。

Spring-Actuator

默認監(jiān)控服務

服務端點

描述

auditevents

公開當前應用程序的審核事件信息。

beans

顯示應用程序中所有Spring bean的完整列表。

caches

公開可用的緩存

conditions

顯示在配置和自動配置類上評估的條件以及它們匹配或不匹配的原因。

configprops

顯示所有@ConfigurationProperties的有序列表。

env

公開Spring的ConfigurableEnvironment中的屬性

flyway

顯示已應用的任何Flyway數(shù)據(jù)庫遷移。

health

顯示應用健康信息。

httptrace

顯示HTTP跟蹤信息(默認情況下,最后100個HTTP請求 – 響應交換)。

info

顯示任意應用信息。

integrationgraph

顯示Spring集成圖。

loggers

顯示和修改應用程序中日志記錄器的配置。

liquibase

顯示已應用的任何Liquibase數(shù)據(jù)庫遷移。

metrics

顯示當前應用程序的“指標”信息。

mappings

顯示所有@RequestMapping路徑的有序列表。

scheduledtasks

顯示應用程序中的計劃任務。

sessions

允許從Spring Session支持的會話存儲中檢索和刪除用戶會話。使用Spring Session對響應式Web應用程序的支持時不可用。

shutdown

允許應用程序正常關(guān)閉。

http://localhost:8080/actuator

  • 依賴
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
  • 配置
management:
  endpoints:
    web:
      exposure:
#        [health, info]
        include: "*"
  • 自定義監(jiān)控

監(jiān)控端點相關(guān)注解:

  • @Endpoint:定義一個監(jiān)控端點,同時支持HTTP和JMX兩種方式。
  • @WebEndpoint:定義一個監(jiān)控端點,只支持HTTP方式。
  • @JmxEndpoint:定義一個監(jiān)控端點,只支持JMX方式。
  • @ReadOperation:作用在方法上,可用來返回端點展示的信息(通過 Get 方法請求)。
  • @WriteOperation:作用在方法上,可用來修改端點展示的信息(通過 Post 方法請求)。
  • @DeleteOperation:作用在方法上,可用來刪除對應端點信息(通過 Delete 方法請求)。
  • @Selector:作用在參數(shù)上,用來定位一個端點的具體指標路由。

自定義一個端點服務:

@Endpoint(id = "custom")
public class CustomEndpoint {
  /**
   * /actuator/custom
   */
  @ReadOperation
  public Map custom() {
    return new HashMap();
  }

  /**
   * /actuator/custom/{name}?value={value}
   */
  @ReadOperation
  public Map name(@Selector String name, @Nullable String value) {
    return new HashMap();
  }
}

Spring-Admin

Spring-Actuator主要實現(xiàn)數(shù)據(jù)的采集,以及提供REST API以及JMX的訪問渠道,那么數(shù)據(jù)具體如何友好地顯示出來?這時我們需要對應的UI,其中spring-boot-admin就是這樣一款工具。

http://localhost:8080/applications

  • 服務端
<dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-server</artifactId>
    </dependency>
@EnableAdminServer
public class Application{   }
  • 客戶端
<dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-client</artifactId>
        <version>2.6.2</version>
    </dependency>

客戶端配置

spring:
  boot:
    admin:
      client:
        url: http://localhost:8080

Prometheus + Grafana

上面說到,Actuator除了采集指標,提供訪問API外,還提供了“應用度量數(shù)據(jù)的導出”的功能,這樣就能將我們采集到的指標輸出到指定的存儲服務或終端以便進一步分析。其中Prometheus就是這樣一個應用。

  • Prometheus 時序數(shù)據(jù)庫,用于存儲數(shù)據(jù),提供并提供查詢,它存儲了計算機系統(tǒng)在各個時間點上的監(jiān)控數(shù)據(jù)
  • Grafana 儀表盤,提供監(jiān)控指標可視化界面。
  • 依賴
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
  • 配置
management:
  endpoints:
    web:
      exposure:
        include: "*"
  metrics:
    export:
      prometheus:
        enabled: true
  prometheus:
    enabled: true
  • prometheus配置
scrape_configs:
  - job_name: 'spring-boot-actuator'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['localhost:8080'] # 使用你的Spring Boot應用程序的實際主機和端口替換
  • 啟動
prometheus.exe --config.file=prometheus.yml

grafana-server.exe

由于篇幅有限,關(guān)于Grafana如何集成Prometheus,網(wǎng)上有很多具體實踐,這里不重復贅述...

問題

  • 服務端點

由于項目使用spring-boot版本為2.3.7.RELEASE,而spring-boot-admin-starter-server版本設(shè)置設(shè)置為2.7.x版本時,UI相關(guān)配置一直無法加載,通過源碼可以看到

在2.6.x版本中對應spring-boot-admin-server-ui存在META-IN\spring.factories文件

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  de.codecentric.boot.admin.server.ui.config.AdminServerUiAutoConfiguration

而在2.7.x版本中,spring.factories刪除了且改為了 META-INF\spring\org.springframework.boot.autoconfigure.AutoConfiguration.imports

de.codecentric.boot.admin.server.ui.config.AdminServerUiAutoConfiguration

因此如果需要使用2.7.x版本的spring-boot-admin,記得把spring-boot升級到2.7.x

  • 參數(shù)名稱

參數(shù)名稱被解析為arg0,導致請求匹配失敗。通過下面的配置保證編譯后的文件通過反射獲取的參數(shù)名稱不變

<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.11.0</version>
          <configuration>
              <debug>false</debug>
              <!-- 防止方法參數(shù)名解析為arg0...  -->
              <compilerArgs>
                  <arg>-parameters</arg>
              </compilerArgs>
          </configuration>
      </plugin>

如果使用Idea,你可以在應用啟動后,Actuator功能面板的Mappings中看到服務地址的變化

結(jié)束語

服務監(jiān)控是為了更好的了解服務運行狀況,及時發(fā)現(xiàn)服務可能出現(xiàn)的問題,并在出現(xiàn)故障時能夠有效的定位問題產(chǎn)生的原因。更大層面解決系統(tǒng)運行過程中的維護 成本。關(guān)于監(jiān)控相關(guān)的應用還有一些,比如SkyWalking、Zipkin、Elastic APM等等。

責任編輯:武曉燕 來源: Java技術(shù)指北
相關(guān)推薦

2023-11-20 08:18:49

Netty服務器

2023-11-06 08:16:19

APM系統(tǒng)運維

2022-11-11 19:09:13

架構(gòu)

2022-02-24 07:34:10

SSL協(xié)議加密

2023-10-27 08:15:45

2020-02-02 15:14:24

HTTP黑科技前端

2020-10-08 14:32:57

大數(shù)據(jù)工具技術(shù)

2025-01-15 09:06:57

servlet服務器Java

2022-09-29 13:09:38

DataClassPython代碼

2022-04-28 09:22:46

Vue灰度發(fā)布代碼

2018-10-22 08:14:04

2022-02-18 10:13:07

SolrElasticSea開源

2019-07-04 15:16:52

數(shù)據(jù)挖掘大數(shù)據(jù)算法

2022-09-06 11:21:49

光網(wǎng)絡光纖

2023-03-31 08:16:53

Flutter優(yōu)化內(nèi)存管理

2023-12-06 16:28:56

2024-05-07 08:49:36

Hadoop數(shù)據(jù)存儲-分布式存儲

2019-08-06 09:00:00

JavaScript函數(shù)式編程前端

2023-05-17 11:33:45

梯度下降機器學習

2024-05-27 00:00:00

.NET游戲引擎C#
點贊
收藏

51CTO技術(shù)棧公眾號