經過配置使用actuator查看監控和度量信息mysql
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
啓動項目,查看日誌,發現可以訪問地址以下git
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-actuator</artifactId> </dependency>
啓動項目,查看日誌,發現可以訪問地址以下web
能夠看到,可訪問地址增長了spring
建議安裝jsonview插件方便查看jsonsql
關閉權限限制,application.propertiesjson
management.security.enabled=false
除開health接口還依賴endpoints.health.sensitive
的配置外,其餘接口都不須要輸入用戶名和密碼。api
Spring Boot Actuator 的關鍵特性是在應用程序裏提供衆多 Web 接口,經過它們瞭解應用程序運行時的內部情況。Actuator 提供了以下接口,能夠分爲三大類:配置接口、度量接口和其它接口,具體以下表所示。安全
HTTP方法 | 路徑 | 描述 | 鑑權 | |
---|---|---|---|---|
GET | /auditevents | 審計事件 | true | |
GET | /autoconfig | 配置 | 查看自動配置的使用狀況springboot 提供了一份自動配置報告,記錄哪些自動配置條件經過了,哪些沒經過app |
true |
GET | /configprops | 配置 | 查看配置屬性,包括默認配置 描述配置屬性(包含默認值)如何注入Bean |
true |
GET | /beans | 配置 | 查看bean及其關係列表 描述應用程序上下文裏所有的Bean,以及它們的關係 |
true |
GET | /dump | 打印線程棧,獲取線程活動的快照 | true | |
GET | /env | 配置 | 查看全部環境變量 | true |
GET | /env/{name} | 配置 | 根據名稱獲取特定的環境屬性值 | true |
GET | /health | 配置 | 查看應用健康指標,這些值由HealthIndicator的實現類提供 包括:Cassandra、Composite、Couchbase、DataSource、DiskSpace、 Elasticsearch、Jms、Ldap、Mail、Mongo、Ordered、Rabbit、Redis、solr |
false |
GET | /heapdump | true | ||
GET | /info | 配置 | 查看應用信息,這些信息由info打頭的屬性提供 | false |
GET | /loggers | true | ||
GET | /loggers/{name} | true | ||
POST | /loggers/{name} | true | ||
GET | /mappings | 查看全部url映射,以及它們和控制器(包含Actuator端點)的映射關係 | true | |
GET | /metrics | 度量 | 報告各類應用程序度量信息,好比內存用量和HTTP請求計數 | true |
GET | /metrics/{name} | 度量 | 報告指定名稱的應用程序度量值 | true |
POST | /shutdown | 關閉應用,要求endpoints.shutdown.enabled設置爲true | true | |
GET | /trace | 查看基本追蹤信息,提供基本的HTTP請求跟蹤信息(時間戳、HTTP頭等) | true |
在spring-boot-actuator-1.5.9.RELEASE.jar包中org.springframework.boot.actuate.endpoint下,查看具體類實現,
能夠設置某一項是否顯示
endpoints.beans.enabled=false
查看代碼這裏的endpoints,均繼承自AbstractEndpoint,其中AbstractEndpoint含有屬性以下
sensitive 敏感信息
enabled 啓用
除原有支持的健康檢查外,還支持擴展。HealthIndicator
步驟:
1》實現HealthIndicator接口,實現邏輯,歸入spring容器管理中
@Component public class MyHealthIndicator implements HealthIndicator { @Override public Health health() { //return Health.down().withDetail("error", "spring test error").build(); return Health.up().withDetail("success", "spring test success").build(); } }
actuator暴露的health接口權限是由兩個配置: management.security.enabled
和 endpoints.health.sensitive
組合的結果進行返回的。
management.security.enabled | endpoints.health.sensitive | Unauthenticated | Authenticated |
---|---|---|---|
false | false | Full content | Full content |
false | true | Status only | Full content |
true | false | Status only | Full content |
true | true | No content | Full content |
在全部加載的配置文件中以info開頭的配置,都可以顯示在這裏,如
info.name=myinfo info.version=1.0.0 info.datasource.url=jdbc:mysql://127.0.0.1:3306/springboot
同時也會顯示git信息git.properties
git.branch=master
顯示以下
{ datasource: { url: "jdbc:mysql://127.0.0.1:3306/springboot", name: "root", password: "root", driverClassName: "com.mysql.jdbc.Driver" }, name: "myinfo", version: "1.0.0", git: { branch: "master" } }
CounterService:計數服務,能夠直接使用
如查看上文中的user/home訪問次數
@Autowired private CounterService counterService;//引入 @GetMapping("/user/home") public String home(@RequestParam("error") String error) { counterService.increment("user.home.request.count");//埋點 if(error.equals("test")) { throw new NullPointerException(); } return "home"; }
此時查看便可:http://127.0.0.1:8080/metrics
GaugeService:用來統計某個值,查看某個監控點的值
@Autowired private GaugeService gaugeService; @GetMapping("/user/create") public String create(int age) { gaugeService.submit("user.create.age", age); return "create"; }
此時查看便可:http://127.0.0.1:8080/metrics
1》添加配置類,以下
@Configuration public class ExportConfiguration { @Bean @ExportMetricWriter public MetricWriter createMetricWriter(MBeanExporter exporter) { return new JmxMetricWriter(exporter); } }
查看MetricWriter 支持以下幾種,也可自行定義
這裏使用了Jmx,
1》增長security的pom
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
配置文件設置
security.basic.enabled=true
security.user.name=admin
security.user.password=password
綜合以上可做以下配置:
security.basic.enabled=true
security.basic.path=/admin #針對/admin路徑進行認證
security.user.name=admin #認證使用的用戶名
security.user.password=password #認證使用的密碼
management.security.roles=SUPERUSER
management.port=11111 #actuator暴露接口使用的端口,爲了和api接口使用的端口進行分離
management.context-path=/admin #actuator暴露接口的前綴
management.security.enabled=true #actuator是否須要安全保證
endpoints.metrics.sensitive=false #actuator的metrics接口是否須要安全保證
endpoints.metrics.enabled=true
endpoints.health.sensitive=false #actuator的health接口是否須要安全保證
endpoints.health.enabled=true
查看Jmx方式JDK有三種在bin下,jConsole、jmc、jvisualVM
JConsole方式
Jvisualvm方式
注意jvisualvm默認不支持MBEAn,Jconsole等須要本身安裝插件,在 工具→插件中安裝插件
jmc方式
注意:這三種工具不單單能查看Mbean,其餘信息也能查看,和頁面內容查看一致。
與上面配置的JMX沒有關係,配置jmx只是增長了MetricWriter 項