摘要:概述之前講過容器的可視化監(jiān)控,即監(jiān)控容器的運(yùn)行情況,包括使用率內(nèi)存占用網(wǎng)絡(luò)狀況以及磁盤空間等等一系列信息。實(shí)戰(zhàn)一下中添加依賴啟動(dòng)應(yīng)用程序之后,只要在瀏覽器中輸入端點(diǎn)信息就能獲得應(yīng)用的一些狀態(tài)信息。
概述
之前講過Docker容器的可視化監(jiān)控,即監(jiān)控容器的運(yùn)行情況,包括 CPU使用率、內(nèi)存占用、網(wǎng)絡(luò)狀況以及磁盤空間等等一系列信息。同樣利用SpringBoot作為微服務(wù)單元的實(shí)例化技術(shù)選型時(shí),我們不可避免的要面對(duì)的一個(gè)問題就是如何實(shí)時(shí)監(jiān)控應(yīng)用的運(yùn)行狀況數(shù)據(jù),比如:健康度、運(yùn)行指標(biāo)、日志信息、線程狀況等等。本文就該問題做一點(diǎn)探索并記錄試驗(yàn)過程。
注: 本文首發(fā)于 My 公眾號(hào) CodeSheep ,可 長(zhǎng)按 或 掃描 下面的 小心心 來訂閱 ↓ ↓ ↓入門使用:Actuator插件
Actuator插件是SpringBoot原生提供的一個(gè)服務(wù),可以通過暴露端點(diǎn)路由,用來輸出應(yīng)用中的諸多 端點(diǎn)信息。實(shí)戰(zhàn)一下!
pom.xml中添加依賴:
org.springframework.boot spring-boot-starter-actuator
啟動(dòng)Spring Boot應(yīng)用程序之后,只要在瀏覽器中輸入端點(diǎn)信息就能獲得應(yīng)用的一些狀態(tài)信息。
常用端點(diǎn)列舉如下,可以一個(gè)個(gè)詳細(xì)試一下:
/info 應(yīng)用基本信息
/health 健康度信息
/metrics 運(yùn)行指標(biāo)
/env 環(huán)境變量信息
/loggers 日志相關(guān)
/dump 線程相關(guān)信息
/trace 請(qǐng)求調(diào)用軌跡
當(dāng)然此時(shí)只能使用/health 和 /info端點(diǎn),其他因?yàn)闄?quán)限問題無法訪問。想訪問指定端點(diǎn)的話可以在yml配置中添加相關(guān)的配置項(xiàng),比如/metrics端點(diǎn)則需要配置:
endpoints: metrics: sensitive: false
此時(shí)瀏覽器訪問/metrics端點(diǎn)就能得到諸如下面所示的信息:
{ "mem": 71529, "mem.free": 15073, "processors": 4, "instance.uptime": 6376, "uptime": 9447, "systemload.average": -1.0, "heap.committed": 48024, "heap.init": 16384, "heap.used": 32950, "heap": 506816, "nonheap.committed": 23840, "nonheap.init": 160, "nonheap.used": 23506, "nonheap": 0, "threads.peak": 25, "threads.daemon": 23, "threads.totalStarted": 28, "threads": 25, "classes": 6129, "classes.loaded": 6129, "classes.unloaded": 0, "gc.copy.count": 74, "gc.copy.time": 173, "gc.marksweepcompact.count": 3, "gc.marksweepcompact.time": 88, "httpsessions.max": -1, "httpsessions.active": 0 }
當(dāng)然也可以開啟全部端點(diǎn)權(quán)限,只需如下配置即可:
endpoints: sensitive: false
由于Actuator插件提供的監(jiān)控能力畢竟有限,而且UI比較簡(jiǎn)陋,因此需要一個(gè)更加成熟一點(diǎn)的工具
Spring Boot Admin監(jiān)控系統(tǒng)SBA則是基于Actuator更加進(jìn)化了一步,其是一個(gè)針對(duì)Actuator接口進(jìn)行UI美化封裝的監(jiān)控工具。我們來實(shí)驗(yàn)一下。
首先來創(chuàng)建一個(gè)Spring Boot Admin Server工程作為服務(wù)端
pom.xml中加入如下依賴:
de.codecentric spring-boot-admin-server 1.5.7 de.codecentric spring-boot-admin-server-ui 1.5.7
然后在應(yīng)用主類上通過加注解來啟用Spring Boot Admin
@EnableAdminServer @SpringBootApplication public class SpringbtAdminServerApplication { public static void main(String[] args) { SpringApplication.run(SpringbtAdminServerApplication.class, args); } }
啟動(dòng)程序,瀏覽器打開 localhost:8081 查看Spring Boot Admin主頁面:
此時(shí)Application一欄空空如也,等待待監(jiān)控的應(yīng)用加入
創(chuàng)建要監(jiān)控的Spring Boot應(yīng)用
pom.xml中加入以下依賴
de.codecentric spring-boot-admin-starter-client 1.5.7
然后在yml配置中添加如下配置,將應(yīng)用注冊(cè)到Admin服務(wù)端去:
spring: boot: admin: url: http://localhost:8081 client: name: AdminTest
Client應(yīng)用一啟動(dòng),Admin服務(wù)立馬推送來了消息,告訴你AdminTest上線了:
此時(shí)去Admin主界面上查看,發(fā)現(xiàn)Client應(yīng)用確實(shí)已經(jīng)注冊(cè)上來了:
查看Detail
查看 Metrics
查看 Enviroment
查看JMX
查看Threads
查看Trace與詳情
點(diǎn)擊最上方JOURNAL,會(huì)看到被監(jiān)控應(yīng)用程序的事件變化:
圖中可以清晰地看到,應(yīng)用從 REGISTRATION → UNKNOWN → UP 的狀態(tài)跳轉(zhuǎn)。
這樣就將Actuator插件提供的所有端點(diǎn)信息在SBA中全部嘗試了一遍。
參考文獻(xiàn)http://codecentric.github.io/...
后記作者更多的原創(chuàng)文章在此,歡迎觀賞
My Personal Blog
作者更多的SpringBt實(shí)踐文章在此:
Spring Boot應(yīng)用監(jiān)控實(shí)戰(zhàn)
SpringBoot應(yīng)用部署于外置Tomcat容器
ElasticSearch搜索引擎在SpringBt中的實(shí)踐
初探Kotlin+SpringBoot聯(lián)合編程
Spring Boot日志框架實(shí)踐
SpringBoot優(yōu)雅編碼之:Lombok加持
如果有興趣,也可以抽點(diǎn)時(shí)間看看作者一些關(guān)于容器化、微服務(wù)化方面的文章:
利用K8S技術(shù)棧打造個(gè)人私有云 連載文章
從一份配置清單詳解Nginx服務(wù)器配置
Docker容器可視化監(jiān)控中心搭建
利用ELK搭建Docker容器化應(yīng)用日志中心
RPC框架實(shí)踐之:Apache Thrift
RPC框架實(shí)踐之:Google gRPC
微服務(wù)調(diào)用鏈追蹤中心搭建
Docker容器跨主機(jī)通信
Docker Swarm集群初探
高效編寫Dockerfile的幾條準(zhǔn)則
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/69259.html
摘要:引入了新的環(huán)境和概要信息,是一種更揭秘與實(shí)戰(zhàn)六消息隊(duì)列篇掘金本文,講解如何集成,實(shí)現(xiàn)消息隊(duì)列。博客地址揭秘與實(shí)戰(zhàn)二數(shù)據(jù)緩存篇掘金本文,講解如何集成,實(shí)現(xiàn)緩存。 Spring Boot 揭秘與實(shí)戰(zhàn)(九) 應(yīng)用監(jiān)控篇 - HTTP 健康監(jiān)控 - 掘金Health 信息是從 ApplicationContext 中所有的 HealthIndicator 的 Bean 中收集的, Spring...
摘要:概述在我之前的應(yīng)用監(jiān)控實(shí)戰(zhàn)一文中,講述了如何利用版本來可視化地監(jiān)控應(yīng)用。接下來我們就來創(chuàng)建一個(gè)待監(jiān)控的示例。 showImg(https://segmentfault.com/img/remote/1460000015671446); 概述 在我之前的 《Spring Boot應(yīng)用監(jiān)控實(shí)戰(zhàn)》 一文中,講述了如何利用 Spring Boot Admin 1.5.X 版本來可視化地監(jiān)控 ...
摘要:簡(jiǎn)介用于監(jiān)控基于的應(yīng)用,它是在的基礎(chǔ)上提供簡(jiǎn)潔的可視化。提供了很多功能,如顯示和,顯示在線狀態(tài),的日志級(jí)別管理,線程管理,管理等。 Spring Cloud Admin 簡(jiǎn)介 Spring Boot Admin 用于監(jiān)控基于 Spring Boot 的應(yīng)用,它是在 Spring Boot Actuator 的基礎(chǔ)上提供簡(jiǎn)潔的可視化 WEB UI。Spring Boot Admin 提供...
摘要:是一個(gè)相對(duì)比較新的微服務(wù)框架,年才推出的版本雖然時(shí)間最短但是相比等框架提供的全套的分布式系統(tǒng)解決方案。提供線程池不同的服務(wù)走不同的線程池,實(shí)現(xiàn)了不同服務(wù)調(diào)用的隔離,避免了服務(wù)器雪崩的問題。通過互相注冊(cè)的方式來進(jìn)行消息同步和保證高可用。 Spring Cloud 是一個(gè)相對(duì)比較新的微服務(wù)框架,...
摘要:前提好幾周沒更新博客了,對(duì)不斷支持我博客的童鞋們說聲抱歉了。熟悉我的人都知道我寫博客的時(shí)間比較早,而且堅(jiān)持的時(shí)間也比較久,一直到現(xiàn)在也是一直保持著更新狀態(tài)。 showImg(https://segmentfault.com/img/remote/1460000014076586?w=1920&h=1080); 前提 好幾周沒更新博客了,對(duì)不斷支持我博客的童鞋們說聲:抱歉了!。自己這段時(shí)...
閱讀 607·2021-11-18 13:12
閱讀 1323·2021-11-15 11:39
閱讀 2484·2021-09-23 11:22
閱讀 6219·2021-09-22 15:15
閱讀 3668·2021-09-02 09:54
閱讀 2320·2019-08-30 11:10
閱讀 3252·2019-08-29 14:13
閱讀 2918·2019-08-29 12:49