springboot actuator_springboot-actuator应用后台监控

0fab13acfb834a987ffd9c8f95603895.png

一 前言

springboot 额外的特色是提供了后台应用监控,可以通过 HTTP 或者 JMX的方式管理监控应用,本文主讲HTTP方式;其主要的功能是监控应用的健康状态,查看环境变量等;

二 pom.xml

springboot 2.1.1,主要引入 actuator 依赖,web依赖用于测试;

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

三 默认开启端点

3.1 默认端点 health

直接编写主程序入口,启动;浏览器输入 http://localhost:8080/actuator/health;结果如下,状态是UP;

450b1379b5c9840596ccb6e0db3515fa.png

翻翻源码heath状态码如下

public OrderedHealthAggregator() {
        this.setStatusOrder(Status.DOWN, Status.OUT_OF_SERVICE, Status.UP, Status.UNKNOWN);
    }
  1. DOWN 服务无法获得,状态码503;
  2. .OUT_OF_SERVICE 服务无法获得,状态码503;
  3. UP 获得服务,状态码200;
  4. UNKNOWN 获得未知服务,状态码200;

在 application.yml 中配置 healthy 信息 示例如下:

management:
  endpoint:
    health:
      show-details: always

打印详细信息:

c214cb27cd1fe0b8a686cd0cab9c5b15.png

基本配置如下:

  1. never :默认,表示不显示详细信息;
  2. when-authorized:详细信息显示给 认证过的用户;使用 management.endpoint.health.roles 配置
  3. always: 显示详细信息给所有用户

3.2 默认端点 info

浏览器输入 http://localhost:8080/actuator/info; 展示空信息如下图:

708cf9e722321bf80feb0d0fd8880b09.png

在application.yml 中 配置工程 info 信息 示例如下;

# 配置信息
info:
  actuator:
    name: springboot-actutor
    version: 1.0.0
    author: zszxz

展示结果如下:

cf037fb9f0a8df3eace89654efde9894.png

四 HTTP端点说明

f4c4be24242487e64c71768ed8e45e1c.png

五 配置开启端点

application.yml 中配置需要开启的端点,其中 * 表示开启所有端点,示例如下:

management:
  endpoints:
    web:
      exposure:
        # 使用通配符 * 表示匹配所有端点
        # 排除的端点
        exclude: caches
        # 包括的端点
        include: info,health,beans,env,shutdown,threaddump

5.1 threaddump示例

http://localhost:8080/actuator/threaddump ;用于返回线程快照,分析线程阻塞,死锁等,部分内容如下

{
    "threads": [{
        "threadName": "DestroyJavaVM",
        "threadId": 41,
        "blockedTime": -1,
        "blockedCount": 0,
        "waitedTime": -1,
        "waitedCount": 0,
        "lockName": null,
        "lockOwnerId": -1,
        "lockOwnerName": null,
        "inNative": false,
        "suspended": false,
        "threadState": "RUNNABLE",
        "stackTrace": [],
        "lockedMonitors": [],
        "lockedSynchronizers": [],
        "lockInfo": null
    }

5.2 beans示例

http://localhost:8080/actuator/beans ; 用于返回 spring 容器加载的所有bean,部分内容如下;

{
    "contexts": {
        "application": {
            "beans": {
                "endpointCachingOperationInvokerAdvisor": {
                    "aliases": [],
                    "scope": "singleton",
                    "type": "org.springframework.boot.actuate.endpoint.invoker.cache.CachingOperationInvokerAdvisor",
                    "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/EndpointAutoConfiguration.class]",
                    "dependencies": ["environment"]
                },
                "defaultServletHandlerMapping": {
                    "aliases": [],
                    "scope": "singleton",
                    "type": "org.springframework.web.servlet.HandlerMapping",
                    "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
                    "dependencies": []
                }

5.3 关闭应用示例

普通情况下是没有开启这个配置,是比较危险的动作,会导致应用停止;修改application.yml配置如下

management:
  endpoints:
    web:
      exposure:
        # 使用通配符 * 表示匹配所有端点
        # 排除的端点
        exclude: caches
        # 包括的端点
        include: info,health,beans,env,shutdown
  endpoint:
    health:
      show-details: always
    # 开启关闭应用 需要post请求
    shutdown:
      enabled: true

访问地址 http://localhost:8080/actuator/shutdown; 注意仅支持使用POST请求,否则 会 405错误;

六 CORS 支持

application.yml 修改配置如下, allowed-origins 中允许跨域的ip地址; allowed-methods 配置 允许通过的请求,还有支持时间等;

management:
  endpoints:
    web:
      exposure:
        # 使用通配符 * 表示匹配所有端点
        # 排除的端点
        exclude: caches
        # 包括的端点
        include: info,health,beans,env,shutdown
      # 跨域处理
      cors:
        allowed-origins: http://localhost:8080/
        allowed-methods: post,delete,get,put
  endpoint:
    health:
      show-details: always
    # 开启关闭应用 需要post请求
    shutdown:
      enabled: true

七 修改默认路径

在 配置文件中添加 base-path , 会修改掉默认路径 actuator/endpoint;

management:
  endpoints:
    web:
      exposure:
        # 使用通配符 * 表示匹配所有端点
        # 排除的端点
        exclude: caches
        # 包括的端点
        include: info,health,beans,env,shutdown
      # 自定义配置监控路径
      base-path: /zszxz
      # 跨域处理
      cors:
        allowed-origins: http://localhost:8080/
        allowed-methods: post,delete,get,put
  endpoint:
    health:
      show-details: always
    # 开启关闭应用 需要post请求
    shutdown:
      enabled: true

示例url: http://localhost:8080/zszxz/info

结果如下

0793e952110286678c252b105405652e.png

八 其他配置说明

  1. 还可以引入 security 依赖 配置 账号密码,角色信息,达到访问控制,详细的可以参照官网;
  2. 还可以使用注解进行配置,自定义端点,详细参照官网;
  3. jmx支持,可以使用open jdk 自带的工具 jconsole 进行监控;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值