学技术学英文:SpringBoot的内置监控组件-Spring Boot Actuator

news2024/12/22 18:27:34

导读:

Spring Boot Actuator是Spring Boot提供的一个模块,简单配置后就能开启,属于拿来即用,具体功能如下:

监控和管理Spring Boot应用

Spring Boot Actuator提供了一组REST端点和命令行工具,用于查看应用的运行状态、性能指标和健康状况等。通过这些端点,开发人员可以方便地获取应用的各类信息,如:健康检查、度量和指标、环境信息

应用度量数据的导出

Spring Boot Actuator支持将应用的运行数据导出到各种不同的存储后端,例如Prometheus、Datadog、New Relic等。这样,开发人员可以方便地使用这些数据来进一步分析和监控应用的性能和健康状况。

自定义端点和安全控制

发人员可以根据自己的需求来暴露自定义的监控数据,为了安全还支持限制访问权限、身份验证

其他工具的集成

Spring Boot Actuator可以与多种外部监控工具集成,如Prometheus和Grafana,进行更高级别的应用监控和管理。通过添加Micrometer和Prometheus依赖,可以将Actuator的指标数据导出到Prometheus,并使用Grafana进行可视化展示。

Introduction

Spring Boot Actuator is a sub-project of Spring Boot that provides a set of built-in production-ready features to help you monitor and manage your application. Actuator includes several endpoints that allow you to interact with the application, gather metrics, check the health, and perform various management tasks.

In this article, we will delve into the features of Spring Boot Actuator, how to set it up, and provide examples to demonstrate its capabilities.

Setting Up Spring Boot Actuator

To get started with Spring Boot Actuator, you need to add the `spring-boot-starter-actuator` dependency to your project. If you’re using Maven, add the following to your `pom.xml` file:

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

For Gradle, add the following line to your `build.gradle` file:

implementation 'org.springframework.boot:spring-boot-starter-actuator'

Configuring Actuator Endpoints

By default, Actuator endpoints are exposed over HTTP. You can configure which endpoints are enabled and how they are accessed in your `application.properties` or `application.yml` file.

Here’s an example configuration in `application.properties`:

management.endpoints.web.exposure.include=health,info
management.endpoint.health.show-details=always

In `application.yml`:

management:
  endpoints:
    web:
      exposure:
        include: health, info
  endpoint:
    health:
      show-details: always

Common Actuator Endpoints

Spring Boot Actuator provides a variety of built-in endpoints. Below are some of the most commonly used ones:

/actuator/health: Displays the health status of the application.
/actuator/info: Displays arbitrary application information.
/actuator/metrics: Shows ‘metrics’ information for the current application.
/actuator/env: Displays properties from the `Environment`.
/actuator/beans: Displays a complete list of all Spring beans in your application.

Example: Health Endpoint

The health endpoint provides basic information about the application’s health. To access it, navigate to `/actuator/health` in your browser or use a tool like `curl`:

curl http://localhost:8080/actuator/health

The response will look something like this:

{
 "status": "UP"
}

You can add custom health indicators to include more detailed information. For example:

import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;

@Component
public class CustomHealthIndicator implements HealthIndicator {

    @Override
    public Health health() {
        // Custom health check logic
        boolean isHealthy = checkCustomHealth();
        if (isHealthy) {
            return Health.up().withDetail("CustomHealth", "All systems are operational").build();
        } else {
            return Health.down().withDetail("CustomHealth", "Some systems are down").build();
        }
    }

    private boolean checkCustomHealth() {
        // Implement your custom health check logic
        return true;
    }
}

Metrics and Monitoring

The `/actuator/metrics` endpoint provides various application metrics. For example, to see JVM memory usage, you can query:

curl http://localhost:8080/actuator/metrics/jvm.memory.used

The response will look like this:

{
  "name": "jvm.memory.used",
  "description": "The amount of used memory",
  "baseUnit": "bytes",
  "measurements": [
    {
      "statistic": "VALUE",
      "value": 567123456
    }
  ],
  "availableTags": [
    {
      "tag": "area",
      "values": [
        "heap",
        "nonheap"
      ]
    },
    {
      "tag": "id",
      "values": [
        "G1 Eden Space",
        "G1 Old Gen",
        "G1 Survivor Space",
        "Metaspace",
        "Compressed Class Space"
      ]
    }
  ]
}

Customizing Actuator Endpoints

