Bài 10: Spring Boot Actuator
1. Giới thiệu về Spring Boot Actuator
Spring Boot Actuator là một module mạnh mẽ của Spring Boot, cung cấp các công cụ giúp theo dõi và quản lý các ứng dụng Spring Boot. Actuator cung cấp các endpoint để hiển thị thông tin chi tiết về ứng dụng, như trạng thái sức khỏe, thông tin hệ thống, số liệu thống kê và các cấu hình. Điều này giúp cho việc giám sát và quản lý ứng dụng trở nên dễ dàng và hiệu quả hơn.
2. Các endpoint quan trọng của Actuator
Dưới đây là một số endpoint quan trọng mà Actuator cung cấp:
/actuator/health: Cung cấp thông tin về trạng thái sức khỏe của ứng dụng.
/actuator/info: Cung cấp thông tin tùy chỉnh về ứng dụng.
/actuator/metrics: Hiển thị các số liệu thống kê về ứng dụng, như CPU, memory, và các request metrics.
/actuator/httptrace: Hiển thị thông tin về các request HTTP gần đây.
/actuator/env: Hiển thị các thuộc tính môi trường hiện tại.
/actuator/beans: Hiển thị tất cả các bean được quản lý bởi Spring IoC container.
/actuator/loggers: Cung cấp thông tin và cho phép thay đổi mức độ log của các logger.
3. Cách cấu hình và sử dụng Actuator
3.1. Thêm Actuator vào dự án
Đầu tiên, bạn cần thêm dependency Spring Boot Actuator vào dự án của mình. Bạn có thể làm điều này bằng cách cập nhật file pom.xml (nếu sử dụng Maven) hoặc build.gradle (nếu sử dụng Gradle).
Ví dụ với Maven:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Ví dụ với Gradle:
implementation 'org.springframework.boot:spring-boot-starter-actuator'
3.2. Kích hoạt các endpoint
Mặc định, một số endpoint của Actuator sẽ bị vô hiệu hóa vì lý do bảo mật. Bạn có thể kích hoạt chúng trong file application.properties hoặc application.yml.
# application.properties
management.endpoints.web.exposure.include=health,info,metrics,env,beans,loggers,httptrace
Hoặc, nếu sử dụng application.yml:
management:
endpoints:
web:
exposure:
include: health,info,metrics,env,beans,loggers,httptrace
3.3. Cấu hình bảo mật cho các endpoint
Vì các endpoint Actuator có thể chứa thông tin nhạy cảm, bạn nên cấu hình bảo mật để chỉ cho phép các người dùng được xác thực truy cập vào các endpoint này.
Ví dụ với Spring Security:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/actuator/**").authenticated()
.and()
.httpBasic();
}
}
3.4. Tùy chỉnh thông tin endpoint /info
Bạn có thể tùy chỉnh thông tin được hiển thị tại endpoint /actuator/info bằng cách thêm các thuộc tính tùy chỉnh vào file application.properties hoặc application.yml.
Ví dụ với application.properties:
info.app.name=My Spring Boot Application
info.app.description=This is a sample application using Spring Boot Actuator
info.app.version=1.0.0
Ví dụ với application.yml:
info:
app:
name: My Spring Boot Application
description: This is a sample application using Spring Boot Actuator
version: 1.0.0
4. Ví dụ sử dụng Spring Boot Actuator
Dưới đây là một ví dụ đơn giản về cách sử dụng Spring Boot Actuator trong một ứng dụng Spring Boot.
4.1. Tạo dự án Spring Boot
Bạn có thể tạo một dự án Spring Boot mới bằng Spring Initializr với các dependency sau:
Spring Web
Spring Boot Actuator
4.2. Cấu trúc dự án
myapp
|-- src
| |-- main
| | |-- java
| | | `-- com
| | | `-- example
| | | `-- myapp
| | | |-- MyApplication.java
| | `-- resources
| | `-- application.properties
|-- pom.xml
4.3. Lớp chính của ứng dụng
// MyApplication.java
package com.example.myapp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
4.4. Cấu hình Actuator trong application.properties
# application.properties
management.endpoints.web.exposure.include=health,info,metrics,env,beans,loggers,httptrace
info.app.name=My Spring Boot Application
info.app.description=This is a sample application using Spring Boot Actuator
info.app.version=1.0.0
4.5. Chạy ứng dụng và kiểm tra các endpoint
Chạy ứng dụng bằng cách sử dụng Maven:
mvn spring-boot:run
Mở trình duyệt và truy cập các endpoint Actuator:
5. Kết luận
Trong bài viết này, chúng ta đã tìm hiểu về Spring Boot Actuator, các endpoint quan trọng mà Actuator cung cấp, và cách cấu hình và sử dụng Actuator trong ứng dụng Spring Boot. Spring Boot Actuator giúp cho việc theo dõi và quản lý ứng dụng trở nên dễ dàng và hiệu quả hơn, cung cấp thông tin chi tiết về trạng thái và hiệu suất của ứng dụng.
Trong bài viết tiếp theo, chúng ta sẽ tìm hiểu về kiểm thử trong Spring Boot, bao gồm các loại kiểm thử khác nhau và cách sử dụng các công cụ kiểm thử như Spring Boot Test, MockMvc và TestRestTemplate.