SpringBoot如何配置Actuator组件实现系统监控
更新:HHH   时间:2023-1-7


小编给大家分享一下SpringBoot如何配置Actuator组件实现系统监控,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

    一、Actuator简介

    监控分类

    • Actuator 提供Rest接口,展示监控信息。

    • 接口分为三大类:

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

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

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

    二、与SpringBoot2.0整合 

    1、核心依赖Jar包

    <!-- 监控依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    2、Yml配置文件

    # 端口
    server:
      port: 8016
    
    spring:
      application:
        # 应用名称
        name: node16-boot-actuator
    
    management:
      endpoints:
        web:
          exposure:
            # 打开所有的监控点
            include: "*"
          # 自定义监控路径 monitor
          # 默认值:http://localhost:8016/actuator/*
          # 配置后:http://localhost:8016/monitor/*
          base-path: /monitor
      endpoint:
        health:
          show-details: always
        shutdown:
          # 通过指定接口关闭 SpringBoot
          enabled: true
      # 可以自定义端口
      # server:
      #   port: 8089
    
    # 描述项目基础信息
    info:
      app:
        name: node16-boot-actuator
        port: 8016
        version: 1.0.0
        author: cicada

    三、监控接口详解 

    1、Info接口

    Yml文件中配置的项目基础信息

    路径:http://localhost:8016/monitor/info
    输出:
    {
        "app": {
            "name": "node16-boot-actuator",
            "port": 8016,
            "version": "1.0.0",
            "author": "cicada"
        }
    }

    2、Health接口

    health 主要用来检查应用的运行状态

    路径:http://localhost:8016/monitor/health
    输出:
    {
        "status": "UP",
        "details": {
            "diskSpace": {
                "status": "UP",
                "details": {
                    "total": 185496236032,
                    "free": 140944084992,
                    "threshold": 10485760
                }
            }
        }
    }

    3、Beans接口

    展示了 bean 的类型、单例多例、别名、类的全路径、依赖Jar等内容。

    路径:http://localhost:8016/monitor/beans
    输出:
    {
        "contexts": {
            "node16-boot-actuator": {
            "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"]
                }
            }
        }
    }

    4、Conditions接口

    查看配置在什么条件下有效,或者自动配置为什么无效。

    路径:http://localhost:8016/monitor/conditions
    输出:
    {
        "contexts": {
            "node16-boot-actuator": {
                "positiveMatches": {
                    "AuditAutoConfiguration#auditListener": [{
                        "condition": "OnBeanCondition",
                        "message": "@ConditionalOnMissingBean"
                    }],
        }
    }

    5、HeapDump接口

    自动生成Jvm的堆转储文件HeapDump,可以使用监控工具 VisualVM 打开此文件查看内存快照。

    路径:http://localhost:8016/monitor/heapdump

    6、Mappings接口

    描述 URI 路径和控制器的映射关系

    路径:http://localhost:8016/monitor/mappings
    输出:
    {
        "contexts": {
            "node16-boot-actuator": {
                "mappings": {
                    "dispatcherServlets": {
                        "dispatcherServlet": [ {
                            "handler": "Actuator web endpoint 'auditevents'",
                            "predicate": "{GET /monitor/auditevents || application/json]}",
                            "details": {
                                "handlerMethod": {
                                    "className": "org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping.Operat
                                    "name": "handle",
                                    "descriptor": "(Ljavax/servlet/http/HttpServletRequest;Ljava/util/Map;)Ljava/lang/Object;"
                                },
                                "requestMappingConditions": {
                                    "consumes": [],
                                    "headers": [],
                                    "methods": ["GET"],
                                    "params": [],
                                    "patterns": ["/monitor/auditevents"],
                                    "produces": [{
                                        "mediaType": "application/vnd.spring-boot.actuator.v2+json",
                                        "negated": false
                                    }, {
                                        "mediaType": "application/json",
                                        "negated": false
                                    }]
                                }
                            }
                        }
                }
        }
    }

    7、ThreadDump接口

    展示线程名、线程ID、是否等待锁、线程的状态、线程锁等相关信息。

    路径:http://localhost:8016/monitor/threaddump
    输出:
    {
        "threads": [{
            "threadName": "DestroyJavaVM",
            "threadId": 34,
            "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
        }
        ]
    }

    8、ShutDown接口

    优雅关闭 Spring Boot 应用,默认只支持POST请求。

    路径:http://localhost:8016/monitor/shutdown

    看完了这篇文章,相信你对“SpringBoot如何配置Actuator组件实现系统监控”有了一定的了解,如果想了解更多相关知识,欢迎关注天达云行业资讯频道,感谢各位的阅读!

    返回开发技术教程...