You can create custom endpoints by implementing the `Endpoint` interface. Here’s an example of a custom endpoint that returns a simple message:

import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.stereotype.Component;

@Component
@Endpoint(id = "custom")
public class CustomEndpoint {

    @ReadOperation
    public String customEndpoint() {
        return "This is a custom endpoint";
    }
}

This endpoint can be accessed at `/actuator/custom`.

Securing Actuator Endpoints

By default, all Actuator endpoints are unsecured. In a production environment, it is crucial to secure them. You can do this using Spring Security. First, add the Spring Security dependency:

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

Then, configure security in your `application.properties`:

management.endpoints.web.exposure.include=health,info
management.endpoint.health.show-details=always
management.endpoints.web.base-path=/actuator

And create a security configuration class:

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/actuator/**").authenticated()
            .and()
            .httpBasic();
    }
}

This configuration requires authentication for all Actuator endpoints and uses basic authentication.

Conclusion

Spring Boot Actuator is a powerful tool for monitoring and managing your application. It provides numerous built-in endpoints to check the application’s health, gather metrics, and perform various management tasks. By understanding how to configure and use these endpoints, you can ensure your application runs smoothly and efficiently.

By integrating custom health indicators, custom endpoints, and securing these endpoints using Spring Security, you can tailor Actuator to meet your specific needs. Whether you’re in development or production, Spring Boot Actuator is an invaluable component of the Spring Boot ecosystem.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2263838.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

「Mac畅玩鸿蒙与硬件45」UI互动应用篇22 - 评分统计工具

本篇将带你实现一个评分统计工具&#xff0c;用户可以对多个选项进行评分。应用会实时更新每个选项的评分结果&#xff0c;并统计平均分。这一功能适合用于问卷调查或评分统计的场景。 关键词 UI互动应用评分统计状态管理数据处理多目标评分 一、功能说明 评分统计工具允许用…

压缩glb模型文件

使用?gltf-pipeline进行压缩&#xff1a; GitHub地址[这里是图片001]https://github.com/CesiumGS/gltf-pipeline 1. 安装gltf-pipeline npm install -g gltf-pipeline2. 在glb文件目录打开cmd进行命令行压缩&#xff1a; // cmd: gltf-pipeline -i glb.glb -d -s以下是 -…

创建SpringBoot项目的五种方式

1. 使用SpringBoot官方模板创建 1.1 IDEA集成创建 File > new Project 目前SpringBoot官方对于SpringBoot模板版本都比较新&#xff0c;所以对Java的依赖版本也很新&#xff0c;这里可以看到已经不支持jdk8了&#xff0c;并且只有SpringBoot3版本 我们选择好之后点击…

软件维护的实施

软件维护活动 (1) 维护机构 除了较大的软件开发公司外&#xff0c;通常在软件维护工作方面&#xff0c;不保持正式的维护机构。维护往往是在没有计划的情况下进行的。虽然不要求建立一个正式的维护机构&#xff0c;但是在开发部门&#xff0c;确立一个非正式的维护机构则是非常…

stm32 rtc 详解

目录 L151 RTC 唤醒代码 方式一 通过 RTC Alarm Interrupt&#xff1a;(基本和F1系列一样)&#xff1a; L151 RTC 唤醒代码 方式二 通过 RTC WakeUp Interrupt F103VE RTC 闹钟唤醒代码 &#xff08;103RC 没有闹钟中断&#xff09;&#xff1a; RTC&#xff08;real time…

arcgisPro相接多个面要素转出为完整独立线要素

1、使用【面转线】工具&#xff0c;并取消勾选“识别和存储面邻域信息”&#xff0c;如下&#xff1a; 2、得到的线要素&#xff0c;如下&#xff1a;

机器人国际会议IROS论文latex模板

机器人国际会议IROS论文latex模板 文档 root.tex 可以配置为 US Letter 纸或 A4。请注意以下重要行&#xff1a;\documentclass[letterpaper, 10 pt, Conference]{ieeeconf} % 如果需要 a4paper&#xff0c;请注释掉此行%\documentclass[a4paper, 10pt, Conference]{ieeeconf} …

JVM和数据库面试知识点

JVM内存结构 主要有几部分&#xff1a;堆、栈、方法区和程序计数器 堆是JVM中最大的一块内存区域&#xff0c;用于存储对象实例&#xff0c;一般通过new创建的对象都存放在堆中。堆被所有的线程共享&#xff0c;但是它的访问时线程不安全的&#xff0c;通常通过锁的机制来保证线…

数据结构:栈和队列的实现

栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。 栈中的数据元素遵守后进先出 LIFO &#xff08; Last In First Out &#xff09;的原则。 压栈&#xff1a;栈…

实现 WebSocket 接入文心一言

目录 什么是 WebSocket&#xff1f; 为什么需要 WebSocket&#xff1f; HTTP 的局限性 WebSocket 的优势 总结&#xff1a;HTTP 和 WebSocket 的区别 WebSocket 的劣势 WebSocket 常见应用场景 WebSocket 握手过程 WebSocket 事件处理和生命周期 WebSocket 心跳机制 …

开源轮子 - Logback 和 Slf4j

spring boot内置&#xff1a;Logback 文章目录 spring boot内置&#xff1a;Logback一&#xff1a;Logback强在哪&#xff1f;二&#xff1a;简单使用三&#xff1a;把 log4j 转成 logback四&#xff1a;日志门面SLF4J1&#xff1a;什么是SLF4J2&#xff1a;SLF4J 解决了什么痛…

MFC/C++学习系列之简单记录13

MFC/C学习系列之简单记录13 前言memsetList Control代码注意 总结 前言 今天记录一下memset和List control 的使用吧&#xff01; memset memset通常在初始化变量或清空内存区域的时候使用&#xff0c;可以对变量设定特定的值。 使用&#xff1a; 头文件&#xff1a; C&#…

Layui table不使用url属性结合laypage组件实现动态分页

从后台一次性获取所有数据赋值给 Layui table 组件的 data 属性&#xff0c;若数据量大时&#xff0c;很可能会超出浏览器字符串最大长度&#xff0c;导致渲染数据失败。Layui table 结合 laypage 组件实现动态分页可解决此问题。 HTML增加分页组件标签 在table后增加一个用于…

网络方案设计

一、网络方案设计目标 企业网络系统的构成 应用软件 计算平台 物理网络及拓扑结构 网络软件及工具软件 网络互连设备 广域网连接 无论是复杂的&#xff0c;还是简单的计算机网络&#xff0c;都包括了以下几个基本元素 &#xff1a; 应用软件----支持用户完成专门操作的软件。…

QT QWidget 背景颜色 鼠标hover 背景颜色研究

自定义控件 UserAvatarWidget 的样式问题及解决方案 场景描述 我开发了一个继承自 QWidget 的自定义控件 UserAvatarWidget&#xff0c;并在 .ui 文件中引入了该控件。引入代码如下&#xff1a; <item><widget class"UserAvatarWidget" name"userAv…

javaScriptBOM

1.1、BOM概述 1.1.1、BOM简介 BOM&#xff08;browser Object&#xff09;即浏览器对象模型&#xff0c;它提供了独立于内容而与浏览器窗口进行交互的对象&#xff0c;其核心对象是window。 BOM由一系列的对象构成&#xff0c;并且每个对象都提供了很多方法与属性 BOM缺乏标准…

【Lua热更新】上篇

Lua 热更新 - 上篇 下篇链接&#xff1a;【Lua热更新】下篇 文章目录 Lua 热更新 - 上篇一、AssetBundle1.理论2. AB包资源加载 二、Lua 语法1. 简单数据类型2.字符串操作3.运算符4.条件分支语句5.循环语句6.函数7. table数组8.迭代器遍历9.复杂数据类型 - 表9.1字典9.2类9.3…

AJAX与Axios

什么是 AJAX ? AJAX 是异步的 JavaScript 和 XML&#xff08;Asynchronous JavaScript And XML&#xff09;。 简单理解AJAX&#xff1a;是一种客户端与服务器进行网络通信技术&#xff0c;AJAX通常使用XMLHttpRequest 对象来发送请求和接收响应 现代开发中我们通常使用 JS…

1.gitlab 服务器搭建流程

前提条件&#xff1a; 一、服务器硬件水平 搭建gitlab服务器最低配置要求2核4G,低于这个配置的服务器运行效果很差。 gitlab官网&#xff1a;https://about.gitlab.com/ 下载地址&#xff1a;gitlab/gitlab-ce - Packages packages.gitlab.com 本机ubuntu 二、安装依赖 su…

springboot462学生心理压力咨询评判(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装学生心理压力咨询评判软件来发挥其高效地信息处理的作用&am…