Actuator là 1 Spring Boot sub-project giúp hiển thị các tính năng được hỗ trợ trên ứng dụng Spring Boot
Các tính năng chính Actuator có thể cung cấp
- HealthCheck: Kiểm tra tình trạng của ứng dụng đang chạy, Running hay Stop,…
- Giám sát và quản lý qua HTTP/JMX: Actuator hỗ trợ HTTP endpoint như một phần mở rộng của Java Management Extensions (JMX) để cung cấp một cơ chế tiêu chuẩn cho giám sát và quản lý ứng dụng.
- Logger: Nó cung cấp một tính năng để xem và cập nhật logs level
- Metrics: Spring Boot Actuator cung cấp khả năng quản lý phụ thuộc và cấu hình tự động cho Micrometer, một bộ các metrics phục vụ giám sát hệ thống.
- Auditing: Khi Spring Security đang hoạt động, Spring Boot Actuator có một khung kiểm tra linh hoạt và công bố các sự kiện (mặc định: các ngoại lệ “xác thực thành công”, “thất bại”, “từ chối truy cập”). Tính năng này có thể hữu ích để báo cáo và thực hiện các policy dựa trên lỗi xác thực.
- HTTP Tracing: HTTP Tracing có thể được bật bằng cách cung cấp loại bean HttpTraceRepository trong cấu hình ứng dụng. Để thuận tiện, Spring Boot cung cấp một InMemoryHttpTraceRepository kho lưu trữ vết cho 100 lần trao đổi phản hồi yêu cầu gần nhất.
- Giám sát tiến trình
Enable Spring Boot Actuator
Bạn có thể Enable Actiator và project Spring Boot bằng cách cấu hình như bên dưới
//Gradle org.springframework.boot:spring-boot-starter-actuator:2.3.1.RELEASE
//Maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> <version>2.3.1.RELEASE</version> </dependency>
Ưu điểm của Actuator Endpoint
Mặc định các endpoint health và info sẽ được enable
Các endpoint nhạy cảm khác sẽ không được hiển thị trên môi trường Production mà không có cơ chế bảo mật. Bạn có thể bật tất cả các API lên bằng cách thêm cấu hình dưới đây vào file cấu hình của Spring Boot project
management.endpoints.web.exposure.include=*
Bạn cũng có thể bật hoặc tắt các endpoint thep chỉ định bằng cách cấu hình
# wild card to include/exclude all management.endpoints.web.exposure.include=* management.endpoints.web.exposure.exclude=* # you can include specific properties like below management.endpoints.web.exposure.include=env,beans management.endpoints.web.exposure.exclude=heapdump
Tùy chỉnh địa chỉ Management Server
Bạn có thể thay đổi port Management Server
management.server.port=8081 management.server.address=127.0.0.1
Tùy chỉnh các endpoint
Bất kỳ method nào được gán annotation @ReadOperation , @WriteOperation hoặc @DeleteOperation đều tự động được hiển thị qua JMX và HTTP. Thậm chí bạn có thể hiển thị đặc tả công nghệ cụ thể bằng cách dùng @JmxEndpoint hoặc @WebEndpoint
Dưới đây, mình chia sẻ một ví dụ cho hiển thị endpoint sử dụng Spring Boot 2.x
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; import org.springframework.stereotype.Component; @Component @org.springframework.boot.actuate.endpoint.annotation.Endpoint(id = "say-hello") public class Endpoint { @ReadOperation public String sayHello() { return "Hello World"; } }
Các bạn có thể chủ động tìm hiểu thêm về ứng dụng thực tế của Actuator nói chung và Spring Boot Actuator nói riêng.
Ứng dụng lớn và phổ biển nhất của Actuator là dùng dữ liệu đầu ra phục vụ cho giám sát hệ thống
- Mức độ sử dụng Ram, CPU, Disk, Network traffic, Nhiệt độ server,…
- Số lượng session và request vào/ra của ứng dụng
- Số lượng connection database (active, idle, waiting, total,…)
- Tổng hợp log ứng dụng, trạng thái ứng dụng
- …
Ngoài ra còn rất nhiều thông tin khác có thể truy xuất được, tùy thuộc vào endpoint các bạn cài đặt. Đi kèm với các endpoint là bộ công cụ giám sát hệ thống
- Prometheus: Tổng hợp, lưu lịch sử và phân tích dữ liệu từ các metrics trong endpoint sau đó đưa ra các báo cáo dạng biểu đồ
- Grafana: Hỗ trợ giao diện chuyên nghiệp, hiển thị các dữ liệu từ Prometheus hoặc trực tiếp các endpoint để xuất ra biểu đồ giám sát. Các biểu đồ này được tùy chỉnh đầy đủ và chuyên nghiệp hơn Prometheus
Tổng kết
Spring Boot Actuator là một trong các thư viện tốt bạn có thể thêm vào ứng dụng để enable các tính năng sẵn có mà không mất nhiều công. Nó cung cấp các tính năng chính có thể được sử dụng trong hỗ trợ sản xuất hàng ngày.