zoukankan      html  css  js  c++  java
  • 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 {
    
        @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.enabledendpoints.health.sensitiveUnauthenticatedAuthenticated
    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访问次数    

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

    @Configuration
    public class ExportConfiguration {
        @Bean
        @ExportMetricWriter
        public 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=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

    四、JDK工具使用

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

    JConsole方式

      

    Jvisualvm方式

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

      

    jmc方式

      

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

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

  • 相关阅读:
    Python之paramiko基础
    mysql-创建库之问题
    Jmeter--HTTP Cookie管理器
    Mysql-简单安装
    [JS]jQuery,javascript获得网页的高度和宽度
    去除表单自动填充时,-webkit浏览器默认给文本框加的黄色背景
    读罢泪两行,人生成长必须面对的10个残酷事实
    前端开发面试题JS2
    前端开发面试题JS
    是内耗让你活得特别累
  • 原文地址:https://www.cnblogs.com/bjlhx/p/8719625.html
Copyright © 2011-2022 走看看