020-Spring Boot 監控和度量

一、概述

  通過配置使用actuator查看監控和度量信息

二、使用

2.1、建立web項目,增加pom

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

啟動項目,查看日志,發現能夠訪問地址如下

2.2、增加actuator的pom依賴

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

啟動項目,查看日志,發現能夠訪問地址如下

  

  可以看到,可訪問地址增加了

三、詳解

  建議安裝jsonview插件方便查看json

3.1、增加配置

  關閉權限限制,application.properties

management.security.enabled=false

  除開health接口還依賴endpoints.health.sensitive的配置外,其他接口都不需要輸入用戶名和密碼。

3.2、訪問以下網址

  Spring Boot Actuator 的關鍵特性是在應用程序里提供眾多 Web 接口,通過它們了解應用程序運行時的內部狀況。Actuator 提供了如下接口,可以分為三大類:配置接口、度量接口和其它接口,具體如下表所示。

HTTP方法路徑?描述鑒權
GET/auditevents?審計事件true
GET/autoconfig配置

查看自動配置的使用情況

提供了一份自動配置報告,記錄哪些自動配置條件通過了,哪些沒通過

true
GET/configprops配置

查看配置屬性,包括默認配置

描述配置屬性(包含默認值)如何注入Bean

true
GET/beans配置

查看bean及其關系列表

描述應用程序上下文里全部的Bean,以及它們的關系

true
GET/dump?打印線程棧,獲取線程活動的快照true
GET/env配置查看所有環境變量true
GET/env/{name}配置根據名稱獲取特定的環境屬性值true
GET/health配置

查看應用健康指標,這些值由HealthIndicator的實現類提供

包括:Cassandra、Composite、Couchbase、DataSource、DiskSpace、

Elasticsearch、Jms、Ldap、Mail、Mongo、Ordered、Rabbit、Redis、solr

false
GET/heapdump??true
GET/info配置查看應用信息,這些信息由info打頭的屬性提供false
GET/loggers??true
GET/loggers/{name}??true
POST/loggers/{name}??true
GET/mappings?查看所有url映射,以及它們和控制器(包含Actuator端點)的映射關系true
GET/metrics度量報告各種應用程序度量信息,比如內存用量和HTTP請求計數true
GET/metrics/{name}度量報告指定名稱的應用程序度量值true
POST/shutdown?關閉應用,要求endpoints.shutdown.enabled設置為truetrue
GET/trace?查看基本追蹤信息,提供基本的HTTP請求跟蹤信息(時間戳、HTTP頭等)true

3.3、源碼查看

  在spring-boot-actuator-1.5.9.RELEASE.jar包中org.springframework.boot.actuate.endpoint下,查看具體類實現,

  可以設置某一項是否顯示

endpoints.beans.enabled=false

  查看代碼這里的endpoints,均繼承自AbstractEndpoint,其中AbstractEndpoint含有屬性如下

sensitive 敏感信息
enabled  啟用

3.3.1、org.springframework.boot.actuate.health

  除原有支持的健康檢查外,還支持擴展。HealthIndicator

  步驟:

  1》實現HealthIndicator接口,實現邏輯,納入spring容器管理中

@Component
public class MyHealthIndicator implements HealthIndicator {@Overridepublic Health health() {//return Health.down().withDetail("error", "spring test error").build();return Health.up().withDetail("success", "spring test success").build();}
}

  actuator暴露的health接口權限是由兩個配置:?management.security.enabled?和?endpoints.health.sensitive組合的結果進行返回的。

management.security.enabledendpoints.health.sensitiveUnauthenticatedAuthenticated
falsefalseFull contentFull content
falsetrueStatus onlyFull content
truefalseStatus onlyFull content
truetrueNo contentFull content

3.3.2、info

在所有加載的配置文件中以info開頭的配置,均可以顯示在這里,如

info.name=myinfo
info.version=1.0.0
info.datasource.url=jdbc:mysql://127.0.0.1:3306/springboot

同時也會顯示git信息git.properties

git.branch=master

顯示如下

{datasource: {url: "jdbc:mysql://127.0.0.1:3306/springboot",name: "root",password: "root",driverClassName: "com.mysql.jdbc.Driver"},name: "myinfo",version: "1.0.0",git: {branch: "master"}
}

3.3.3、metrics查看度量信息

  CounterService:計數服務,可以直接使用

    如查看上文中的user/home訪問次數    

    @Autowiredprivate CounterService counterService;//引入@GetMapping("/user/home")public String home(@RequestParam("error") String error) {counterService.increment("user.home.request.count");//埋點if(error.equals("test")) {throw new NullPointerException();}return "home";}

    此時查看即可:http://127.0.0.1:8080/metrics

