Spring Boot Actuator là một sub-project của Spring Boot, cung cấp các tính năng giám sát và quản lý ứng dụng Spring Boot đang chạy. Nó cho phép theo dõi, giám sát ứng dụng, thu thập dữ liệu, lưu lượng truy cập, trạng thái cơ sở dữ liệu mà không cần thêm bất kỳ dòng code nào.
Một khi project được cấu hình Spring Actuator, mặc định sẽ có sẵn một số endpoint để quản lý và theo dõi ứng dụng. Trong trường hợp cần thêm những kiểm soát khác cho ứng dụng, có thể thêm endpoint mới.
Cấu hình Actuator trong Spring Boot
Để sử dụng Actuator, chỉ cần thêm dependency spring-boot-starter-actuator
vào file pom.xml
(Maven) hoặc build.gradle
(Gradle).
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Sau khi thêm dependency và khởi động lại ứng dụng, Actuator sẽ được kích hoạt.
Spring Boot Actuator cung cấp các endpoint để truy cập thông tin về ứng dụng. Việc truy cập các endpoint này có thể được thực hiện thông qua HTTP.
Một số endpoint quan trọng bao gồm:
- /health: Cung cấp thông tin về “sức khỏe” của ứng dụng, ví dụ như trạng thái kết nối cơ sở dữ liệu. Endpoint này không yêu cầu xác thực theo mặc định.
- /info: Hiển thị thông tin tùy chỉnh về ứng dụng, ví dụ như phiên bản, mô tả.
- /metrics: Cung cấp thông tin “số liệu” của ứng dụng tại thời điểm hiện tại, ví dụ như bộ nhớ sử dụng, số lượng luồng.
- /loggers: Hiển thị và cho phép thay đổi cấu hình log của ứng dụng.
Thông tin chi tiết về trạng thái ứng dụng được thu thập từ các bean triển khai interface HealthIndicator
được cấu hình trong context.
Ví dụ, endpoint /health
có thể trả về thông tin đơn giản như:
{
"status": "UP"
}
Ngoài việc sử dụng các endpoint mặc định, có thể tùy chỉnh và tạo endpoint mới. Việc tùy chỉnh có thể bao gồm thay đổi id
, trạng thái enabled
(kích hoạt/vô hiệu hóa) và sensitive
(độ nhạy cảm – có cần xác thực hay không) của endpoint.
Để tạo endpoint mới, cần implement interface Endpoint<T>
và định nghĩa logic xử lý cho endpoint đó.
Spring Boot Actuator hỗ trợ nhiều công nghệ khác nhau, bao gồm Spring MVC và JMX. Nó cũng tích hợp với Spring Security để bảo mật việc truy cập các endpoint. Việc cấu hình bảo mật cho Actuator rất quan trọng để ngăn chặn truy cập trái phép vào thông tin nhạy cảm của ứng dụng.
Cấu hình endpoint có thể được thực hiện thông qua file properties hoặc YAML. Ví dụ, để thay đổi id của endpoint /beans
thành /springbeans
và cho phép truy cập mà không cần xác thực:
endpoints.beans.id=springbeans
endpoints.beans.sensitive=false
endpoints.beans.enabled=true