1. 程式人生 > >SpringBoot第二十四篇:應用監控之Admin

SpringBoot第二十四篇:應用監控之Admin

作者:追夢1819
原文:https://www.cnblogs.com/yanfei1819/p/11457867.html
版權宣告:本文為博主原創文章,轉載請附上博文連結!


引言

  前一章(SpringBoot第二十二篇:應用監控之Actuator)介紹了 SpringBoot 應用使用 Actuctor 進行監控。文章最後也提出了一個問題,是否可以將監控結果更好的展示個運維同學?

  本章解答這個問題。

  Spring Boot Admin 是一個管理和監控 Spring Boot 應用程式的開源專案。分為 admin-server 與 admin-client 兩個元件,admin-server通過採集 actuator 端點資料,顯示在 spring-boot-admin-ui 上,已知的端點幾乎都有進行採集,通過 spring-boot-admin 可以動態切換日誌級別、匯出日誌、匯出 heapdump、監控各項指標 等。

  Spring Boot Admin 在對單一應用服務監控的同時也提供了叢集監控方案,支援通過eurekaconsulzookeeper等註冊中心的方式實現多服務監控與管理。


SpringBoot Admin的使用


建立 admin-server

首先,引入 maven 依賴:

<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>de.codecentric</groupId>
    <artifactId>spring-boot-admin-server-ui</artifactId>
</dependency>

為了便於區分,定義埠號為 8081:

server.port=8081

在啟動類上加註解 @EnableAdminServer .

即:

package com.yanfei1819.adminserver;

import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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


我們先來感受一下 SpringBoot Admin 的介面:

頁面中沒有內容,下面建立要監控的客戶端。


建立 admin-client

引入 maven 依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>

設定其埠號為 8082:

server.port=8082
spring.boot.admin.client.url=http://localhost:8081
# 啟用所有的端點的web方式請求。如果不啟用,將看不到詳細的監控資訊。
management.endpoints.web.exposure.include=*


先啟動 admin-server,再啟動 admin-client。

以下是相關的一些介面:

監控的首頁:

Applications:

執行日誌:

詳細資訊:


在以上的介面中,幾乎囊括了所有的監控資訊。讀者感興趣可以逐個詳細瞭解。此處因篇幅所限,不作展開處理。

如果是需要監控多個客戶端的資訊,只需要在客戶端配置檔案 application.properties 中配置:

spring.boot.admin.client.url=http://localhost:8081
# 啟用所有的端點的web方式請求。如果不啟用,將看不到詳細的監控資訊。
management.endpoints.web.exposure.include=*

本章原始碼寫了兩個客戶端,文中為簡化只演示了一個。


總結

  上述文章只是介紹了 SpringBoot Admin 的相關應用,在實際專案中,可以做安全認證,許可權設定,甚至訊息通知等。

  到目前為止,本系列已經寫了二十四篇。一路使用的下來的感受是,用比理解簡單。最重要的是理解,理解思想,原理(當然,本系列由於針對的是 SpringBoot 入門的學習者,在原理方面未作深入的詳解。後續將另開一個系列,專攻原理解析),方能使用起來得心應手,碰到問題而不是隻會複製、貼上、問度娘。

  說一句題外話。這一篇與上一篇的時間相距較長。主要是作者在這段時間大概學習了一下分散式、高併發和 MySQL 這三塊的知識點。後面有時間也想將這些分享給大家。

  最後,歡迎大佬拍磚。


ps:本系列的原始碼地址。



相關推薦

SpringBoot第二應用監控Admin

作者:追夢1819 原文:https://www.cnblogs.com/yanfei1819/p/11457867.html 版權宣告:本文為博主原創文章,轉載請附上博文連結! 引言   前一章(SpringBoot第二十二篇:應用監控之Actuator)介紹了 SpringBoot 應用使用 Actuc

SpringBoot第二應用監控Actuator

作者:追夢1819 原文:https://www.cnblogs.com/yanfei1819/p/11226397.html 版權宣告:本文為博主原創文章,轉載請附上博文連結! 引言   很多文章都將 SpringBoot Actuator 的 Endpoint 翻譯為 "端點"。不過

一起來學SpringBoot | 第強大的 actuator 服務監控與管理

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

SpringBoot非官方教程 | 第二 springboot整合docker

這篇文篇介紹,怎麼為 springboot程式構建一個Docker映象。docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從Apache2.0協議開源。Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 L

一起來學SpringBoot | 第二輕鬆搞定安全框架(Shiro)

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

