您好,登錄后才能下訂單哦!
本篇內容主要講解“Rabbitmq監控方法怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Rabbitmq監控方法怎么使用”吧!
通過ELK搜集集群節點中的日志信息,對于ERROR信息,進行郵件告知相關的維護人員及時進行處理。
公司已經有監控系統,直接將如下磁盤、內存及端口、URL信息在監控中進行配置即可。
磁盤
監控每臺服務器的磁盤空間,重點監控如下兩個目錄:
log目錄
即/app/log 目錄。日志文件可以通過定期壓縮清理,保證控制在一定的大小內。
data目錄
即/app/data 目錄,這個目錄主要堆積的數據還是未消費的已經持久化到磁盤上的消息。這個需要及時對消息進行監控。
內存
監控服務器的內存使用情況,當達到閥值的情況下,進行提前告警。
監控進程
主要是監控5672端口,及http://xxxx:15672訪問地址
依托于rabbitmq提供的強大的rest api,我們可以很方便的獲取到集群中的各個節點信息,從而根據具體的需求,進行全方位的監控。
在公司已經采購的監控系統和自行搭建的zabbix監控中,都能夠很好的支持rest api。可以通過監控系統對json結果的解析,達到告警的目的。
消息監控
消息監控可以通過定時調用rest接口,獲取隊列的未消費數量,對超過一定數量的mq消息,提供短信郵件告警;
獲取消息的rest接口地址為:
http://xxx:15672/api/queues
消息內容示例(只截取部分內容):
[{ "memory": 55568, ... "messages": 21, #消息總數量 ... "messages_ready": 21, #待處理消息數量 ... "messages_unacknowledged": 0, #未確認消息數量 ... "idle_since": "2018-07-02 14:02:04", "consumer_utilisation": null, "policy": "hao123", "exclusive_consumer_tag": null, "consumers": 0, "slave_nodes": ["rabbit@rabbitmqstg03", "rabbit@rabbitmqstg04"], "synchronised_slave_nodes": ["rabbit@rabbitmqstg03", "rabbit@rabbitmqstg04"], "recoverable_slaves": ["rabbit@rabbitmqstg03", "rabbit@rabbitmqstg04"], "state": "running", ... "message_bytes_ram": 13086, #消息占用的內存大小 "message_bytes_persistent": 2816, #消息占用的磁盤大小 ... "name": "ha.queue_123", "vhost": "/123", "durable": true, "auto_delete": false, "exclusive": false, "arguments": {}, "node": "rabbit@rabbitmqstg02"}]
文件描述符、socket文件描述符、erlang進程監控
通過rest接口獲取到每個集群中的節點信息,通過實際值和閥值的大小,及時的進行告警,這一步告警方式,可以根據嚴重程度,依次郵件、微信、短信通知到相關的人員。
獲取節點的rest接口地址為:
http://xxx:15672/api/nodes
集群節點內容示例(只截取部分內容):
[{ "cluster_links": [{ "peer_addr": "10.1.110.39", "peer_port": 51715, "sock_addr": "10.1.110.37", "sock_port": 25672, "stats": {...}, "name": "rabbit@rabbitmqstg04" }, ...], "disk_free": 28271468544, # 磁盤使用量 "fd_used": 58, # 文件描述符使用數 ... "mem_used": 58362720, # 內存使用量 "mnesia_disk_tx_count": 7, "mnesia_ram_tx_count": 13108, "proc_used": 225, # erlang進程使用數 "sockets_used": 0, # socket描述符已經使用數 "fd_total": 65536, # 文件描述符總數 "sockets_total": 58890, # socket描述符總數 "mem_limit": 1607527628, # 內存閥值 "disk_free_limit": 10000000000, # 磁盤閥值 "proc_total": 1048576, # erlang進程總數 ... "log_file": "/app/rabbitmq/rabbitmq_server-3.6.1/log/rabbitmq/rabbit@rabbitmqstg02.log", "sasl_log_file": "/app/rabbitmq/rabbitmq_server-3.6.1/log/rabbitmq/rabbit@rabbitmqstg02-sasl.log", "db_dir": "/app/rabbitmq/rabbitmq_server-3.6.1/data/rabbit@rabbitmqstg02", "config_files": ["/app/rabbitmq/rabbitmq_server-3.6.1/etc/rabbitmq/rabbitmq.config"], ... "name": "rabbit@rabbitmqstg02", "type": "disc", "running": true}]
可以在MQ中專門創建一個監控的隊列,定時的發送和消費隊列中的消息,并且通過的如下的代碼去監控隊列是否已經堵塞,如果監聽到隊列已經堵塞,就立即發送告警的短信和郵件。
關于是否需要手動將故障機器剔除集群,這個有待商榷,但是如果要做的話,是可以在這里做到的。
ConnectionFactory factory = new ConnectionFactory(); Connection connection = factory.newConnection(); connection.addBlockedListener(new BlockedListener() { public void handleBlocked(String reason) throws IOException { // Connection is now blocked } public void handleUnblocked() throws IOException { // Connection is now unblocked } });
到此,相信大家對“Rabbitmq監控方法怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。