Skip to content

17.1 Làm việc với các MBean của Actuator

Theo mặc định, tất cả các endpoint của Actuator đều được expose dưới dạng MBean. Tuy nhiên, bắt đầu từ Spring Boot 2.2, JMX mặc định bị vô hiệu hóa. Để bật JMX trong ứng dụng Spring Boot, bạn có thể đặt spring.jmx.enabled thành true. Trong application.yml, cấu hình sẽ như sau:

yaml
spring:
  jmx:
    enabled: true

Với thuộc tính đó được thiết lập, hỗ trợ JMX của Spring sẽ được kích hoạt. Và cùng với đó, tất cả các endpoint của Actuator sẽ được expose dưới dạng MBean. Bạn có thể sử dụng bất kỳ client JMX nào để kết nối với các MBean của endpoint Actuator. Khi sử dụng JConsole (đi kèm với bộ Java Development Kit), bạn sẽ thấy các MBean của Actuator được liệt kê dưới domain org.springframework.boot, như minh họa trong hình 17.1.

Hình 17.1Hình 17.1 Các endpoint của Actuator được tự động expose dưới dạng JMX MBean

Một điểm hay của các endpoint Actuator MBean là chúng đều được expose theo mặc định. Bạn không cần phải khai báo tường minh để bật bất kỳ endpoint nào, như khi sử dụng HTTP. Tuy nhiên, bạn có thể thu hẹp phạm vi expose bằng cách đặt management.endpoints.jmx.exposure.includemanagement.endpoints.jmx.exposure.exclude. Ví dụ, để giới hạn các MBean của Actuator chỉ còn các endpoint /health, /info, /bean, và /conditions, bạn cấu hình management.endpoints.jmx.exposure.include như sau:

yaml
management:
  endpoints:
    jmx:
      exposure:
        include: health,info,bean,conditions

Hoặc nếu bạn chỉ muốn loại trừ một vài endpoint cụ thể, bạn có thể sử dụng management.endpoints.jmx.exposure.exclude như sau:

yaml
management:
  endpoints:
    jmx:
      exposure:
        exclude: env,metrics

Ở đây, bạn sử dụng management.endpoints.jmx.exposure.exclude để loại trừ các endpoint /env/metrics. Tất cả các endpoint Actuator khác vẫn sẽ được expose dưới dạng MBean.

Để gọi các thao tác được quản lý (managed operations) trên một MBean của Actuator trong JConsole, bạn mở rộng endpoint MBean trong cây bên trái, sau đó chọn thao tác mong muốn trong mục Operations.

Ví dụ, nếu bạn muốn kiểm tra mức độ logging cho package tacos.ingredients, bạn mở rộng MBean Loggers và nhấp vào thao tác có tên loggerLevels, như minh họa trong hình 17.2. Trong biểu mẫu ở góc trên bên phải, điền tên package vào trường Name (ví dụ: org.springframework.web), sau đó nhấp vào nút loggerLevels.

Hình 17.2Hình 17.2 Sử dụng JConsole để hiển thị mức độ logging từ một ứng dụng Spring Boot

Sau khi bạn nhấp vào nút loggerLevels, một hộp thoại sẽ xuất hiện, hiển thị phản hồi từ endpoint MBean /loggers. Kết quả có thể sẽ trông giống như hình 17.3.

Hình 17.3Liệt kê 17.3 Một MBean đếm số lượng taco đã được tạo

Mặc dù giao diện người dùng của JConsole hơi khó sử dụng, bạn vẫn có thể làm quen và sử dụng nó để khám phá bất kỳ endpoint nào của Actuator theo cách tương tự. Nếu bạn không thích JConsole, không sao cả — có rất nhiều client JMX khác để bạn lựa chọn.

Released under the MIT License.