輕輕鬆鬆學習SpringBoot2第二 Spring Boot過濾器

       ①攔截器是基於java的反射機制的,而過濾器是基於函式回撥。  ②攔截器不依賴與servlet容器,過濾器依賴與servlet容器。  ③攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。  ④攔截器可以訪問action上下文、值棧裡的物

SpringBoot統一異常處理

作者:追夢1819 原文:https://www.cnblogs.com/yanfei1819/p/10984081.html 版權宣告:本文為博主原創文章,轉載請附上博文連結! 引言   本文將談論 SpringBoot 的預設錯誤處理機制,以及如何自定義錯誤響應。 版本資訊 JDK:1.8 Spri

SpringBoot第二整合ActiveMQ

作者:追夢1819 原文:https://www.cnblogs.com/yanfei1819/p/11190048.html 版權宣告:本文為博主原創文章,轉載請附上博文連結! 引言   前一章節中,我們詳細闡述了 ActiveMQ 的安裝和使用。其實在網站發展壯大的過程中,訊息中介軟體是無法忽視的技術框

SpringBoot | 第二一章非同步開發非同步呼叫

前言 上一章節,我們知道了如何進行非同步請求的處理。除了非同步請求,一般上我們用的比較多的應該是非同步呼叫。通常在開發過程中,會遇到一個方法是和實際業務無關的,沒有緊密性的。比如記錄日誌資訊等業務。這個時候正常就是啟一個新執行緒去做一些業務處理,讓主執行緒非同步的執行其他業

SpringBoot非官方教程 | 第二2小時學會springboot

  Takes an opinionated view of building production-ready Spring applications. Spring Boot favors convention over configuration and i

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

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

跟我學SpringCloud | 第Spring Cloud Gateway高階應用

SpringCloud系列教程 | 第十四篇:Spring Cloud Gateway高階應用 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 如無特殊說明,本系列教程全採用以上版本 上一篇我們聊了Gateway和註冊中心的使用,以及 Ga

第二 jQuery 學習6 刪除元素

cli 存在 代碼 size 執行 utf-8 style 指定 消失 jQuery 學習6 刪除元素 上節課我們做了添加元素,模擬的是樓主發的文章,路人評論,那麽同學們這節課學了刪除之後,去之前的代碼上添加一個刪除,模擬一個樓主刪除路人的評論。 jQuery的刪除方法

python全棧開發基礎【第二】(利用threading模塊開線程、join與守護線程、GIL與Lock)

roc print 例子 線程 -- elf 定期 listen cti 一多線程的概念介紹 threading模塊介紹 threading模塊和multiprocessing模塊在使用層面,有很大的相似性。 二、開啟多線程的兩種方式 創建線程的開銷比創建進程的開銷小,

flask第二——模板【6】自定義過濾器

def 定義 lazy .py highlight abs nbsp tps word 請關註孟船長的公眾號:自動化測試實戰 大家想了解其他過濾器可以參考這裏: http://jinja.pocoo.org/docs/dev/templates/#builtin-fil

第二 玩轉數據結構——隊列(Queue)

stat 基礎 ann move 打印 圖片 data image 線性 1.. 隊列基礎 隊列也是一種線性結構; 相比數組,隊列所對應的操作數是隊列的子集; 隊列只允許從一端(隊尾)添加元素,從另一端(隊首)取出元素;

史上最簡單的 SpringCloud 教程 | 第 服務註冊(consul)

配置 資料 源碼下載 擴展性 local sta tar value mark 這篇文章主要介紹 spring cloud consul 組件,它是一個提供服務發現和配置的工具。consul具有分布式、高可用、高擴展性。 consul 具有以下性質: 服務發現:cons

史上最簡單的SpringCloud教程 | 第 斷路器監控(Hystrix Dashboard)

詳細 pre 良好的 依次 alt ews 需要 ext 數據監控 最新Finchley版本,請訪問:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f12-dash/或者http://blog.csdn.net

PowerBI開發 第DAX 表達式(時間+過濾+關系)

數據 bsp 可能 library 聚合 ont 數據分析 狀態 mon DAX表達式中包含時間關系(Time Intelligence)相關的函數,用於對日期維度進行累加、同比和環比等分析。PowerBI能夠創建關系,通過過濾器來對影響計算的上下文。 一,時間關系 D

第二-用VideoView製作一個簡單的視訊播放器

這是一個播放本地視訊的播放器,videoUrl1是手機裡放置視訊的路徑 效果圖: MainActivity.java package com.example.aimee.videotest; import android.Manifest; import android.co