博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
020-Spring Boot 监控和度量
阅读量:6245 次
发布时间:2019-06-22

本文共 4963 字,大约阅读时间需要 16 分钟。

一、概述

  通过配置使用actuator查看监控和度量信息

二、使用

2.1、建立web项目,增加pom

org.springframework.boot
spring-boot-starter-web

启动项目,查看日志,发现能够访问地址如下

2.2、增加actuator的pom依赖

org.springframework.boot
spring-boot-actuator

启动项目,查看日志,发现能够访问地址如下

  

  可以看到,可访问地址增加了

三、详解

  建议安装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容器管理中

@Componentpublic class MyHealthIndicator implements HealthIndicator {    @Override    public 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=myinfoinfo.version=1.0.0info.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访问次数    

@Autowired    private 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:用来统计某个值,查看某个监控点的值

@Autowired    private 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》添加配置类,如下

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

查看MetricWriter 支持如下几种,也可自行定义 

  

这里使用了Jmx,

3.4、安全方式验证

1》增加security的pom

org.springframework.boot
spring-boot-starter-security

配置文件设置

security.basic.enabled=truesecurity.user.name=adminsecurity.user.password=password

综合以上可作如下配置:

security.basic.enabled=truesecurity.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://opria.baihongyu.com/

你可能感兴趣的文章
XCode与Git的完美融合,不再依赖其它Git客户端
查看>>
中国软件服务业政策和形势_赵小凡
查看>>
Horizontal List
查看>>
LocalDB在IIS中的运行失败
查看>>
DevExpress v15.2.4帮助文档下载清单
查看>>
listener.ora/sqlnet.ora/tnsnames.ora配置文件详解
查看>>
js获取鼠标位置
查看>>
111
查看>>
LEADTOOLS Android的入门使用方法
查看>>
ubuntu12.04下使用su,vi等命令时,提示找不到命令
查看>>
Git的学习之路02 Git的工作流程、工作区、暂存区、版本库及创建版本库
查看>>
Servlet3.0 异步处理机制
查看>>
hiberante4 反常
查看>>
3系统启动后的 wifi 加载过程
查看>>
好用的开源二进制编辑器--NotePad++
查看>>
跟我一起学习ASP.NET 4.5 MVC4.0(六)
查看>>
CURL 命令行下载工具
查看>>
PMP 管理学6大定律之四(光环效应)
查看>>
ThinkPHP判断更新是否成功的正确方法
查看>>
Python时间处理
查看>>