Trang chủHướng dẫnCác điểm cuối của Spring Boot Actuator
Java

Các điểm cuối của Spring Boot Actuator

CyStack blog 5 phút để đọc
CyStack blog17/10/2025
Locker Avatar

Chris Pham

Technical Writer

Locker logo social
Reading Time: 5 minutes

Các điểm cuối của Spring Boot Actuatorcho phép chúng ta giám sát và tương tác với ứng dụng. Spring Actuator là một sub-module của Spring Boot, cung cấp sẵn các endpoint tích hợp mà chúng ta có thể bật hoặc tắt cho ứng dụng.

điểm cuối của Spring Boot Actuator

Các điểm cuối của Spring Boot Actuator

Các điểm cuối Actuator được exposed qua JMX và HTTP. Hầu hết chúng ta sử dụng các endpoint dựa trên HTTP vì chúng dễ dàng truy cập qua trình duyệt, lệnh CURL, shell script, v.v. Một số actuator endpoint hữu ích bao gồm:

  • beans: Endpoint này trả về danh sách tất cả các bean được cấu hình trong ứng dụng của chúng ta.
  • env: Cung cấp thông tin về các thuộc tính Spring Environment.
  • health: Hiển thị tình trạng sức khỏe của ứng dụng.
  • info: Hiển thị thông tin ứng dụng. Chúng ta có thể cấu hình nó trong các thuộc tính Spring environment.
  • mappings: Hiển thị danh sách tất cả các đường dẫn @RequestMapping.
  • shutdown: Cho phép chúng ta tắt ứng dụng một cách nhẹ nhàng (gracefully).
  • threaddump: Cung cấp thread dump của ứng dụng.

Bạn có thể tìm thấy danh sách đầy đủ các Spring Actuator Endpoints tại đây.

Bảo mật cho Spring Actuator Endpoints

Chỉ các endpoint healthinfo được expose mà không cần bất kỳ bảo mật nào. Để truy cập tất cả các endpoint khác, chúng ta cần cấu hình ứng dụng của mình với Spring Security. Việc này rất dễ thực hiện, chúng ta sẽ tìm hiểu nó trong phần sau của bài viết.

Kích hoạt Spring Actuator Endpoints

Khi chúng ta thêm dependency Spring Actuator vào dự án Spring Boot, nó tự động kích hoạt các actuator endpoint. Thêm dependency dưới đây vào ứng dụng Spring của bạn để kích hoạt Spring Boot Actuator Endpoints.

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

Bây giờ, khi bạn chạy ứng dụng, bạn sẽ thấy các actuator endpoint được mapped trong log:

2018-06-19 15:23:20.715  INFO 6493 --- [main] o.s.b.a.e.web.EndpointLinksResolver: Exposing 2 endpoint(s) beneath base path '/actuator'
2018-06-19 15:23:20.723  INFO 6493 --- [main] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Mapped "{[/actuator/health],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.String>)
2018-06-19 15:23:20.724  INFO 6493 --- [main] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Mapped "{[/actuator/info],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.String>)

Chú ý rằng chỉ hai endpoint – healthinfo đã được mapped.

Các điểm cuối của Spring Boot Actuator

Các điểm cuối của Spring Boot Actuator

Bạn có nhận thấy rằng không có dữ liệu nào trong /actuator/info không? Đó là vì chúng ta chưa cấu hình chúng. Chỉ cần thêm các thuộc tính sau vào file application.properties của bạn:

info.app.name=Spring Actuator Example
info.app.java.version=10
info.app.type=Spring Boot

Khởi động lại ứng dụng và bạn sẽ nhận được output chứa thông tin cấu hình.

Các điểm cuối của Spring Boot Actuator

Tùy chỉnh Base Path của Actuator Endpoints

Mặc định, base-path của các actuator endpoint là /actuator. Chúng ta có thể thay đổi nó thành bất kỳ giá trị nào khác bằng cách đặt thuộc tính management.endpoints.web.base-path trong file application.properties:

