關於actuator:搭建步驟,常用地endpoint

詳細參考http://www.ityouknow.com/springboot/2018/02/06/spring-boot-actuator.html(非常完整、權威的資料)

說明

研究springboot的actuator

步驟

使用actuator的步驟(基於springboot 2.2.5.RELEASE 版本,如果比較老的版本,可能有些差異,比如在endpoint上我記得是直接訪問/beans而不是/actuator/beans)

  1. pom.xml中增加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  1. 在配置文件 application.properties 中增加
    在 Spring Boot 2.x 中爲了安全起見,如果不增加如下配置,Actuator 只開放了兩個端點 /actuator/health 和 /actuator/info。
# 所有的endpoint打開
management.endpoints.web.exposure.include=*
  1. 啓動springboot,訪問 http://localhost:8080/actuator/beans
    所有的接口都在/actuator/**。如果我不想用/actuator/**,可以改,在配置文件中增加
# 如果不想用默認的/actuator/** 前綴,可以改,如使用/manage/**
management.endpoints.web.base-path=/manage

endpoint重複問題

/actuator/**,可能和自己定義的接口的endpoint一樣,衝突了會怎麼樣? 能啓動springboot,會覆蓋,actuator的優先,爲什麼會覆蓋? 是有點奇怪,正常情況下有重複的endpoint啓動springboot時會報錯

安全問題

怎麼保證安全,要不然誰都可以訪問/actuator/**? 可以結合spring security

優雅關閉springboot程序

通常我們不熟springboot項目,關閉都是使用kill 甚至是 kill -9,有沒有一種優雅的方式呢? 答案就是使用actuator提供的關閉

使用時必須在application.properties中添加配置

# 啓用優雅關閉程序,可以訪問/actuator/shutdown(POST)
management.endpoint.shutdown.enabled=true

所謂的優不優雅,應該是說這種關閉不是突然就關掉,是會做一些善後,比如未處理完的請求先處理完成

支持的endpoint

Actuator 監控分成兩類:原生端點和用戶自定義端點;自定義端點主要是指擴展性,用戶可以根據自己的實際應用,定義一些比較關心的指標,在運行期進行監控。

原生端點是在應用程序裏提供衆多 Web 接口,通過它們瞭解應用程序運行時的內部狀況。原生端點又可以分成三類:

應用配置類:可以查看應用在運行期的靜態信息:例如自動配置信息、加載的 springbean 信息、yml 文件配置信息、環境信息、請求映射信息;
度量指標類:主要是運行期的動態信息,例如堆棧、請求連、一些健康指標、metrics 信息等;
操作控制類:主要是指 shutdown,用戶可以發送一個請求將應用的監控功能關閉。
Actuator 提供了 13 個接口,具體如下表所示。

HTTP 方法 路徑 描述
GET /auditevents 顯示應用暴露的審計事件 (比如認證進入、訂單失敗)
GET /beans 描述應用程序上下文裏全部的 Bean,以及它們的關係
GET /conditions 就是 1.0 的 /autoconfig ,提供一份自動配置生效的條件情況,記錄哪些自動配置條件通過了,哪些沒通過
GET /configprops 描述配置屬性(包含默認值)如何注入Bean
GET /env 獲取全部環境屬性
GET /env/{name} 根據名稱獲取特定的環境屬性值
GET /flyway 提供一份 Flyway 數據庫遷移信息
GET /liquidbase 顯示Liquibase 數據庫遷移的纖細信息
GET /health 報告應用程序的健康指標,這些值由 HealthIndicator 的實現類提供
GET /heapdump dump 一份應用的 JVM 堆信息
GET /httptrace 顯示HTTP足跡,最近100個HTTP request/repsponse
GET /info 獲取應用程序的定製信息,這些信息由info打頭的屬性提供
GET /logfile 返回log file中的內容(如果 logging.file 或者 logging.path 被設置)
GET /loggers 顯示和修改配置的loggers
GET /metrics 報告各種應用程序度量信息,比如內存用量和HTTP請求計數
GET /metrics/{name} 報告指定名稱的應用程序度量值
GET /scheduledtasks 展示應用中的定時任務信息
GET /sessions 如果我們使用了 Spring Session 展示應用中的 HTTP sessions 信息
POST /shutdown 關閉應用程序,要求endpoints.shutdown.enabled設置爲true
GET /mappings 描述全部的 URI路徑,以及它們和控制器(包含Actuator端點)的映射關係
GET /threaddump 獲取線程活動的快照

是否可以定義自己的endpoint

可以的。上述13個叫做原生端點,也可以自定義端點

常用的端點

  • /actuator/beans:查看有哪些bean實例化了
  • /actuator/mappings:查看所有端點
  • /actuator/env:查看正在生效的profile,配置(即例如application.properties裏的一些變量)進程ID,運行的jdk/jre版本,操作系統,該springboot的jar包路徑
  • /actuator/env/{name}:跟/actuator/env的區別是,這個是僅僅查其中某個profile的,用於信息過多,需要過濾一下
  • /actuator/heapdump:獲得dump文件,我們可以使用 JDK 自帶的 Jvm 監控工具 VisualVM 打開此文件查看內存快照
  • /actuator/scheduledtasks:查看有沒有定時任務
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章