一、概述

  通过配置使用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 监控和度量相关推荐

  1. Spring Boot 监控信息邮件报警通知

    在Spring Boot Admin Server中 进行设置 1.添加依赖 <dependency><groupId>org.springframework.boot< ...

  2. 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 ...

  3. 项目监控之Spring Boot 监控端点 Actuator 入门

    1. 概述 应用在部署在生产环境下,我们还需要考虑应用的管理与监控.例如说,应用是否健康存活.应用的 JVM 监控信息.服务器的监控信息(CPU.内存.磁盘等等). 如果我们为应用的管理与监控做相应的 ...

  4. Spring Boot 揭秘与实战(九) 应用监控篇 - HTTP 应用监控

    文章目录 1. 快速开始 2. 监控和管理端点 2.1. health 应用健康指标 2.2. info 查看应用信息 2.3. metrics 应用基本指标 2.4. trace 基本的HTTP跟踪 ...

  5. (10)Spring Boot修改端口号【从零开始学Spring Boot】

    Spring boot 默认端口是8080,如果想要进行更改的话,只需要修改applicatoin.properties文件,在配置文件中加入: server.port=9090 常用配置: #### ...

  6. 70.打印所有Spring boot载入的bean【从零开始学Spring Boot】

    [从零开始学习Spirng Boot-常见异常汇总] 问题的提出: 我们在开发过程当中,我们可能会碰到这样的问题:No qualifying bean  就是我们定义的bean无法进行注入,那到底是什 ...

  7. (30)导入时如何定制spring-boot依赖项的版本【转载】【从零开始学Spring Boot】...

    此文章转载地址:http://www.tuicool.com/articles/RJJvMj3 请注重作者的版权. spring-boot通过maven的依赖管理为我们写好了很多依赖项及其版本,我们可 ...

  8. 54. spring boot日志升级篇—logback【从零开始学Spring Boot】

    在<44. Spring Boot日志记录SLF4J>章节中有关相关的介绍,这里我们在深入的了解下logback框架. 为什么要使用logback ? --在开发中不建议使用System. ...

  9. (13)处理静态资源(自定义资源映射)【从零开始学Spring Boot】

    上面我们介绍了Spring Boot 的默认资源映射,一般够用了,那我们如何自定义目录?  这些资源都是打包在jar包中的,然后实际应用中,我们还有很多资源是在管理系统中动态维护的,并不可能在程序包中 ...

最新文章

  1. 脑电分析系列[MNE-Python-4]| MNE中数据结构Evoked及其对象创建
  2. python 报错 bs4 FeatureNotFound: Couldn‘t find a tree builder with the features you requested: lxml
  3. 字节跳动2019暑期实习生算法岗笔试题
  4. 下载文件的响应头设置
  5. Codeforces Round #640 (Div. 4)(ABCDE)
  6. 【渝粤教育】21秋期末考试个人与团队管理10257k2
  7. BlueHost Gzip优化JS和CSS传输
  8. 【shell 练习5】编写简单的多级菜单
  9. oracle结果集排序,oracle数据库菜鸟教程——结果集排序
  10. CM android rom,华为5X CM 12.1 Android ROM刷机包下载安装教程
  11. TeamViewer三种许可证的区别是什么?
  12. 计算机专业考研北京有哪些学校,计算机考研北京地区学校大全!
  13. openresty ngx_lua重定向
  14. Java/Android 进程与线程之 多线程开发(二)
  15. 已解决requests.exceptions.ConnectTimeout: HTTPConnectionPool(host=‘123.96.1.95‘, port=30090): Max retri
  16. 华为任正飞关于“活下去”的呼声不断刷屏,《Android市场寒气十足,该如何存活》?
  17. 旅游业如何使用数据分析?
  18. 【51毕业设计案例】【007】WIFI智能定时加湿器-基于51单片机
  19. HTML5期末大作业:旅游景区网站设计——绿色古典旅游景区(6页) HTML+CSS+JavaScript 学生DW网页设计作业成品
  20. 企业做好私域电商的六大关键点

热门文章

  1. kotlin 二进制_Kotlin程序检查数字是否为二进制
  2. 三、线性回归实验分析
  3. python安全攻防---爬虫基础---get和post提交数据
  4. 汇编add和mov指令
  5. Linux系统编程---14(回收子线程,回收多个子线程,线程分离,杀死线程)
  6. 使用头文件的原因和规范
  7. Vivado软件(用VerilogHDL)如何使用$readmemh和$readmemb函数
  8. Makefile规则介绍
  9. 7年老Android一次操蛋的面试经历,系列教学
  10. 你知道如何用面向对象思想写好并发编程吗?