1. 程式人生 > >十三、springboot 優雅整合spring-boot-admin 實現程式監控

十三、springboot 優雅整合spring-boot-admin 實現程式監控

前言

我們知道專案的監控是尤為重要的,但是我們如果用jdk 自帶的jconsole 和jvisualvm 的話會非常繁瑣,且介面不是很友好。之前我們使用了spring boot 專案,但是都沒有對專案有一個很好的監控。在spring 家族中有 spring-boot-admin 可以很好的幫我們起到監控微服務專案的作用。

spring-boot-admin 是一個針對 Spring Boot 的 Actuator 介面進行 UI 美化封裝的監控工具,它可以在列表中瀏覽所有被監控 spring-boot 專案的基本資訊、詳細的 Health 資訊、記憶體資訊、JVM 資訊、垃圾回收資訊、各種配置資訊(比如資料來源、快取列表和命中率)等,還可以直接修改 logger 的 level。

spring-boot-admin 分為服務端和客戶端。服務端是一個單獨的微服務,用來檢視監控的專案的執行情況,客戶端是我們一個個的微服務專案。所以要想讓我們的專案被服務端監控到,就需要將我們的服務註冊到服務端去。

好了,我們來動手試試吧。

admin-server

我們先來搭建spring-boot-admin 的服務端,上面說了服務端是一個單獨的專案。所以我們建立一個新的springboot 專案。建立好後,我們做一下修改。

pom.xml

在pom 檔案中,我們引入 如下依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.quellanan</groupId>
    <artifactId>springbootadmin</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springbootadmin</name>
    <description>springbootadmin project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-boot-admin.version>2.2.1</spring-boot-admin.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-dependencies</artifactId>
                <version>${spring-boot-admin.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

上面是我整個的pom 檔案,可以看到我引入了web 、admin-starter-server、security。
如果考慮其他的,可以只引用admin-starter-server 就可以實現效果。

啟動類

在我們的啟動類上加入@EnableAdminServer 註解,如果不加的話,專案可以正常啟動,但是看不到任何東西。@EnableAdminServer 註解的作用就是啟動監控。

@SpringBootApplication
@EnableAdminServer
public class SpringbootadminApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootadminApplication.class, args);
    }
}

配置 security

這樣配置好之後,就可以啟動專案啦,但是我們這裡先不啟動,因為上一節我們學習了,spring-boot-security .這裡我們將它用起來。
我們前面已經引入了 security ,接下來,我們在application中增加配置

spring.security.user.name=admin
spring.security.user.password=123456

表示這個使用者才能訪問。另外我們建立一個 SecurityConfig 類 繼承 WebSecurityConfigurerAdapter 重寫 configure(HttpSecurity http) 方法。程式碼如下:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        SavedRequestAwareAuthenticationSuccessHandler successHandler
                = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter("redirectTo");
        successHandler.setDefaultTargetUrl("/");
        http.authorizeRequests()
                .antMatchers("/assets/**").permitAll()
                .antMatchers("/login").permitAll()
                .anyRequest().authenticated().and()
                .formLogin().loginPage("/login")
                .successHandler(successHandler).and()
                .logout().logoutUrl("/logout").and()
                .httpBasic().and()
                .csrf()
                .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
                .ignoringAntMatchers(
                        "/instances",
                        "/actuator/**"
                );
    }
}

現在我們啟動一下專案看看。啟動專案後輸入

http://localhost:8080

會跳轉到 登入介面,進入主頁現在是什麼都沒有的。

admin-client

到此我們服務端的配置就已經可以了,現在我們來配置一下客戶端,我們隨便找一個Springboot 專案,或者自己建立一個新的專案都可以。

pom.xml

我們先在pom 檔案中加入admin-client 依賴,注意這裡的版本需要和server 的版本一致。

        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>2.2.1</version>
        </dependency>

application.properties

然後我們在 application.properties 檔案中加入如下配置。

spring.boot.admin.client.url=http://localhost:8080
management.endpoints.web.exposure.include=*
spring.application.name=sdwlzlapp-file
spring.boot.admin.client.username=admin
spring.boot.admin.client.password=123456

spring.boot.admin.client.url 指向我們服務端的專案介面路徑。
management.endpoints.web.exposure.include 表示將所有埠都暴露出來,可以被監控到。
spring.application.name 表示改專案在spring-boot-admin 上的的顯示名稱。
spring.boot.admin.client.username 和password 就是設定的使用者名稱和密碼了,這裡需要注意的是,如果admin-server 中沒有整合 security 的話,不用配置使用者名稱和密碼也可以註冊進去,在服務端可以監控到,但如果admin-server 集成了security,就需要保證client 中配置的使用者名稱和server 中配置的使用者名稱密碼保持一致。

