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设置为true | true | |
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.enabled | endpoints.health.sensitive | Unauthenticated | Authenticated |
---|---|---|---|
false | false | Full content | Full content |
false | true | Status only | Full content |
true | false | Status only | Full content |
true | true | No content | Full 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 项
020-Spring Boot 监控和度量相关推荐
- Spring Boot 监控信息邮件报警通知
在Spring Boot Admin Server中 进行设置 1.添加依赖 <dependency><groupId>org.springframework.boot< ...
- Spring Boot 监控
目录 1.概述 2.使用 2.1.依赖 2.2.配置 2.2.1.默认 2.2.2.暴露端点 2.3.常用端点 2.3.1.health 2.3.2.metrics 2.3.3.loggers 2.3 ...
- 项目监控之Spring Boot 监控端点 Actuator 入门
1. 概述 应用在部署在生产环境下,我们还需要考虑应用的管理与监控.例如说,应用是否健康存活.应用的 JVM 监控信息.服务器的监控信息(CPU.内存.磁盘等等). 如果我们为应用的管理与监控做相应的 ...
- Spring Boot 揭秘与实战(九) 应用监控篇 - HTTP 应用监控
文章目录 1. 快速开始 2. 监控和管理端点 2.1. health 应用健康指标 2.2. info 查看应用信息 2.3. metrics 应用基本指标 2.4. trace 基本的HTTP跟踪 ...
- (10)Spring Boot修改端口号【从零开始学Spring Boot】
Spring boot 默认端口是8080,如果想要进行更改的话,只需要修改applicatoin.properties文件,在配置文件中加入: server.port=9090 常用配置: #### ...
- 70.打印所有Spring boot载入的bean【从零开始学Spring Boot】
[从零开始学习Spirng Boot-常见异常汇总] 问题的提出: 我们在开发过程当中,我们可能会碰到这样的问题:No qualifying bean 就是我们定义的bean无法进行注入,那到底是什 ...
- (30)导入时如何定制spring-boot依赖项的版本【转载】【从零开始学Spring Boot】...
此文章转载地址:http://www.tuicool.com/articles/RJJvMj3 请注重作者的版权. spring-boot通过maven的依赖管理为我们写好了很多依赖项及其版本,我们可 ...
- 54. spring boot日志升级篇—logback【从零开始学Spring Boot】
在<44. Spring Boot日志记录SLF4J>章节中有关相关的介绍,这里我们在深入的了解下logback框架. 为什么要使用logback ? --在开发中不建议使用System. ...
- (13)处理静态资源(自定义资源映射)【从零开始学Spring Boot】
上面我们介绍了Spring Boot 的默认资源映射,一般够用了,那我们如何自定义目录? 这些资源都是打包在jar包中的,然后实际应用中,我们还有很多资源是在管理系统中动态维护的,并不可能在程序包中 ...
最新文章
- 脑电分析系列[MNE-Python-4]| MNE中数据结构Evoked及其对象创建
- python 报错 bs4 FeatureNotFound: Couldn‘t find a tree builder with the features you requested: lxml
- 字节跳动2019暑期实习生算法岗笔试题
- 下载文件的响应头设置
- Codeforces Round #640 (Div. 4)(ABCDE)
- 【渝粤教育】21秋期末考试个人与团队管理10257k2
- BlueHost Gzip优化JS和CSS传输
- 【shell 练习5】编写简单的多级菜单
- oracle结果集排序,oracle数据库菜鸟教程——结果集排序
- CM android rom,华为5X CM 12.1 Android ROM刷机包下载安装教程
- TeamViewer三种许可证的区别是什么?
- 计算机专业考研北京有哪些学校,计算机考研北京地区学校大全!
- openresty ngx_lua重定向
- Java/Android 进程与线程之 多线程开发(二)
- 已解决requests.exceptions.ConnectTimeout: HTTPConnectionPool(host=‘123.96.1.95‘, port=30090): Max retri
- 华为任正飞关于“活下去”的呼声不断刷屏,《Android市场寒气十足,该如何存活》?
- 旅游业如何使用数据分析?
- 【51毕业设计案例】【007】WIFI智能定时加湿器-基于51单片机
- HTML5期末大作业:旅游景区网站设计——绿色古典旅游景区(6页) HTML+CSS+JavaScript 学生DW网页设计作业成品
- 企业做好私域电商的六大关键点