Monitor calling service sử dụng Hystrix với Hystrix Dashboard của Spring Cloud Netflix

Chúng ta đã biết cách sử dụng Hystrix để giải quyết những vấn đề xảy ra liên quan đến việc calling tới các service khác trong một ứng dụng Microservice. Thế nhưng một vấn đề khác đặt ra là làm sao chúng ta có thể monitor, biết được service nào đang có vấn đề, cần được giải quyết để take action ngay lập tức. Rất may là Netflix cũng hỗ trợ cho chúng ta điều này với Hystrix Dashboard và Spring Cloud Netflix cũng có một wrapper cho nó. Hystrix Dashboard sẽ hiển thị cho chúng ta biết method nào của service hiện tại đang gọi tới service khác, có vấn đề gì không? Cụ thể như thế nào? Trong bài viết này, chúng ta hãy cùng nhau tìm hiểu về Hystrix Dashboard từ Spring Cloud Netflix các bạn nhé!

Mình sẽ sử dụng lại ví dụ mà mình đã làm trong bài viết về Hystrix.

Bây giờ mình sẽ thêm mới Hystrix Dashboard dependency từ Spring Cloud Netflix vào project ví dụ này như sau:

Ở đây, như các bạn thấy, mình cũng đã thêm Actuator dependency. Mục đích của việc này là cung cấp một URL đóng vai trò cung cấp data cho Hystrix Dashboard, được tạo ra mặc định bởi Actuator. Cụ thể như thế nào, các bạn đọc tiếp nhé!

Đầu tiên, để sử dụng Hystrix Dashboard, các bạn cần khai báo annotation @EnableHystrixDashboard vào class main của ứng dụng như sau:

Lúc này, nếu các bạn start ứng dụng rồi request tới địa chỉ “http://localhost:8180/hystrix/”, các bạn sẽ thấy kết quả như sau:

Monitor calling service sử dụng Hystrix với Hystrix Dashboard của Spring Cloud Netflix

Ở cửa sổ trên, như các bạn thấy, nó có một ô dùng để nhập URL. URL này chính là API sẽ cung cấp data cho Hystrix Dashboard đó các bạn!

Như mình nói ở trên, API này sẽ được tạo mặc định bởi Actuator nên bây giờ chúng ta sẽ cấu hình cho Actuator một xíu các bạn nhé!

Vì mặc định Actuator chỉ enable một số API như sau:

Monitor calling service sử dụng Hystrix với Hystrix Dashboard của Spring Cloud Netflix

nên để enable API cung cấp data cho Hystrix Dashboard, mình sẽ thêm cấu hình để Actuator enable hết tất cả các API mà nó hỗ trợ bằng cách khai báo trong tập tin application.properties một property như sau:

Xem thêm bài viết này các bạn nhé!

Lúc này nếu restart lại ứng dụng rồi request tới địa chỉ http://localhost:8180/actuator, các bạn sẽ thấy ở đây có một API là “http://localhost:8180/actuator/hystrix.stream”. Đây chính là API cung cấp data cho Hystrix Dashboard đấy các bạn!

Trở lại cửa sổ Hystrix Dashboard rồi nhập URL này vào, sau đó nhấn nút “Monitor Stream”, các bạn sẽ thấy kết quả như sau:

Monitor calling service sử dụng Hystrix với Hystrix Dashboard của Spring Cloud Netflix

Các bạn chỉ thấy dòng chữ “Loading …” ở trên là vì chưa có data để hiển thị đó các bạn.

Nếu bây giờ, các bạn request tới địa chỉ “http://localhost:8180/call-hello” rồi quay lại cửa sổ Hystrix Dashboard, các bạn sẽ thấy kết quả như sau:

Monitor calling service sử dụng Hystrix với Hystrix Dashboard của Spring Cloud Netflix

Các thông tin về service mà chúng ta đang gọi trong method callHello() của ứng dụng này đã được hiển thị. Có 7 thông tin khác nhau về một service được gọi, được hiển thị bao gồm Success, Short-Circuited, Bad Request, Timeout, Rejected, Failure và Error. Mỗi thông tin sẽ có màu khác nhau giúp các bạn dễ dàng nắm được.

Nếu bây giờ mình tắt service “Eureka Client Example đi” rồi request tới địa chỉ “http://localhost:8180/call-hello” lại, các bạn sẽ thấy Hystrix Dashboard hiển thị như sau:

Monitor calling service sử dụng Hystrix với Hystrix Dashboard của Spring Cloud Netflix

Rất trực quan phải không các bạn? Nhìn vào đây các bạn có thể biết được service nào đang bị vấn đề và cần take action ngay!

5/5 - (1 bình chọn)

Add Comment