020-Spring Boot 监控和度量

1、概述

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

2、使用

2.一、创建web项目,增长pom

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

启动项目,查看日志,发现可以访问地址以下git

2.二、增长actuator的pom依赖

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

启动项目,查看日志,发现可以访问地址以下web

  

  能够看到,可访问地址增长了spring

3、详解

  建议安装jsonview插件方便查看jsonsql

3.一、增长配置

  关闭权限限制,application.propertiesjson

management.security.enabled=false

  除开health接口还依赖endpoints.health.sensitive的配置外,其余接口都不须要输入用户名和密码。api

3.二、访问如下网址

  Spring Boot Actuator 的关键特性是在应用程序里提供众多 Web 接口,经过它们了解应用程序运行时的内部情况。Actuator 提供了以下接口,能够分为三大类:配置接口、度量接口和其它接口,具体以下表所示。安全

HTTP方法 路径   描述 鉴权
GET /auditevents   审计事件 true
GET /autoconfig 配置

查看自动配置的使用状况springboot

提供了一份自动配置报告,记录哪些自动配置条件经过了,哪些没经过app

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.三、源码查看

  在spring-boot-actuator-1.5.9.RELEASE.jar包中org.springframework.boot.actuate.endpoint下,查看具体类实现,

  能够设置某一项是否显示

endpoints.beans.enabled=false

  查看代码这里的endpoints,均继承自AbstractEndpoint,其中AbstractEndpoint含有属性以下

sensitive 敏感信息 enabled 启用

3.3.一、org.springframework.boot.actuate.health

  除原有支持的健康检查外,还支持扩展。HealthIndicator

  步骤:

  1》实现HealthIndicator接口,实现逻辑,归入spring容器管理中

@Component public 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.二、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.三、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.四、监控信息输出其余位置

 1》添加配置类,以下

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

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

  

这里使用了Jmx,

3.四、安全方式验证

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=SUPERUSER management.port=11111 #actuator暴露接口使用的端口,为了和api接口使用的端口进行分离 management.context-path=/admin #actuator暴露接口的前缀 management.security.enabled=true #actuator是否须要安全保证 endpoints.metrics.sensitive=false #actuator的metrics接口是否须要安全保证 endpoints.metrics.enabled=true endpoints.health.sensitive=false #actuator的health接口是否须要安全保证 endpoints.health.enabled=true

4、JDK工具使用

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

JConsole方式

  

Jvisualvm方式

  注意jvisualvm默认不支持MBEAn,Jconsole等须要本身安装插件,在 工具→插件中安装插件

  

jmc方式

  

注意:这三种工具不单单能查看Mbean,其余信息也能查看,和页面内容查看一致。

  与上面配置的JMX没有关系,配置jmx只是增长了MetricWriter 项

相关文章
相关标签/搜索