Spring Boot實踐---基於spring-boot-actuator的監控插件: Spring Boot Admin

1、入門使用:Actuator插件

Actuator插件是SpringBoot原生提供的一個服務,能夠經過暴露端點路由,用來輸出應用中的諸多 端點信息。實戰一下!git

  • pom.xml中添加依賴:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

啓動Spring Boot應用程序以後,只要在瀏覽器中輸入端點信息就能得到應用的一些狀態信息。github

經常使用端點列舉以下,能夠一個個詳細試一下:spring

  • /info        應用基本信息
  • /health       健康度信息
  • /metrics      運行指標
  • /env        環境變量信息
  • /loggers      日誌相關
  • /dump       線程相關信息
  • /trace       請求調用軌跡

固然此時只能使用/health 和 /info端點,其餘由於權限問題沒法訪問。想訪問指定端點的話能夠在yml配置中添加相關的配置項,好比/metrics端點則須要配置:瀏覽器

endpoints:
  metrics:
    sensitive: false

此時瀏覽器訪問/metrics端點就能獲得諸以下面所示的信息:session

{
    "mem": 71529,
    "mem.free": 15073,
    "processors": 4,
    "instance.uptime": 6376,
    "uptime": 9447,
    "systemload.average": -1.0,
    "heap.committed": 48024,
    "heap.init": 16384,
    "heap.used": 32950,
    "heap": 506816,
    "nonheap.committed": 23840,
    "nonheap.init": 160,
    "nonheap.used": 23506,
    "nonheap": 0,
    "threads.peak": 25,
    "threads.daemon": 23,
    "threads.totalStarted": 28,
    "threads": 25,
    "classes": 6129,
    "classes.loaded": 6129,
    "classes.unloaded": 0,
    "gc.copy.count": 74,
    "gc.copy.time": 173,
    "gc.marksweepcompact.count": 3,
    "gc.marksweepcompact.time": 88,
    "httpsessions.max": -1,
    "httpsessions.active": 0
}

固然也能夠開啓所有端點權限,只需以下配置便可:spring-boot

endpoints:
  sensitive: false

因爲Actuator插件提供的監控能力畢竟有限,並且UI比較簡陋,所以須要一個更加成熟一點的工具工具


2、Spring Boot Admin監控系統

SBA則是基於Actuator更加進化了一步,其是一個針對Actuator接口進行UI美化封裝的監控工具。咱們來實驗一下。ui

  • 首先來建立一個Spring Boot Admin Server工程做爲服務端

pom.xml中加入以下依賴:url

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-server</artifactId>
    <version>1.5.7</version>
</dependency>

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-server-ui</artifactId>
    <version>1.5.7</version>
</dependency>

而後在應用主類上經過加註解來啓用Spring Boot Adminspa

@EnableAdminServer
@SpringBootApplication
public class SpringbtAdminServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbtAdminServerApplication.class, args);
    }
}

啓動程序,瀏覽器打開 localhost:8081 查看Spring Boot Admin主頁面:

Spring Boot Admin主頁面

此時Application一欄空空如也,等待待監控的應用加入

  • 建立要監控的Spring Boot應用

pom.xml中加入如下依賴

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>1.5.7</version>
</dependency>

而後在yml配置中添加以下配置,將應用註冊到Admin服務端去:

spring:
  boot:
    admin:
      url: http://localhost:8081
      client:
        name: AdminTest

Client應用一啓動,Admin服務立馬推送來了消息,告訴你AdminTest上線了:

應用上線推送消息

此時去Admin主界面上查看,發現Client應用確實已經註冊上來了:

Client應用已註冊上來

  • 查看Detail

Detail信息

  • 查看 Metrics

Metrics信息

  • 查看 Enviroment

Enviroment信息

  • 查看JMX

JMX信息

  • 查看Threads

Threads信息

  • 查看Trace與詳情

Trace信息

點擊最上方JOURNAL,會看到被監控應用程序的事件變化:

應用程序的事件變化信息

圖中能夠清晰地看到,應用從 REGISTRATION → UNKNOWN → UP 的狀態跳轉。

這樣就將Actuator插件提供的全部端點信息在SBA中所有嘗試了一遍。


參考文獻

相關文章
相關標籤/搜索