測試

配置了上面這些,就就可以將專案註冊到admin-server 中啦,我們啟動一下專案。

現在還有一個問題,如果我們專案本身就整合的安全框架,比如security ,沒有登入的話不能訪問介面,那這樣的專案怎麼被admin-server 監控到呢?比如就我們上節將的security 的demo ,我們註冊進來,雖然監控到了,但是是一個失敗的狀態。

可以看到,不難發現問題,那就是監控的介面也被專案本身攔截了,所以才導致是失敗的狀態,那要怎麼修改了呢,其實也好處理,將這幾個介面放開就可以了。我們在專案的SecurityConfig 類中configure(HttpSecurity http)加上

程式碼如下:

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/", "/hello").permitAll()
            .antMatchers( "/actuator/**").permitAll()
            .antMatchers( "/instances").permitAll()
            .anyRequest().authenticated()
            .and()
            .formLogin()
            //.loginPage("/login")
            .permitAll()
            .and()
            .logout()
            .permitAll();
    }

這樣我們重啟專案,就發現可以監控成功了。

番外

到此為止,我們也算是將spring-boot-admin的大致功能演示了下。

程式碼上傳到github:
https://github.com/QuellanAn/springbootadmin

後續加油♡

歡迎大家關注個人公眾號 "程式設計師愛酸奶"

分享各種學習資料,包含java,linux,大資料等。資料包含視訊文件以及原始碼,同時分享本人及投遞的優質技術博文。

如果大家喜歡記得關注和分享喲❤

相關推薦

十三springboot 優雅整合spring-boot-admin 實現程式監控

前言 我們知道專案的監控是尤為重要的,但是我們如果用jdk 自帶的jconsole 和jvisualvm 的話會非常繁瑣,且介面不是很友好。之前我們使用了spring boot 專案,但是都沒有對專案有一個很好的監控。在spring 家族中有 spring-boot-admin 可以很好的幫我們起到監控微服務

spring-boot-plus1.1.0.釋出-整合Spring Boot Admin管理和監控應用

Spring Boot Admin Spring Boot Admin用來管理和監控Spring Boot應用程式 應用程式向我們的Spring Boot Admin Client註冊(通過HTTP)或使用SpringCloud®(例如Eureka,Consul)發現 UI是Spring Boot Actu

spring boot admin 實現對服務的監控

service端: 專案依賴: <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactI

Spring Boot Admin 2.0 監控Spring Cloud服務(Finchley版本)

一、簡介 Spring Boot Admin 在Spring Boot Actuator 的基礎上提供簡介的視覺化WEB UI,用來管理Spring Boot應用程式的一個簡單的介面,提供如下的功能: 顯示 name/id 和版本 顯示線上狀態 Logging

Spring Boot】利用 Spring Boot Admin 進行專案監控管理

利用 Spring Boot Admin 進行專案監控管理 一、Spring Boot Admin 是什麼 Spring Boot Admin (SBA) 是一個社群開源專案,用於管理和監視 Spring Boot 應用程式。應用程式通過 http 的方式註冊到 Spring Boot 管理客戶端,或者通過

Spring Boot Admin實現服務健康預警

## Over View 上一篇文章主要介紹了Spring Boot Admin的概況以及我們如何在系統中引入和使用Spring Boot Admin,以此來幫助我們更加了解自己的系統,做到能快速發現、排查問題。本篇文章將用程式碼演示Spring Boot Admin的訊息通知功能,並利用這個開箱即用的特性

十二SpringBoot 優雅整合Spring Security

前言 至於什麼是Spring security ,主要兩個作用,使用者認證和授權。即我們常說的,使用者只有登入了才能進行其他操作,沒有登入的話就重定向到登入介面。有的使用者有許可權執行某一操作,而有的使用者不能執行則是授權。算是一個專案安全框架。和shiro 框架一樣。二者的不同大家可以百度小。Spring

spring boot admin 整合的簡單配置隨筆

和我並肩作戰的同事也要相繼離職了,心裡還是有很多不捨得,現在業務也陸陸續續落在了肩頭,上午專案經理讓我把spring boot admin整合到現在的專案中,已遍後續的監控。 哇!我哪裡搞過這個!心裡好慌,好在我面向物件雖然不是很精通,但是面向百度我倒是很拿手,於是開啟了,面向百度程式設計,現在已經成功過了

