RabbitMQ Management là một giao diện thân thiện với người dùng cho phép chúng ta giám sát và xử lý RabbitMQ Server của mình từ trình duyệt web.
- Có thể quản lý queue, connection, channel, exchange, users and user permission.
- Có thể được xử lý: tạo, xóa và xem trong trình duyệt.
- Có thể theo dõi tốc độ tin nhắn và gửi / nhận tin nhắn theo cách thủ công.
Trong bài viết này tôi sẽ giới thiệu các thông tin về các chế độ xem khác nhau mà chúng ta có thể tìm thấy trong RabbitMQ Management.
Nội dung
Truy cập RabbitMQ Management
Ở bài viết trước tôi đã hướng dẫn các bạn Cài đặt RabbitMQ và cách start RabbitMQ Server.
Sau khi khởi động RabbitMQ, chúng ta có thể theo dõi và quản lý RabbitMQ từ giao diện web ở cổng 15672. Các bạn có thể truy cập vào trang này bằng URL sau: http://localhost:15672/ với username và password là guest/guest.
Sau khi login sẽ thấy kết quả như sau:
Trang Overview
Overview
Trang Overview (Tổng quan) hiển thị 2 biểu đồ, một cho các Message (tin nhắn) trong Queue (hàng đợi) và một với tốc độ tin nhắn (Message rate). Bạn có thể thay đổi khoảng thời gian hiển thị trong biểu đồ bằng cách nhấn văn bản (last minute) phía trên biểu đồ. Thông tin về tất cả các trạng thái khác nhau cho tin nhắn có thể được tìm thấy bằng cách nhấn (?).
Queued messages: Biểu đồ hể hiện tổng số tin nhắn được xếp hàng cho tất cả các Queue.
- Ready: hiển thị số lượng tin nhắn có sẵn để được gửi.
- Unacked: là số lượng tin nhắn mà máy chủ đang chờ xác nhận.
- Total: tổng số tin nhắn được xếp hàng cho tất cả các Queue.
Messages rate: Bểu đồ thể hiện tỷ lệ xử lý các tin nhắn.
- Publish: hiển thị tốc độ tin nhắn gửi đến máy chủ.
- Publisher confirm: hiển thị tốc độ mà máy chủ đang xác nhận.
- Deliver (manual ack)/ Deliver (auto ack): hiển thị tốc độ gửi tin nhắn ack theo cách thủ công và tự động.
- Get (manual ack)/ Get (auto ack): hiển thị tốc độ nhận tin nhắn ack theo cách thủ công và tự động.
- Redeliverd: hiển thị tốc độ gửi lại tin nhắn.
- Disk read/ write: hiển thị tốc độ đọc ghi dữ liệu lên đĩa.
Global Count: Tổng số Connection, Channel, Exchage, Queue và Consumer cho TẤT CẢ các virtual host mà người dùng hiện tại có quyền truy cập.
Nodes
Hiển thị thông tin về các Node khác nhau trong cụm RabbitMQ (cụm là một nhóm các Node hay một nhóm máy tính). Ở đây có thể thấy thông tin về bộ nhớ máy chủ (Memory), số lượng quá trình Erlang trên mỗi Node, dung lượng ổ đĩa (Disk space), thời gian start server (Uptime), …
Churn statistics
Hiển thị tỷ lệ tạo mới (created) hoặc đóng (closed) các connection, channel, queue.
Ports and contexts
Các port (cổng lắng) nghe cho các protocol (giao thức) khác nhau có thể được tìm thấy ở đây.
Import export definitions
Có thể import và export definition (định nghĩa) cấu hình toàn bộ thông tin về RabbitMQ.
Khi export các definition, chúng ta nhận được một file JSON đại diện cho broker (RabbitMQ). Điều này có thể được sử dụng để khôi phục Exchange, Queue, virtual host, policy, user, … Tính năng này có thể được sử dụng như một bản sao lưu. Mỗi khi bạn thay đổi cấu hình, bạn có thể lưu giữ các cài đặt cũ để khôi phục lại khi cần.
Một số thông tin của file export definition:
{ "rabbit_version": "3.8.3", "rabbitmq_version": "3.8.3", "users": [ { "name": "admin", "password_hash": "DTJsIFUX+ZufUuomOCV7U4r/tHKTcQwQRgQ2VrpirFg54V8c", "hashing_algorithm": "rabbit_password_hashing_sha256", "tags": "administrator" }, { "name": "guest", "password_hash": "KlAfeUhw5bovgF2KYUR8Nwu4MCvZMCb5tzAzTx+Hy9ASsYvU", "hashing_algorithm": "rabbit_password_hashing_sha256", "tags": "administrator" } ], "vhosts": [ { "name": "/" } ], "permissions": [ { "user": "admin", "vhost": "/", "configure": ".*", "write": ".*", "read": ".*" }, { "user": "guest", "vhost": "/", "configure": ".*", "write": ".*", "read": ".*" } ], "topic_permissions": [ { "user": "admin", "vhost": "/", "exchange": "", "write": ".*", "read": ".*" } ], "parameters": [], "global_parameters": [ { "name": "cluster_name", "value": "rabbit@Phans-MacBook-Pro" }, { "name": "internal_cluster_id", "value": "rabbitmq-cluster-id-O9MD_G6YuGvhRlj0rsUbAA" } ], "policies": [], "queues": [ { "name": "QGeneral", "vhost": "/", "durable": true, "auto_delete": false, "arguments": {} }, { "name": "QManager", "vhost": "/", "durable": true, "auto_delete": false, "arguments": {} } ], "exchanges": [ { "name": "GPCoderHeadersExchange", "vhost": "/", "type": "headers", "durable": true, "auto_delete": false, "internal": false, "arguments": {} }, { "name": "GPCoder.DirectExchange", "vhost": "/", "type": "direct", "durable": true, "auto_delete": false, "internal": false, "arguments": {} } ], "bindings": [ { "source": "GPCoder.DirectExchange", "vhost": "/", "destination": "QDeveloper", "destination_type": "queue", "routing_key": "devGroup", "arguments": {} } ] }
Trang Connections
Connection là kết nối TCP giữa ứng dụng và broker RabbitMQ. Một Channel là một kết nối ảo bên trong một Connection.
Trang Connection hiển thị các kết nối được thiết lập đến máy chủ RabbitMQ.
- overview hiển thị địa chỉ IP, tên người dùng được liên kết với kết nối, trạng thái Connection.
- Channels cho biết số lượng kênh sử dụng kết nối.
- SSL / TLS cho biết liệu kết nối có được bảo mật bằng SSL hay không.
Nếu click vào một trong các kết nối, ta sẽ có cái nhìn tổng quan về kết nối cụ thể đó. Có thể xem các kênh trong kết nối và tốc độ dữ liệu. Có thể thấy các thuộc tính của Client và ta có thể đóng kết nối nếu muốn (Force Close).
Trang Channels
Trang Channels hiển thị thông tin về tất cả các Channel hiện tại.
- Hiển tên người dùng mà người dùng liên kết với kênh, trạng thái kết nối, xác nhận, …
- Tỷ lệ trao đổi Message.
Nếu click vào một trong các Channel, ta sẽ có được cái nhìn tổng quan chi tiết về Channel thể đó.
Trang Exchanges
Một Exchange sẽ nhận được tin nhắn từ các Producer và đẩy chúng đến Queue. Exchange phải biết chính xác những gì cần làm với một tin nhắn mà nó nhận được. Tất cả các Exchange có thể được liệt kê từ trang Exchange.
- Name: Hiển thị tên Exhange được tạo.
- Type: là loại Exchange như direct, topic, fanout và header.
- Feature: hiển thị các tham số cho Exchange (ví dụ: D là durable, và AD là auto-delete).
- Message rate in/ out: Tỷ lệ xử lý Message chuyển đến và đi.
- Trong danh sách này có một số Exchange amq.* và Default Exchange (trao đổi mặc định – không tên), chúng được tạo theo mặc định.
Có thể thêm một Exchange mới:
Bằng cách click vào tên Exchange, một trang chi tiết về Exchange được hiển thị.
Có thể xem và thêm các ràng buộc cho Exchange.
Cũng có thể publish một tin nhắn đến Exchange:
Hoặc xóa Exchange.
Trang Queues
Queue có các tham số và đối số khác nhau tùy thuộc vào cách chúng được tạo.
- Name: Hiển thị tên Queue được tạo.
- Feature: hiển thị các tham số cho Queue (ví dụ: D là durable, và AD là auto-delete).
- Message Ready: hiển thị số lượng tin nhắn có sẵn để được gửi.
- Message Unacked: là số lượng tin nhắn mà máy chủ đang chờ xác nhận.
- Message Total: tổng số tin nhắn được xếp hàng trong Queue.
- Message rate in/ out: Tỷ lệ xử lý Message chuyển đến và đi.
Có thể thêm một Queue mới:
Bằng cách click vào tên Queue, một trang chi tiết về Queue được hiển thị.
Consumer: hiển thị consumers/ channels đang được kết nối đến Queue.
Có thể xem và thêm các ràng buộc cho Queue.
Cũng có thể publish một tin nhắn đến Queue:
Có thể xoá Queue bằng cách click vào button Delete Queue hoặc xoá tất cả Message trong Queue bằng cách click vào button Purge Messages.
Trang Admin
Từ trang Admin, ta có thể thêm user, thay đổi user permission, set up vhost, policy, giới hạn số lượng connection hay thay đổi cluster name.
Click vào menu Virtual Hosts bên trái để xem danh sách hoặc thêm Virtual Hosts mới:
Có thể thêm hoặc cập nhật Policy ở sub-menu Policies bên trái:
Tương tự click vào sub-menu Limits để giới hạn số lượng Connection, Queue của một Virtual Host.
Mặc định, RabbitMQ đặt tên cho cluster là rabbit@<computer name>, chúng ta có thể đổi tên này ở sub-menu cluster:
Bài viết này chủ yếu giới thiệu với các bạn các tính năng mà chúng ta có thể sử dụng từ RabbitMQ Management Interface. Trong các bài viết tiếp theo, chúng ta sẽ cùng tìm hiểu các giao tiếp với RabbitMQ thông qua code và các bạn có thể sử dụng công cụ này để theo dõi các thông tin về Exchange, Queue, Connection, … được tạo ra từ code của chúng ta.
Tài liệu tham khảo: