Spring Boot提供了良好的服務監控模塊,只須要經過簡單的配置即可以完成服務監控和管理。可是服務監控這塊內容每每是最容易被忽略的一塊內容,今天咱們一塊兒來學習一下使用spring-boot-actuator
進行服務監控。spring-boot-actuator
提供了監控端點,這些端點直接返回JSON字符串
,經過這些端點能夠查詢服務運行情況,爲了防止端點直接暴露,通常狀況下會使用安全框架,如Spring Security來管理這些端點的安全性。git
一 經常使用的端點
端點地址 | 描述 | 默認啓用 |
---|---|---|
auditevents | 獲取當前應用暴露的審計事件信息 | 是 |
beans | 獲取應用中全部的bean的完整關係列表 | 是 |
caches | 獲取公開能夠用的緩存 | 是 |
conditions | 獲取自動配置條件信息,記錄哪些自動配置條件經過和沒經過的緣由 | 是 |
configprops | 獲取全部配置屬性,包括默認配置,顯示一個全部 @ConfigurationProperties 的整理列版本 | 是 |
env | 獲取全部環境變量 | 是 |
flyway | 獲取已應用的全部Flyway數據庫遷移信息,須要一個或多個 Flyway Bean | 是 |
health | 獲取應用程序健康指標(運行情況信息) | 是 |
httptrace | 獲取HTTP跟蹤信息(默認狀況下,最近100個HTTP請求-響應交換)。須要 HttpTraceRepository Bean | 是 |
info | 獲取應用程序信息 | 是 |
integrationgraph | 顯示 Spring Integration 圖。須要依賴 spring-integration-core | 是 |
loggers | 顯示和修改應用程序中日誌的配置 | 是 |
liquibase | 獲取應用的全部Liquibase數據庫遷移。須要一個或多個 Liquibase Bean | 是 |
metrics | 獲取系統度量指標信息 | 是 |
mappings | 顯示全部@RequestMapping路徑的整理列表 | 是 |
scheduledtasks | 顯示應用程序中的計劃任務 | 是 |
sessions | 容許從Spring Session支持的會話存儲中檢索和刪除用戶會話。須要使用Spring Session的基於Servlet的Web應用程序 | 是 |
shutdown | 關閉應用 | 否 |
threaddump | 獲取系統線程轉儲信息 | 是 |
默認狀況下,除了shutdown
,其餘端點都是啓動狀態。github
1.1 如何使用
在項目中引入spring-boot-actuator
的依賴,就能夠正常使用了web
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
1.2 如何訪問
/actuator+端點地址
例如想要訪問health端點,則訪問http://ip:port/actuator/health;redis
1.3 端點開啓/關閉
management: endpoint: # 開啓shutdown端點 shutdown: enabled: true
啓用/禁用全部端點spring
management: endpoints: enabled-by-default: true
1.4 端點暴露
默認狀況下,只有health
和info
暴露了http端口,這些端點支持經過http
和JMX
訪問,若是須要訪問具體的端點則須要配置暴露。數據庫
暴露http
端點緩存
management: endpoints: web: exposure: include: health,info
暴露JMX
端點安全
management: endpoints: jmx: exposure: include: health,info
二 經常使用端點解析
2.1 health
health
包含的健康檢查項有DataSourceHealthIndicator
,DiskSpaceHealthIndicator
,MongoHealthIndicator
,ReidsHealthIndicator
,CassandraHealthIndicator
。微信
關閉特定的檢查項配置以下,關閉redis檢查項:session
management: health: redis: enabled: false
默認狀況下health只是簡單的展現了UP
和DOWN
兩種狀態,若是想要看詳細信息,則須要配置
management: endpoint: health: show-details: always
2.2 metrics
metrics
可使用帶PathVariable參數,參數爲具體的度量值,如查看cpu大小,http://localhost:8080/actuator/metrics/system.cpu.count;
2.3 info
info
使用的時候須要在配置文件中自定義信息,自定義信息以info
開頭。
例如在配置文件中增長以下內容:
info: person: name: Java旅途 age: 18
訪問info
端點顯示的是去掉info的一個JSON串:
person: name: Java旅途 age: 18
Spring-Boot-acturator
使用起來很方便,可是缺點也很明顯,就是沒有圖形化界面。使用起來也不是很友好,下一章中,咱們將使用有圖形化的Spring-Boot-Admin
來進行服務監控。
本文示例代碼已上傳至github,點個star
支持一下!
Spring Boot系列教程目錄
spring-boot-route(一)Controller接收參數的幾種方式
spring-boot-route(二)讀取配置文件的幾種方式
spring-boot-route(五)整合Swagger生成接口文檔
spring-boot-route(六)整合JApiDocs生成接口文檔
spring-boot-route(七)整合jdbcTemplate操做數據庫
spring-boot-route(八)整合mybatis操做數據庫
spring-boot-route(九)整合JPA操做數據庫
spring-boot-route(十一)數據庫配置信息加密
spring-boot-route(十二)整合redis作爲緩存
spring-boot-route(十三)整合RabbitMQ
spring-boot-route(十五)整合RocketMQ
spring-boot-route(十六)使用logback生產日誌文件
spring-boot-route(十七)使用aop記錄操做日誌
spring-boot-route(十八)spring-boot-adtuator監控應用
spring-boot-route(十九)spring-boot-admin監控服務
spring-boot-route(二十)Spring Task實現簡單定時任務
spring-boot-route(二十一)quartz實現動態定時任務
spring-boot-route(二十二)實現郵件發送功能
這個系列的文章都是工做中頻繁用到的知識,學完這個系列,應付平常開發綽綽有餘。若是還想了解其餘內容,掃面下方二維碼告訴我,我會進一步完善這個系列的文章!