SpringBootActuator提供了很多生產(chǎn)級的特性,比如監(jiān)控和度量SpringBoot應(yīng)用程序。Actuator的這些特性可以通過眾多REST接口、遠程shell和JMX獲得。Actuator也可以和一些外部的應(yīng)用監(jiān)控系統(tǒng)整合(Prometheus,Graphite,DataDog,Influx,Wavefront,NewRelic等),通過一個統(tǒng)一友好的界面,監(jiān)視和管理你的應(yīng)用程序。 開啟監(jiān)控引入maven依賴: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>1234復(fù)制代碼類型:[java] 依賴引入之后可以直接啟動程序并在瀏覽器訪問: 可以得到如下結(jié)果: (UP:代表應(yīng)用正常、DOWN:代表應(yīng)用不正常、UNKNOWN代表未知狀態(tài)。) 從上面的相應(yīng)結(jié)果來看,我們得到的監(jiān)控信息非常有限,想要更多信息的話,需要在application.yml中進行配置: management: endpoint: health: show-details: always # 自定義一些相關(guān)信息,暴露給調(diào)用者 info: app: name: family describe: java123456789復(fù)制代碼類型:[java] 執(zhí)行代碼,在瀏覽器訪問: http://localhost:8888/actuator/info 還可以開放監(jiān)控端點給服務(wù)調(diào)用者: management: # 開放所有監(jiān)控端點 endpoints: web: exposure: include: '*'123456復(fù)制代碼類型:[java] management: # 開放訪問的服務(wù)端點 endpoints: web: exposure: include: beans,env management: # 不暴露對外開放的服務(wù)端點 endpoints: web: exposure: include: mappings123456789101112復(fù)制代碼類型:[java] 開啟端點和開放端點是不一樣的,絕大部分的監(jiān)控端點是默認開啟的,少部分監(jiān)控端點默認是不開啟的,對于默認不啟用的監(jiān)控服務(wù)端點,一定要先開啟: management: endpoint: shutdown: enabled: true1234復(fù)制代碼類型:[java] shutdown可以替換。 Actuator提供的接口Actuator提供了13個接口,可以分為三大類:配置接口、度量接口和其它接口,具體如下表所示。
服務(wù)保護緩存及跨域我們將服務(wù)端點開放時,面向的對象是用戶而不是對外的所有人。所以要對角色進行控制,下面來給大家用SpringSecurity來配置實現(xiàn)對Actuator服務(wù)端點的保護。 首先引入依賴: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>1234復(fù)制代碼類型:[java] 之后在SpringSecurity權(quán)限管理配置,在Configuration文件夾下創(chuàng)建 ActuatorSecurity.java: package com.example.demo.configuration;import org.springframework.context.annotation.Configuration;import org.springframework.security.config.annotation.web.builders.HttpSecurity;import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;@Configurationpublic class ActuatorSecurity extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.httpBasic().and() .authorizeRequests() // 有ACTUATOR_ADMIN角色標(biāo)識的用戶才能訪問 .antMatchers("/actuator/*").hasRole("ADMIN") // 必須登錄認證才能訪問 .antMatchers("/actuator/*").authenticated(); } }123456789101112131415161718復(fù)制代碼類型:[java] 在application.yml中配置,添加一個用戶及其具有的角色 spring: security: user: name: family password: 123456 roles: ADMIN1234567復(fù)制代碼類型:[java] 在瀏覽器訪問: http://localhost:8888/actuator/health 服務(wù)端點緩存不帶參數(shù)的端點請求SpringBoot會自動進行緩存,通過下面的配置可以設(shè)置緩存時間。 management: endpoint: beans: cache: time-to-live: 200s12345復(fù)制代碼類型:[java] 如果端點添加了SpringSecurity保護,服務(wù)端點的響應(yīng)結(jié)果將不會被緩存。 我們前面一直默認使用“/actuator”作為服務(wù)訪問的根路徑,但是這會造成安全隱患,所以可以做一些個性化配置。 management: endpoints: web: base-path: /family path-mapping: health: healthcheck123456復(fù)制代碼類型:[java] 配置修改之后訪問鏈接變成: http://localhost:8888/actuator/health |
|
來自: 碼農(nóng)9527 > 《Java》