• Spring Boot Actuator:健康检查、审计、统计和监控


    Spring Boot Actuator可以帮助你监控和管理Spring Boot应用,比如健康检查、审计、统计和HTTP追踪等。所有的这些特性可以通过JMX或者HTTP endpoints来获得。

    Actuator同时还可以与外部应用监控系统整合,比如 Prometheus, Graphite, DataDog, Influx, Wavefront, New Relic等。这些系统提供了非常好的仪表盘、图标、分析和告警等功能,使得你可以通过统一的接口轻松的监控和管理你的应用。

    Actuator使用Micrometer来整合上面提到的外部应用监控系统。这使得只要通过非常小的配置就可以集成任何应用监控系统。

    我将把Spring Boot Actuator教程分为两部分:

    • 第一部分(本文)教你如何配置Actuator和通过Http endpoints来进入这些特征。
    • 第二部分教你如何整合Actuator和外部应用监控系统。

    创建一个有Actuator的Spring Boot工程

    首先让我们建一个依赖acutator的简单应用。

    你可以使用Spring Boot CLI创建应用:

    spring init -d=web,actuator -n=actuator actuator
    

    或者,你可以使用Spring Initializr网站来创建应用:

     
    Spring initialzr.png

    增加Spring Boot Actuator到一个存在的应用

    你可以增加spring-boot-actuator模块到一个已经存在的应用,通过使用下面的依赖。

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

    对于Gradle,依赖如下:

    dependencies {
        compile("org.springframework.boot:spring-boot-starter-actuator")
    }
    

    使用Actuator Endpoints来监控应用

    Actuator创建了所谓的endpoint来暴露HTTP或者JMX来监控和管理应用。

    举个例子,有一个叫/health的endpoint,提供了关于应用健康的基础信息。/metricsendpoints展示了几个有用的度量信息,比如JVM内存使用情况、系统CPU使用情况、打开的文件等等。/loggersendpoint展示了应用的日志和可以让你在运行时改变日志等级。

    值得注意的是,每一给actuator endpoint可以被显式的打开和关闭。此外,这些endpoints也需要通过HTTP或者JMX暴露出来,使得它们能被远程进入。

    让我们运行应用并且尝试进入默认通过HTTP暴露的打开状态的actuator endpoints。之后,我们将学习如何打开更多的endpoints并且通过HTTP暴露它们。

    在应用的根目录下打开命令行工具运行以下命令:

    mvn spring-boot:run
    

    应用默认使用8080端口运行。一旦这个应用启动了,你可以通过http://localhost:8080/actuator来展示所有通过HTTP暴露的endpoints。

    {"_links":{"self":{"href":"http://localhost:8080/actuator","templated":false},"health":{"href":"http://localhost:8080/actuator/health","templated":false},"info":{"href":"http://localhost:8080/actuator/info","templated":false}}}
    

    打开http://localhost:8080/actuator/health,则会显示如下内容:

    {"status":"UP"}
    

    状态将是UP只要应用是健康的。如果应用不健康将会显示DOWN,比如与仪表盘的连接异常或者缺水磁盘空间等。下一节我们将学习spring boot如何决定应用的健康和如何修复这些健康问题。

    infoendpoint(http://localhost:8080/actuator/info)展示了关于应用的一般信息,这些信息从编译文件比如META-INF/build-info.properties或者Git文件比如git.properties或者任何环境的property中获取。你将在下一节中学习如何改变这个endpoint的输出。

    默认,只有healthinfo通过HTTP暴露了出来。这也是为什么/actuator页面只展示了healthinfoendpoints。我们将学习如何暴露其他的endpoint。首先,让我们看看其他的endpoints是什么。

    以下是一些非常有用的actuator endpoints列表。你可以在official documentation上面看到完整的列表。

    Endpoint IDDescription
    auditevents 显示应用暴露的审计事件 (比如认证进入、订单失败)
    info 显示应用的基本信息
    health 显示应用的健康状态


    作者:alvin_wang
    链接:https://www.jianshu.com/p/d5943e303a1f
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    SQL8-函数与触发器
    SQL7-约束与权限
    SQL6-连接与视图
    SQL5-数据类型
    SQL4-嵌套查询
    SQL3-基本运算
    SQL2-基本语法
    SQL1-结构概括
    SQL历史概论
    PHP Fatal error: Class 'mysqli' not found
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/14760793.html
Copyright © 2020-2023  润新知