SpringBoot | 第八章:搭建Spring Boot Admin分散式微服務監控中心

(一)、什麼是Spring Boot Admin       Spring Boot Admin 是一個針對spring-boot的actuator介面進行UI美化封裝的監控工具。他可以返回在列表中瀏覽所有被監控spring-boot專案的基本資訊比如

springboot(二十):使用spring-boot-adminspring-boot服務進行監控

上一篇文章《springboot(十九):使用Spring Boot Actuator監控應用》介紹了Spring Boot Actuator的使用,Spring Boot Actuator提供了對單個Spring Boot的監控,資訊包含:應用狀態、記憶體、執行緒、堆疊

SpringBoot | 第二十八章:監控管理之Spring Boot Admin使用

前言 上一章節,我們介紹了Actuator的使用,知道了可通過訪問不同的端點路徑,獲取相應的監控資訊。但使用後也能發現,返回的監控資料都是以JSON串的形式進行返回的,對於實施或者其他人員來說,不是很直觀,而當需要監控的應用越來越多時,依次去訪問對應的應用也過於繁瑣和低效了。所以,本章節來介紹下Spring

SpringbootSpringboot + spring boot admin 監控 spring security許可權控制

Springboot admin 很好的提供了對Springboot的監控,但是不建議直接將admin整合到已有的專案中。於是我另起一個專案,考慮到不能讓所有人都能看到這些資料了,於是引入了spring security。   本次使用的是spring-boot-admin-s

springboot系列十三springboot整合swaggerUI

一、Swagger介紹 Swagger能成為最受歡迎的REST APIs文件生成工具之一,有以下幾個原因: Swagger 可以生成一個具有互動性的API控制檯,開發者可以用來快速學習和嘗試API。 Swagger 可以生成客戶端SDK程式碼用於各種不同的平臺上的實現。 Swagger 檔案

一起來學SpringBoot | 第十五篇:actuator與spring-boot-admin 可以說的祕密

SpringBoot 是為了簡化 Spring 應用的建立、執行、除錯、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML配置,我們只需遵循規範,引入相關的依賴就可以輕易的搭建出一個 WEB 工程 一起來學Spr

SpringBoot開發詳解(七)-- Mybatis整合Spring Boot

Mybatis在SpringBoot中的使用 使用Mybatis作為ORM框架: 如今的介面開發中,ORM框架是我們操作資料庫不可或缺的一部分,而其中Hibernate與Mybatis是最為常用的兩大框架,其中Hibernate學習週期較長,因為它使用HQL

Angular 6整合Spring Boot 2,Spring Security,JWT和CORS系列:二Angualr專案連線heroapi專案的增刪改查介面

Angular官方樣例Tour of Heroes通過angular-in-memory-web-api來模擬實現遠端呼叫對hero進行增刪改查,本節對其修改呼叫上一節實現的介面。 二、下載Angular官方樣例程式碼 三、安裝依賴包,在專案所在資料夾的控制檯(或cm

spring boot admin監控 整合 nacos服務發現

測試需要三個使用服務: nacos註冊中心, spring boot admin監控服務(整合nacos cl

SpringBoot系列:Spring Boot整合Spring Cache

一、關於Spring Cache 快取在現在的應用中越來越重要, Spring從3.1開始定義了org.springframework.cache.Cache和org.springframework.cache.CacheManager介面來統一不同的快取技術,並支援使用JCache(JSR-107)註解簡化

Springboot 系列(十七)迅速使用 Spring Boot Admin 監控你的 Spring Boot 程式

1. Spring Boot Admin 是什麼 Spring Boot Admin 是由 codecentric 組織開發的開源專案,使用 Spring Boot Admin 可以管理和監控你的 Spring Boot 專案。它分為客戶端和服務端兩部分,客戶端新增到你的 Spring Boot 應用增加暴漏

Springboot 系列(十七)迅速使用 Spring Boot Admin 監控你的 Spring Boot 程式,支援異常郵件通知

1. Spring Boot Admin 是什麼 Spring Boot Admin 是由 codecentric 組織開發的開源專案,使用 Spring Boot Admin 可以管理和監控你的 Spring Boot 專案。它分為客戶端和服務端兩部分,客戶端新增到你的 Spring Boot 應用增加暴漏