Nếu một triển khai Java đã công bố điểm cuối Jolokia được cấp quyền, ứng dụng khách giám sát có thể đọc thuộc tính JMX qua một proxy HTTP chuyển tiếp thông thường. Ứng dụng khách nói HTTP với Jolokia, và Jolokia thực hiện thao tác JMX ở phía ứng dụng.

monitor → HTTP proxy → HTTPS Jolokia endpoint → MBean

Đường đi này cần một điểm cuối quản trị có khả năng HTTP. Trỏ một ứng dụng khách JMX gốc không đổi vào proxy web không tạo ra điểm cuối đó.

Ví dụ, việc đọc mức sử dụng heap của JVM có thể được diễn đạt như một yêu cầu POST:

curl --proxy http://proxy.example.net:8080 \
  --header 'Content-Type: application/json' \
  --data '{"type":"read","mbean":"java.lang:type=Memory","attribute":"HeapMemoryUsage","path":"used"}' \
  https://monitor.example.net/jolokia/

Điểm cuối và proxy là các giá trị giữ chỗ. Cách này dùng thao tác đọc; phương thức HTTP POST mang yêu cầu JSON của Jolokia chứ không ngụ ý ghi JMX. Jolokia cũng hỗ trợ yêu cầu GET cho các thao tác đơn giản, trong khi JSON POST tránh một phần việc thoát URL cần thiết cho tên MBean phức tạp.

Với điểm cuối quản trị HTTPS, proxy chuyển tiếp phải cho phép đích đường hầm liên quan. TLS vẫn nên xác minh monitor.example.net. Tên máy chủ và chứng chỉ của chính proxy, nếu kết nối proxy dùng TLS, mô tả một chặng riêng.

Giữ tách biệt hai quyết định xác thực. Các tùy chọn xác thực proxy của curl cung cấp một tài khoản proxy. Xác thực của điểm cuối cung cấp danh tính quản trị, và chính sách của Jolokia quyết định những MBean và thao tác nào có thể truy cập. Quyền dùng proxy chuyển tiếp không phải quyền quản trị JVM.

Phản hồi cũng có hai lớp: trạng thái vận chuyển HTTP và kết quả thao tác JSON của Jolokia. Hãy kiểm tra status và value được trả về thay vì chấp nhận bất kỳ nội dung nào là chỉ số thành công. Lỗi proxy, lỗi xác thực tại điểm cuối và MBean thiếu đòi hỏi những thay đổi khác nhau.

Nếu triển khai chỉ công bố trình kết nối JMX gốc, hãy chọn đường đi tương thích với trình kết nối đó hoặc chuẩn bị một điểm cuối quản trị HTTP đã được phê duyệt. Chuyển tiếp cục bộ SSH là một thiết kế vận chuyển khác, nhưng vẫn là kết nối tới dịch vụ gốc; nó không đổi giao thức của dịch vụ thành HTTP API của Jolokia.

Bài viết liên quan