  GaugeService:用來統計某個值,查看某個監控點的值

    @Autowiredprivate GaugeService gaugeService;@GetMapping("/user/create")public String create(int age) {gaugeService.submit("user.create.age", age);return "create";}

  此時查看即可:http://127.0.0.1:8080/metrics

3.3.4、監控信息輸出其他位置

?1》添加配置類,如下

@Configuration
public class ExportConfiguration {@Bean@ExportMetricWriterpublic MetricWriter createMetricWriter(MBeanExporter exporter) {return new JmxMetricWriter(exporter);}
}

查看MetricWriter 支持如下幾種,也可自行定義?

  

這里使用了Jmx,

3.4、安全方式驗證

1》增加security的pom

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

配置文件設置

security.basic.enabled=true
security.user.name=admin
security.user.password=password

綜合以上可作如下配置:

security.basic.enabled=true
security.basic.path=/admin    #針對/admin路徑進行認證
security.user.name=admin     #認證使用的用戶名
security.user.password=password   #認證使用的密碼
management.security.roles=SUPERUSERmanagement.port=11111   #actuator暴露接口使用的端口,為了和api接口使用的端口進行分離
management.context-path=/admin   #actuator暴露接口的前綴
management.security.enabled=true   #actuator是否需要安全保證endpoints.metrics.sensitive=false   #actuator的metrics接口是否需要安全保證
endpoints.metrics.enabled=trueendpoints.health.sensitive=false  #actuator的health接口是否需要安全保證
endpoints.health.enabled=true

四、JDK工具使用

查看Jmx方式JDK有三種在bin下,jConsole、jmc、jvisualVM

JConsole方式

  

Jvisualvm方式

  注意jvisualvm默認不支持MBEAn,Jconsole等需要自己安裝插件,在 工具→插件中安裝插件

  

jmc方式

  

注意:這三種工具不僅僅能查看Mbean,其他信息也能查看,和頁面內容查看一致。

