020-Spring Boot 监控和度量

摘要:
发现访问地址如下2.2。添加参与者的pom依赖性<弹簧罩致动器<应用物业管理。安全enabled=false除了健康接口,它还取决于端点的配置。健康敏感的

一、概述

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

二、使用

2.1、建立web项目,增加pom

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

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

020-Spring Boot 监控和度量第1张

2.2、增加actuator的pom依赖

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

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

  020-Spring Boot 监控和度量第2张

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

三、详解

  建议安装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设置为truetrue
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
falsefalseFull contentFull content
falsetrueStatus onlyFull content
truefalseStatus onlyFull content
truetrueNo contentFull 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 支持如下几种,也可自行定义 

  020-Spring Boot 监控和度量第3张

这里使用了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方式

  020-Spring Boot 监控和度量第4张

Jvisualvm方式

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

  020-Spring Boot 监控和度量第5张

jmc方式

  020-Spring Boot 监控和度量第6张

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

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

免责声明:文章转载自《020-Spring Boot 监控和度量》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇树莓派3b的raspberrypi系统安装pip强化学习 --gym env.render()报错下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

浪潮各机型管理芯片BMC IP(智能平台管理接口)设置

NF5240m3/NF5140m3/NF5280m3/SA5212H2/NP5540M3NF5270M3/NF5170M3/NF8420m3 IPMI主板集成管理芯片BMC IP 设置开机按DEL键进入BIOS设置选择"Server Mgmt"---"BMC Network Configuration"---"lan channel 1/2"---"sta...

CLR寄宿(上) MSCOREE.DLL

CLR寄宿(上) MSCOREE.DLL托管代码调用非托管代码,.NET提供了P/Invoke(平台调用)方式,它作为.NET的基础出现在各类书籍和网络资源上,这里不再讨论。那么非托管代码如何去调用托管代码呢?我们知道,一个托管应用程序首先被操作系统启动,然后由操作系统调用CLR来托管该程序。那么.NET框架到底以什么方式让操作系统来认识它并且可以启动它呢...

SpringBoot整合WebService

WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。其实WebService并不是什么神秘的东西,它就是一个可以远程调用的类,或者说是组件,把你本地的功能开放出去共别人调用。具体的说,Web Service可以让你的网站使用其他...

HBA卡 和 RAID卡

HBA卡: 只从HBA的英文解释HOST BUS ADAPTER(主机总线适配器)就能看出来,他肯定是给主机用的,一般HBA就是给主机插上后,给主机扩展出更多的接口,来连接外部的设备。大多数讲到HBA卡都是指光纤的HBA卡,给主机提供光纤接口的。也有ISCSI的HBA卡,链接ISCSI设备的,从这种功能上说,我们也可以把独立网卡称为HBA卡,通过独立网卡扩...

Pycharm2018中DataBase的使用

1、点击右侧边栏的DataBase,在出现的Database窗口下点击绿色小加号,选择Data Source,选择需要的数据库类型,此处选择Sqlite 2、配置数据库连接信息 3、选择schema,可以看到数据表信息 4、打开sql面板,输入查询SQL执行...

Java读取图片和EXIF信息

后台需要读取客户端上传的图片,记录图片长宽,客户端以后就可以根据记录的长宽,展示图片。 正常的图片,读取很简单,代码如下: BufferedImage originalImg = ImageIO.read(file.getInputStream()); int originalwidth = originalImg.getWidth(); //上传图片...