zoukankan      html  css  js  c++  java
  • springboot应用监控和管理

    spring boot应用监控和管理

    Spring Boot 监控核心是 spring-boot-starter-actuator 依赖,增加依赖后, Spring Boot 会默认配置一些通用的监控,比如 jvm 监控、类加载、健康监控等。

    对应用进行监控和管理,我们只需在pom.xml上面增加依赖:

            <dependency>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-starter-actuator</artifactId>

            </dependency>

    如果是通过http方式,还需加上下面的依赖:

    <dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-web</artifactId>

    </dependency>

    一、监控端点的作用:

    根据端点的作用,可以将端点分为三大类:

    应用配置类:获取应用程序中加载的应用配置,环境变量,自动化配置报告等与应用相关的信息。

    度量指标类:获取应用程序运行过程中用于监控的度量指标,比如内存信息,线程信息,http请求等。

    操作控制类:提供了对应用的关闭等操作类功能。

    1.应用配置类:

    (1)/autoconfig:获取应用的自动化配置使用情况,包含所有自动化配置的候选项。同时列出了每个候选项是否匹配成功以及没有匹配成功的原因。positiveMatches返回的是匹配成功的自动化配置,negativeMatches返回的是匹配不成功的自动化配置。

    (2)/configprops:获取应用配置所有的配置属性。prefix代表属性前缀,properties表示属性名称和id等。

    (3)/beans:获取应用程序中创建的所有Bean。每个Bean包含bean、scope、type、resource、dependencies。

    (4)/env:获取应用的环境信息。包含环境变量、JVM属性、应用配置属性、参数、端口等。

    (5)/mappings:返回所有控制器映射关系报告,包括业务接口和监控接口。

    (6)/info:获取应用自定义信息,默认为空。可自己在application.properties里面配置。

    2.度量指标类:

    (7)/metrics:返回当前各类重要指标信息,比如内存概要信息、堆内存信息、非堆内存信息、线程使用情况、应用加载和卸载的类统计、垃圾收集器详细信息、tomcat容器使用情况、http请求性能指标等。

    (8)/health:获取应用的各类指标信息。也可以自己自定义Health监控。

    (9)/dump:用来生成当前线程活动的快照。

    (10)/trace:用来返回基本的http跟踪信息。保留最近的100条http请求记录。

    3.操作控制类:

    (11)/shutdown:它是直接关闭应用程序的端点,它与前面的端点不一样,前面的端点都是默认启用的,而它需要通过属性来配置开启操作。可以在application.properties中配置开启:

    endpoints.shutdown.enabled=true

    4.--------

    (12)/heapdump:springmvc的端点,用来返回Gzip压缩hprof堆转储文件(以hprof.gz结尾)

    (13)/loggers:能够查看所有包类的日志级别,并且能够对其进行修改。

    (14)/actuator:所有endpoints的列表,即应用监控的接口列表。

    (15)/auditevents:公开当前应用程序的审核事件信息。

     

    ***:其中/shutdown是post请求,其他都是get请求。

    ***:如果对日志级别进行修改,需要post请求,并且需要传送JSON(application/json)的数据格式。对其进行测试,发现如果是通过springboot主程序入口main启动程序,能够动态修改logback日志级别;如果是在linux下打包运行后,动态修改日志级别无效。

    二、监控端点的管理

    1.如果上面的监控端点都不能访问,可能是你的管理端口经常被防火墙保护,不对外暴露也就不需要保护管理端点。这时候你需要在application.properties里加上:

    management.security.enabled=false

    也可以单个设置,比如endpoints.mappings.sensitive=false,关闭/mappings的安全限制。

    2.自定义端点访问路径和访问端口

    默认情况下,监控的接口端口和业务的端口一致。比如

    server.context-path=/student,server.port=20000

    那么这时候我们访问/info监控接口的url是:http://xxx.xxx.xxx.xxx:20000/student/info。如果刚好你在业务接口里面也有一个/info接口,访问路径刚好就是跟http://xxx.xxx.xxx.xxx:20000/student/info一样,那么得到的信息是监控端点info的信息,这个业务接口无效。如果想让它有效呢?那你可以禁用info监控端点,但是如果info这个端点需要返回一些信息不能禁用,而你的业务info接口别的程序已经调用了,你也不想更改,那怎么才能让它有效呢?这时候我们可以通过在application.properties中进行以下设置:

    management.context-path=/manage

    management.port=20001

    那么此时你的/info监控端点的访问路径变成了什么样的呢?那它应该是这样的:

    http://xxx.xxx.xxx.xxx:20001/manage/info

    这时候你的业务接口就有效了,它的访问路径还是上面所说的那个。改变端点的访问的端口,也是出于安全性的考虑。

    3.禁用单个端点

    endpoints.info.enabled=false 禁用/info端点

    4.开启所需端点

    endpoints.enabled=false      禁用所有端点

    endpoints.info.enabled=true  开启所需/info端点

    5.修改端点id

    endpoints.info.id=myinfo

    原来访问url是http://xxx.xxx.xxx.xxx:20000/student/info,那修改之后变成http://xxx.xxx.xxx.xxx:20000/student/myinfo

    在上面第2点想要使业务接口/info有效,也可以采用这种方式,更改监控端口的id。

    6.关闭http端点

    management.port=-1

  • 相关阅读:
    模板jinja2常用方法
    简单实用的日志类CLog (Python版)
    Databus架构分析与初步实践
    AWS API 2.0签名规范
    django学习——通过get_FOO_display 查找模型中的choice值
    Twitter如何在数千台服务器上快速部署代码?
    mysql 添加索引 mysql 如何创建索引
    sql中的like和正则的区别
    python2.7运行出现的Warning: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode
    Python命令模块argparse学习笔记(四)
  • 原文地址:https://www.cnblogs.com/heqiyoujing/p/9210741.html
Copyright © 2011-2022 走看看