一起來學SpringBoot | 第十五篇:actuator與spring-boot-admin 可以說的祕密
SpringBoot
是為了簡化Spring
應用的建立、執行、除錯、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML配置,我們只需遵循規範,引入相關的依賴就可以輕易的搭建出一個 WEB 工程
一起來學SpringBoot | 第十四篇:強大的 actuator 服務監控與管理 中介紹了actuator
的作用,細心的朋友可能會發現通過http restful api
的方式檢視資訊過於繁瑣也不夠直觀,效率低下,運維人員看到JSON資料更是一臉懵逼,當服務過多的時候檢視起來就過於操蛋了,每個服務都需要呼叫不同的介面來檢視監控資訊,備受各種困擾因素的我默默翻了下全球最大男性交友平臺
spring-boot-admin
什麼是SBA
SBA 全稱 Spring Boot Admin
是一個管理和監控 Spring Boot
應用程式的開源專案。分為admin-server
與 admin-client
兩個元件,admin-server
通過採集 actuator
端點資料,顯示在 spring-boot-admin-ui
上,已知的端點幾乎都有進行採集,通過 spring-boot-admin
可以動態切換日誌級別、匯出日誌、匯出heapdump
、監控各項指標 等等….
Spring Boot Admin
在對單一應用服務監控的同時也提供了叢集監控方案,支援通過eureka
consul
、zookeeper
等註冊中心的方式實現多服務監控與管理…
匯入依賴
在 pom.xml
中新增 spring-boot-admin
的相關依賴,這裡只演示單機版本的,因此就自己監控自己了
<dependencies>
<!-- 服務端:帶UI介面 -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId >
<version>2.0.0</version>
</dependency>
<!-- 客戶端包 -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.0.0</version>
</dependency>
<!-- 安全認證 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!-- 端點 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 在管理介面中與 JMX-beans 進行互動所需要被依賴的 JAR -->
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
</dependency>
</dependencies>
注意事項
如果要訪問info
介面想獲取maven
中的屬性內容請記得新增如下內容
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>build-info</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
屬性配置
在 application.properties
檔案中配置actuator
的相關配置,其中info
開頭的屬性,就是訪問info
端點中顯示的相關內容,值得注意的是Spring Boot2.x
中,預設只開放了info、health
兩個端點,剩餘的需要自己通過配置management.endpoints.web.exposure.include
屬性來載入(有include
自然就有exclude
,不做詳細概述了)。這個management.endpoints.web.base-path
屬性比較重要,因為Spring Boot2.x
後每個端點預設的路徑是/actuator/endpointId
這樣一來Spring Boot Admin
是無法正常採集的
application.properties
# 描述資訊
info.blog-url=http://blog.battcn.com
info.author=Levin
# 如果 Maven 外掛沒配置此處請註釋掉
info.version[email protected].version@
info.name[email protected].artifactId@
# 選擇啟用對應環境的配置,如果是dev則代表不用認證就能訪問監控頁,prod代表需要認證
spring.profiles.active=prod
# 日誌檔案
logging.file=./target/admin-server.log
# 載入所有的端點/預設只加載了 info / health
management.endpoints.web.exposure.include=*
# 比較重要,預設 /actuator spring-boot-admin 掃描不到
management.endpoints.web.base-path=/
management.endpoint.health.show-details=always
spring.boot.admin.client.url=http://localhost:8080
# 不配置老喜歡用主機名,看著不舒服....
spring.boot.admin.client.instance.prefer-ip=true
application-dev.properties - 空
application-prod.properties
為了安全起見,應採用認證的方式
# 登陸所需的賬號密碼
spring.security.user.name=battcn
spring.security.user.password=battcn
# 便於客戶端可以在受保護的伺服器上註冊api
spring.boot.admin.client.username=battcn
spring.boot.admin.client.password=battcn
# 便伺服器可以訪問受保護的客戶端端點
spring.boot.admin.client.instance.metadata.user.name=battcn
spring.boot.admin.client.instance.metadata.user.password=battcn
主函式
新增上 @EnableAdminServer
註解即代表是Server
端,整合UI的
package com.battcn;
import de.codecentric.boot.admin.server.config.AdminServerProperties;
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
/**
* @author Levin
*/
@SpringBootApplication
@EnableAdminServer
public class Chapter14Application {
public static void main(String[] args) {
SpringApplication.run(Chapter14Application.class, args);
}
/**
* dev 環境載入
*/
@Profile("dev")
@Configuration
public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().permitAll()
.and().csrf().disable();
}
}
/**
* prod 環境載入
*/
@Profile("prod")
@Configuration
public static class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
private final String adminContextPath;
public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
this.adminContextPath = adminServerProperties.getContextPath();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter("redirectTo");
http.authorizeRequests()
.antMatchers(adminContextPath + "/assets/**").permitAll()
.antMatchers(adminContextPath + "/login").permitAll()
.anyRequest().authenticated()
.and()
.formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
.logout().logoutUrl(adminContextPath + "/logout").and()
.httpBasic().and()
.csrf().disable();
}
}
}
測試
完成準備事項後,啟動Chapter14Application
訪問 http://localhost:8080/login 看到登陸頁面則代表一切正常,接著輸入賬號密碼點選登陸即可…
由於篇幅原因大圖就不放太多了,有興趣的朋友可以直接fork
程式碼執行即可
總結
目前很多大佬都寫過關於 SpringBoot
的教程了,如有雷同,請多多包涵,本教程基於最新的 spring-boot-starter-parent:2.0.2.RELEASE
編寫,包括新版本的特性都會一起介紹…
說點什麼
- 個人QQ:1837307557
- battcn開源群(適合新手):391619659
- 微信公眾號(歡迎調戲):
battcn
相關推薦
一起來學SpringBoot | 第十五篇:actuator與spring-boot-admin 可以說的祕密
SpringBoot 是為了簡化 Spring 應用的建立、執行、除錯、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML配置,我們只需遵循規範,引入相關的依賴就可以輕易的搭建出一個 WEB 工程 一起來學Spr
一起來學SpringBoot | 第十四篇:強大的 actuator 服務監控與管理
SpringBoot 是為了簡化 Spring 應用的建立、執行、除錯、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML配置,我們只需遵循規範,引入相關的依賴就可以輕易的搭建出一個 WEB 工程 actuato
一起來學SpringBoot | 第十九篇:輕鬆搞定資料驗證(一)
SpringBoot是為了簡化Spring應用的建立、執行、除錯、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML配置,我們只需遵循規範,引入相關的依賴就可以輕易的搭建出一個 WEB 工程 對於任何一個
一起來學SpringBoot | 第二十六篇:輕鬆搞定安全框架(Shiro)
SpringBoot 是為了簡化 Spring 應用的建立、執行、除錯、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML配置,我們只需遵循規範,引入相關的依賴就可以輕易的搭建出一個 WEB 工程 Shiro 是
一起來學SpringBoot | 第十一篇:整合Swagger線上除錯
SpringBoot 是為了簡化 Spring 應用的建立、執行、除錯、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML配置,我們只需遵循規範,引入相關的依賴就可以輕易的搭建出一個 WEB 工程 隨著網際網路技
一起來學SpringBoot(十五)MybatisPlus的整合
MyBatis-Plus(簡稱 MP)是一個MyBatis的增強工具 ,在 MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。本篇文章介紹的是與springboot的整合。 特性 無侵入:只做增強不做改變,引入它不會對現有工程產生影響,
跟我學SpringCloud | 第十五篇:微服務利劍之APM平臺(一)Skywalking
目錄 SpringCloud系列教程 | 第十五篇:微服務利劍之APM平臺(一)Skywalking 1. Skywalking概述 2. Skywalking主要功能 3. Skywalking主要特性
SpringBoot第十五篇:swagger構建優雅文件
作者:追夢1819 原文:https://www.cnblogs.com/yanfei1819/p/11007470.html 版權宣告:本文為博主原創文章,轉載請附上博文連結! 引言 前面的十四篇文介紹了 SpringBoot 的一些基本和常用的功能。後面,我們將介紹 SpringBoot 的高階的功
一起來學SpringBoot | 第十三篇:RabbitMQ延遲佇列
SpringBoot 是為了簡化 Spring 應用的建立、執行、除錯、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML配置,我們只需遵循規範,引入相關的依賴就可以輕易的搭建出一個 WEB 工程 初探Rabbi
一起來學SpringBoot(十)快取的使用
Spring Framework支援透明地嚮應用程式新增快取。從本質上講,抽象將快取應用於方法,從而根據快取中可用的資訊減少執行次數。快取邏輯應用透明,不會對呼叫者造成任何干擾。只要通過@EnableCaching 註釋啟用了快取支援,Spring Boot就會
一起來學SpringBoot(十一)定時任務的使用
Quartz是一個功能豐富的開源作業排程庫,幾乎可以整合在任何Java應用程式中 - 從最小的獨立應用程式到最大的電子商務系統。Quartz可用於建立簡單或複雜的計劃,以執行數十,數百甚至數萬個作業; 將任務定義為標準Java元件的作業,這些元件可以執行幾乎任何
轉載:SpringBoot非官方教程 | 第十五篇:Springboot整合RabbitMQ
這篇文章帶你瞭解怎麼整合RabbitMQ伺服器,並且通過它怎麼去傳送和接收訊息。我將構建一個springboot工程,通過RabbitTemplate去通過MessageListenerAdapter去訂閱一個POJO型別的訊息。 準備工作 15min ID
一起來學SpringBoot(十六)優雅的整合Shiro
Apache Shiro是一個功能強大且易於使用的Java安全框架,可執行身份驗證,授權,加密和會話管理。藉助Shiro易於理解的API,您可以快速輕鬆地保護任何應用程式 - 從最小的移動應用程式到最大的Web和企業應用程式。網上找到大部分文章都是以前Sprin
SpringBoot非官方教程 | 第十五篇:Springboot整合RabbitMQ
這篇文章帶你瞭解怎麼整合RabbitMQ伺服器,並且通過它怎麼去傳送和接收訊息。我將構建一個springboot工程,通過RabbitTemplate去通過MessageListenerAdapter去訂閱一個POJO型別的訊息。 準備工作 15min ID
第十五篇:JavaScript 之 Dom操作
頁面 對象模型 面向 方法 bsp log gpo eva div 一、後臺管理頁面布局 二、JavaScript函數 三、eval以及時間操作 四、JavaScript作用域 五、JavaScript面向對象模型 六、DOM選擇器 七、DOM事件操作 八、DOM綁定事件的
第十五篇:前輩opencv學習入門經驗
首先,搞影象處理,熟悉影象演算法是必經之路,如果上過影象處理這門課的話,再好不過。如果沒有,我推薦中科院研究生院劉定生老師的數字影象處理與分析(視訊),這位老師上課引人入勝,值得推薦。其次,在這個階段,配套的書籍自然是《岡薩雷斯版數字影象處理》這本書,最好同時用matlab軟體,模擬每一個影象演算法案例,推薦
Python 學習 第十五篇:模塊搜索路徑和包導入
部分 blank 所有 python 環境變量 bsp 引入 html pytho 在導入自定義的模塊時,除了指定模塊名之外,也需要指定目錄,由於Python把目錄稱作包,因此,這類導入被稱為包導入。包導入把計算機上的目錄變成Python的命名空間,而目錄中所包含的子目錄和
SpringBoot第十二篇:整合jsp
作者:追夢1819 原文:https://www.cnblogs.com/yanfei1819/p/10953600.html 版權宣告:本文為博主原創文章,轉載請附上博文連結! 引言 SpringBoot 雖然官方推薦使用 thymelaf 模板引擎,但是也支援jsp,只不過需要做一些修改。本文將講解
SpringBoot第十四篇:統一異常處理
作者:追夢1819 原文:https://www.cnblogs.com/yanfei1819/p/10984081.html 版權宣告:本文為博主原創文章,轉載請附上博文連結! 引言 本文將談論 SpringBoot 的預設錯誤處理機制,以及如何自定義錯誤響應。 版本資訊 JDK:1.8 Spri
SpringBoot第十六篇:自定義starter
作者:追夢1819 原文:https://www.cnblogs.com/yanfei1819/p/11058502.html 版權宣告:本文為博主原創文章,轉載請附上博文連結! 前言 這一段時間專案趕進度,故該系列部落格更新沒有之前那麼頻繁,望諒解。 SpringBoot 用起來方便,它預設集成了