03 - Spring Boot Actuator
03/03/2025 - 3 phút
Trong bài viết này, chúng ta sẽ tìm hiểu về Spring Boot Actuator, một công cụ mạnh mẽ giúp giám sát và quản lý ứng dụng Spring Boot một cách dễ dàng.
1. Giới Thiệu
Khi triển khai một ứng dụng vào môi trường production, việc giám sát và quản lý trở nên vô cùng quan trọng. Bạn cần biết ứng dụng của mình có đang hoạt động ổn định không, có lỗi gì xảy ra, hiệu suất ra sao, bộ nhớ và CPU có bị quá tải không, v.v.
Spring Boot Actuator là một công cụ mạnh mẽ giúp bạn giám sát và quản lý ứng dụng thông qua nhiều endpoint hữu ích mà không cần viết thêm nhiều mã nguồn.
2. Cách Cài Đặt Spring Boot Actuator
Để sử dụng Actuator, bạn chỉ cần thêm dependency vào pom.xml
:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Sau khi thêm dependency này, Actuator sẽ tự động kích hoạt một số endpoint giúp theo dõi tình trạng ứng dụng.
3. Các Endpoint Quan Trọng Của Spring Boot Actuator
Spring Boot Actuator cung cấp nhiều endpoint hữu ích để theo dõi ứng dụng. Một số endpoint quan trọng:
Endpoint | Mô tả |
---|---|
/actuator/health | Kiểm tra tình trạng ứng dụng (UP/DOWN). |
/actuator/info | Hiển thị thông tin tùy chỉnh về ứng dụng. |
/actuator/metrics | Cung cấp thông tin về hiệu suất, CPU, bộ nhớ, request count. |
/actuator/loggers | Hiển thị và điều chỉnh mức độ log. |
/actuator/env | Hiển thị thông tin cấu hình môi trường. |
/actuator/beans | Liệt kê tất cả các bean đang được sử dụng trong ứng dụng. |
/actuator/mappings | Hiển thị danh sách tất cả các endpoint API trong ứng dụng. |
3.1. Bật Các Endpoint Quan Trọng
Mặc định, chỉ có /health
và /info
được bật. Để bật tất cả endpoint, thêm vào application.properties
:
management.endpoints.web.exposure.include=*
Nếu bạn chỉ muốn bật một số endpoint cụ thể, có thể cấu hình như sau:
management.endpoints.web.exposure.include=health,info,metrics
3.2. Kiểm Tra Tình Trạng Ứng Dụng
Sau khi bật Actuator, bạn có thể kiểm tra tình trạng ứng dụng bằng cách truy cập:
http://localhost:8080/actuator/health
Mặc định, Actuator sẽ trả về:
{
"status": "UP"
}
Nếu có lỗi trong ứng dụng, trạng thái có thể chuyển sang DOWN
, OUT_OF_SERVICE
, hoặc UNKNOWN
.
3.3. Theo Dõi Hiệu Suất Ứng Dụng
Bạn có thể truy cập endpoint /metrics
để xem các số liệu thống kê như:
http://localhost:8080/actuator/metrics
Ví dụ, để xem số lượng request HTTP nhận được:
http://localhost:8080/actuator/metrics/http.server.requests
Kết quả:
{
"name": "http.server.requests",
"measurements": [
{ "statistic": "count", "value": 150 },
{ "statistic": "max", "value": 200.5 }
]
}
4. Bảo Mật Cho Actuator Endpoint
Do Actuator cung cấp nhiều thông tin nhạy cảm, bạn nên hạn chế quyền truy cập bằng cách cấu hình bảo mật.
Ví dụ, để yêu cầu xác thực cho các endpoint, thêm vào application.properties
:
management.endpoints.web.exposure.include=*
spring.security.user.name=admin
spring.security.user.password=secret
Sau đó, khi truy cập các endpoint Actuator, bạn sẽ cần đăng nhập với tài khoản admin
và mật khẩu secret
.
5. Tích Hợp Actuator Với Prometheus và Grafana
Spring Boot Actuator có thể kết hợp với Prometheus và Grafana để giám sát hiệu suất ứng dụng.
- Prometheus thu thập dữ liệu từ endpoint
/actuator/metrics
- Grafana giúp hiển thị dữ liệu theo dạng biểu đồ, giúp dễ dàng theo dõi.
Cách tích hợp Prometheus:
- Thêm dependency:
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
- Bật endpoint Prometheus:
management.endpoints.web.exposure.include=prometheus
Truy cập dữ liệu metric tại:
http://localhost:8080/actuator/prometheus
6. Kết Luận
Spring Boot Actuator là một công cụ mạnh mẽ giúp giám sát và quản lý ứng dụng một cách dễ dàng.
Tóm tắt các tính năng quan trọng:
- Cung cấp nhiều endpoint hữu ích để kiểm tra tình trạng ứng dụng.
- Theo dõi hiệu suất, tài nguyên hệ thống và số lượng request.
- Hỗ trợ bảo mật để giới hạn quyền truy cập vào thông tin nhạy cảm.
- Tích hợp với Prometheus và Grafana để giám sát chuyên sâu.
👉 Trong bài viết tiếp theo, chúng ta sẽ tìm hiểu về Spring Boot Logging, cách cấu hình và tối ưu hệ thống log trong ứng dụng Spring Boot!