zoukankan      html  css  js  c++  java
  • SpringBoot-actuator服务监控与管理

    SpringBoot-actuator服务监控与管理

    Spring Boot Actuator端点通过 JMX 和HTTP 公开暴露给外界访问,大多数时候我们使用基于HTTP的Actuator端点,因为它们很容易通过浏览器、CURL命令、shell脚本等方式访问。

    Endpoints

    actuator 的核心部分,它用来监视应用程序及交互,spring-boot-actuator中已经内置了非常多的 Endpoints(health、info、beans、httptrace、shutdown等等),同时也允许我们自己扩展自己的端点

    一些有用的执行器端点是:

    1. /beans:此端点返回应用程序中配置的所有bean的列表。
    2. /env:提供有关Spring Environment属性的信息。
    3. /health:显示应用程序运行状况
    4. /info:显示应用程序信息,我们可以在Spring环境属性中配置它。
    5. /mappings:显示所有 @RequestMapping 路径 的列表 。
    6. /shutdown:允许我们正常关闭应用程序。
    7. /threaddump:提供应用程序的线程转储。

    Spring Actuator端点安全

    ​ 只有“/health”和“/info”端点暴露在没有任何安全性的情况下,为了访问我们需要配置Spring安全。 这很容易实现,我们将在本教程的后半部分介绍它。

    使用SpringActuator

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

    上述两个依赖是使用Actuator所必须的,此时,启动你的SpringBoot项目时,“/health”和“/info”就被自动映射。

     2 endpoint(s) beneath base path '/actuator'
    : Mapped "{[/actuator/health],methods=[GET]
    

    此时可以通过浏览器来访问并获取信息:

    http://localhost:8080/actuator/health
    
    {
        "status": "DOWN",
        "details": {
            "db": {
                "status": "UP",
                "details": {
                    "database": "MySQL",
                    "hello": 1
                }
            },
            "diskSpace": {
                "status": "UP",
                "details": {
                    "total": 128849014784,
                    "free": 74140549120,
                    "threshold": 10485760
                }
            },
            "redis": {
                "status": "DOWN",
                "details": {
                    "error": "org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to 192.168.188.128:6379"
                }
            }
        }
    }
    

    当访问info时,发现页面中没有信息

    http://localhost:8080/actuator/info
    

    这是由于我们没有进行配置,在application.yml中加入如下配置即可

    info:
      app:
        name: Spring Actuator Example 	#projectName
        java.version: 8					#java version
        type: Spring Boot				#projectType
    

    此时,重新访问,即可出现以下数据:

    {
        "app": {
            "name": "Spring Actuator Example",
            "java": {
                "version": 8
            },
            "type": "Spring Boot"
        }
    }
    

    自定义执行器断点基本路径

    默认情况下,执行器端点的基本路径是 /actuator ,我们可以通过 management.endpoints.web.base-path 在应用程序属性文件中 设置将其更改为任何其他值 。

    management:
      endpoints:
        web:
          base-path: /management
    

    此时访问下面的页面会返回404page

    http://localhost:8080/actuator/info
    

    应该访问:

    http://localhost:8080/management/info
    

    暴露其他Endpoint

    我们可以通过属性文件启用和禁用其他执行器端点。

    如果要启用所有执行器端点,请添加以下属性。

    management:
      endpoints:
        web:
          #base-path: /management
          exposure:
            include: '*'
      endpoint:
        health:
          show-details: always
    

    上面是暴露所有的endpoint,如果想暴露指定的断点可以使用下面的配置

    management:
      endpoints:
        web:
          #base-path: /management
          exposure:
            include: health,info,beans,env
      endpoint:
        health:
          show-details: always
    

    常用的API使用及说明

    http://localhost:8080/actuator				#查看所有actuator API
    
    http://localhost:8080/actuator/health		#查看项目健康情况
    
    http://localhost:8080/actuator/beans		#查看当前Spring容器中的所有bean,可以进行排错
    
    http://localhost:8080/actuator/env 			#查看详细的服务器,以及配置环境
    
    http://localhost:8080/actuator/mappings		#查看当前所有的mapping
    
    http://localhost:8080/actuator/httptrace	#查看所有的http请求历史,以及请求信息
    
    http://localhost:8080/actuator/info			#查看项目的信息
    

    其他的大家可以自己访问http://localhost:8080/actuator去研究哈~

    SpringBoot-actuator的高级用法其实是自定义endpoint,没有太多经历去研究,大家有兴趣可以参考下面的两篇文章~

    参考文章:来自jdon.com

    更详细的讲解:博客园文章

  • 相关阅读:
    单片机模块化程序: 来看看加入环形队列的串口发送数据
    单片机模块化程序: 丢给你个环形队列玩玩
    单片机模块化程序: 你是否还是个小学生时代的串口发送数据
    单片机模块化程序: 关于串口接收处理数据
    单片机模块化程序: 看看是不是你想要的按键处理
    单片机模块化程序: 来看下我的程序架子吧
    ESA2GJK1DH1K升级篇: 升级STM32 预热: 单片机每隔一定时间 使用 http 获取天气
    ESA2GJK1DH1K升级篇: 升级STM32 预热: 单片机定时 使用 http 获取云端文本文件里面的内容,然后显示在液晶屏
    ESA2GJK1DH1K升级篇: 远程升级准备工作: 使用TCP客户端连接Web服务器实现http下载数据
    ESA2GJK1DH1K升级篇: 远程升级准备工作: 安装Web服务器
  • 原文地址:https://www.cnblogs.com/zhangruifeng/p/13431983.html
Copyright © 2011-2022 走看看