management.endpoints.web.base-path=/management

Hiển thị các Actuator Endpoints khác

Chúng ta có thể bật và tắt các actuator endpoint khác thông qua các file thuộc tính. Nếu bạn muốn bật tất cả các actuator endpoint, hãy thêm thuộc tính sau:

management.endpoints.web.exposure.include=*

Để bật chỉ các actuator endpoint cụ thể, hãy cung cấp danh sách các id endpoint:

management.endpoints.web.exposure.include=health,info,beans,env

Cấu hình Spring Security cho Actuator Endpoints

Lưu ý rằng chúng ta cần thêm Spring Security vào ứng dụng để kích hoạt các endpoint bổ sung vì tất cả các endpoint khác đều yêu cầu ít nhất xác thực cơ bản. Thêm dependency sau cho Spring Security vào ứng dụng của bạn:

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

Ngoài ra, hãy thêm tên người dùng và mật khẩu Spring Security vào file thuộc tính ứng dụng:

spring.security.user.name=pankaj
spring.security.user.password=pankaj

Khởi động lại ứng dụng và bạn sẽ thấy các endpoint bổ sung được mapped trong log:

2018-06-19 16:18:22.211  INFO 6627 --- [main] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Mapped "{[/management/beans],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.String>)
2018-06-19 16:18:22.212  INFO 6627 --- [           main] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Mapped "{[/management/env],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.String>)
2018-06-19 16:18:22.212  INFO 6627 --- [           main] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Mapped "{[/management/env/{toMatch}],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.String>)

Bây giờ, khi bạn cố gắng truy cập các actuator endpoint được bảo mật, bạn sẽ phải cung cấp thông tin đăng nhập.

Các điểm cuối của Spring Boot Actuator

Các điểm cuối của Spring Boot Actuator

 

Spring Actuator Custom Endpoints

Một trong những tính năng tuyệt vời của Spring Framework là khả năng mở rộng rất dễ dàng. Chúng ta có thể tạo các custom actuator endpoint của riêng mình bằng cách sử dụng annotation @Endpoint trên một class. Sau đó, chúng ta phải sử dụng các annotation @ReadOperation, @WriteOperation hoặc @DeleteOperation trên các method để expose chúng như một actuator endpoint bean. Chúng ta có thể tạo các Endpoint đặc trưng theo công nghệ bằng cách sử dụng các annotation @JmxEndpoint@WebEndpoint.

Đây là một ví dụ về custom Spring Actuator endpoint của chúng ta:

package com.journaldev.spring;

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

@Endpoint(id="myendpoint")
@Component
public class MyCustomEndpoints {

	@ReadOperation
	@Bean
	public String hi() {
		return "Hi from custom endpoint";
	}
}

Bạn có để ý đến endpoint id không? Chúng ta cũng cần cấu hình nó trong danh sách các actuator endpoint để được bật. Cập nhật các thuộc tính sau trong file application.properties:

management.endpoints.web.exposure.include=health,info,beans,env,myendpoint

Bây giờ, khi bạn khởi động ứng dụng, hãy kiểm tra endpoint mới này được mapped trong log:

2018-06-19 17:06:59.743  INFO 6739 --- [main] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Mapped "{[/management/myendpoint],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.String>)

Kết Luận

Spring Boot Actuator là một module quản lý và cung cấp thông tin sẵn sàng cho môi trường production. Chúng ta có thể dễ dàng mở rộng nó để thêm các API của riêng mình và quản lý ứng dụng một cách hiệu quả. Việc nắm vững Actuator giúp bạn có cái nhìn sâu sắc về ứng dụng, từ việc theo dõi sức khỏe tổng thể, kiểm tra các cấu hình môi trường, đến phân tích hiệu suất và thậm chí là thực hiện các thao tác quản lý trực tiếp.

0 Bình luận

Đăng nhập để thảo luận

Chuyên mục Hướng dẫn

Tổng hợp các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.

Đăng ký nhận Newsletter

Nhận các nội dung hữu ích mới nhất