  與上面配置的JMX沒有關系,配置jmx只是增加了MetricWriter 項

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/390750.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/390750.shtml
英文地址,請注明出處:http://en.pswp.cn/news/390750.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

matplotlib布局_Matplotlib多列,行跨度布局

matplotlib布局For Visualization in Python, Matplotlib library has been the workhorse for quite some time now. It has held its own even after more nimble rivals with easier code interface and capabilities like seaborn, plotly, bokeh etc. have arrived on the…

Hadoop生態系統

大數據架構-Lambda Lambda架構由Storm的作者Nathan Marz提出。旨在設計出一個能滿足實時大數據系統關鍵特性的架構&#xff0c;具有高容錯、低延時和可擴展等特性。Lambda架構整合離線計算和實時計算&#xff0c;融合不可變性&#xff08;Immutability&#xff09;&#xff0c…

javascript之 原生document.querySelector和querySelectorAll方法

querySelector和querySelectorAll是W3C提供的 新的查詢接口&#xff0c;其主要特點如下&#xff1a; 1、querySelector只返回匹配的第一個元素&#xff0c;如果沒有匹配項&#xff0c;返回null。 2、querySelectorAll返回匹配的元素集合&#xff0c;如果沒有匹配項&#xff0c;…

RDBMS數據定時采集到HDFS

[toc] RDBMS數據定時采集到HDFS 前言 其實并不難&#xff0c;就是使用sqoop定時從MySQL中導入到HDFS中&#xff0c;主要是sqoop命令的使用和Linux腳本的操作這些知識。 場景 在我們的場景中&#xff0c;需要每天將數據庫中新增的用戶數據采集到HDFS中&#xff0c;數據庫中有tim…

單詞嵌入_神秘的文本分類:單詞嵌入簡介

單詞嵌入Natural language processing (NLP) is an old science that started in the 1950s. The Georgetown IBM experiment in 1954 was a big step towards a fully automated text translation. More than 60 Russian sentences were translated into English using simple…

使用Hadoop所需要的一些Linux基礎

Linux 概念 Linux 是一個類Unix操作系統&#xff0c;是 Unix 的一種&#xff0c;它 控制整個系統基本服務的核心程序 (kernel) 是由 Linus 帶頭開發出來的&#xff0c;「Linux」這個名稱便是以 「Linus’s unix」來命名的。 Linux泛指一類操作系統&#xff0c;具體的版本有&a…

python多項式回歸_Python從頭開始的多項式回歸

python多項式回歸Polynomial regression in an improved version of linear regression. If you know linear regression, it will be simple for you. If not, I will explain the formulas here in this article. There are other advanced and more efficient machine learn…

《Linux命令行與shell腳本編程大全 第3版》Linux命令行---4

以下為閱讀《Linux命令行與shell腳本編程大全 第3版》的讀書筆記&#xff0c;為了方便記錄&#xff0c;特地與書的內容保持同步&#xff0c;特意做成一節一次隨筆&#xff0c;特記錄如下&#xff1a; 《Linux命令行與shell腳本編程大全 第3版》Linux命令行--- Linux命令行與she…

徹底搞懂 JS 中 this 機制

徹底搞懂 JS 中 this 機制 摘要&#xff1a;本文屬于原創&#xff0c;歡迎轉載&#xff0c;轉載請保留出處&#xff1a;https://github.com/jasonGeng88/blog 目錄 this 是什么this 的四種綁定規則綁定規則的優先級綁定例外擴展&#xff1a;箭頭函數this 是什么 理解this之前&a…

?如何在2分鐘內將GraphQL服務器添加到RESTful Express.js API

You can get a lot done in 2 minutes, like microwaving popcorn, sending a text message, eating a cupcake, and hooking up a GraphQL server.您可以在2分鐘內完成很多工作&#xff0c;例如微波爐爆米花&#xff0c;發送短信&#xff0c; 吃蛋糕以及連接GraphQL服務器 。 …

leetcode 1744. 你能在你最喜歡的那天吃到你最喜歡的糖果嗎?

給你一個下標從 0 開始的正整數數組 candiesCount &#xff0c;其中 candiesCount[i] 表示你擁有的第 i 類糖果的數目。同時給你一個二維數組 queries &#xff0c;其中 queries[i] [favoriteTypei, favoriteDayi, dailyCapi] 。 你按照如下規則進行一場游戲&#xff1a; 你…

回歸分析_回歸

回歸分析Machine learning algorithms are not your regular algorithms that we may be used to because they are often described by a combination of some complex statistics and mathematics. Since it is very important to understand the background of any algorith…

ruby nil_Ruby中的數據類型-True,False和Nil用示例解釋

ruby niltrue, false, and nil are special built-in data types in Ruby. Each of these keywords evaluates to an object that is the sole instance of its respective class.true &#xff0c; false和nil是Ruby中的特殊內置數據類型。 這些關鍵字中的每一個都求值為一個對…

淺嘗flutter中的動畫(淡入淡出)

在移動端開發中&#xff0c;經常會有一些動畫交互&#xff0c;比如淡入淡出,效果如圖&#xff1a; 因為官方封裝好了AnimatedOpacity Widget&#xff0c;開箱即用&#xff0c;所以我們用起來很方便&#xff0c;代碼量很少&#xff0c;做少量配置即可&#xff0c;所以&#xff0…

數據科學還是計算機科學_何時不使用數據科學

數據科學還是計算機科學意見 (Opinion) 目錄 (Table of Contents) Introduction 介紹 Examples 例子 When You Should Use Data Science 什么時候應該使用數據科學 Summary 摘要 介紹 (Introduction) Both Data Science and Machine Learning are useful fields that apply sev…

空間復雜度 用什么符號表示_什么是大O符號解釋:時空復雜性

空間復雜度 用什么符號表示Do you really understand Big O? If so, then this will refresh your understanding before an interview. If not, don’t worry — come and join us for some endeavors in computer science.您真的了解Big O嗎&#xff1f; 如果是這樣&#xf…

leetcode 523. 連續的子數組和

給你一個整數數組 nums 和一個整數 k &#xff0c;編寫一個函數來判斷該數組是否含有同時滿足下述條件的連續子數組&#xff1a; 子數組大小 至少為 2 &#xff0c;且 子數組元素總和為 k 的倍數。 如果存在&#xff0c;返回 true &#xff1b;否則&#xff0c;返回 false 。 …

Docker學習筆記 - Docker Compose

一、概念 Docker Compose 用于定義運行使用多個容器的應用&#xff0c;可以一條命令啟動應用&#xff08;多個容器&#xff09;。 使用Docker Compose 的步驟&#xff1a; 定義容器 Dockerfile定義應用的各個服務 docker-compose.yml啟動應用 docker-compose up二、安裝 Note t…

創建shell腳本

1.寫一個腳本 a) 用touch命令創建一個文件&#xff1a;touch my_script b) 用vim編輯器打開my_script文件&#xff1a;vi my_script c) 用vim編輯器編輯my_script文件,內容如下&#xff1a; #!/bin/bash 告訴shell使用什么程序解釋腳本 #My first script l…

線性回歸算法數學原理_線性回歸算法-非數學家的高級數學

線性回歸算法數學原理內部AI (Inside AI) Linear regression is one of the most popular algorithms used in different fields well before the advent of computers. Today with the powerful computers, we can solve multi-dimensional linear regression which was not p…