更新時(shí)間:2021-09-15 10:58:45 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2104次
Rabbitmq監(jiān)控是Rabbitmq教程中需要學(xué)習(xí)的重要的部分,下面小編就來(lái)給大家進(jìn)行詳細(xì)介紹。
通過(guò)ELK搜集集群節(jié)點(diǎn)中的日志信息,對(duì)于ERROR信息,進(jìn)行郵件告知相關(guān)的維護(hù)人員及時(shí)進(jìn)行處理。
公司已經(jīng)有監(jiān)控系統(tǒng),直接將如下磁盤(pán)、內(nèi)存及端口、URL信息在監(jiān)控中進(jìn)行配置即可。
磁盤(pán)
監(jiān)控每臺(tái)服務(wù)器的磁盤(pán)空間,重點(diǎn)監(jiān)控如下兩個(gè)目錄:
log目錄
即/app/log 目錄。日志文件可以通過(guò)定期壓縮清理,保證控制在一定的大小內(nèi)。
data目錄
即/app/data 目錄,這個(gè)目錄主要堆積的數(shù)據(jù)還是未消費(fèi)的已經(jīng)持久化到磁盤(pán)上的消息。這個(gè)需要及時(shí)對(duì)消息進(jìn)行監(jiān)控。
內(nèi)存
監(jiān)控服務(wù)器的內(nèi)存使用情況,當(dāng)達(dá)到閥值的情況下,進(jìn)行提前告警。
監(jiān)控進(jìn)程
主要是監(jiān)控5672端口,及http://xxxx:15672訪問(wèn)地址
依托于rabbitmq提供的強(qiáng)大的rest api,我們可以很方便的獲取到集群中的各個(gè)節(jié)點(diǎn)信息,從而根據(jù)具體的需求,進(jìn)行全方位的監(jiān)控。
在公司已經(jīng)采購(gòu)的監(jiān)控系統(tǒng)和自行搭建的zabbix監(jiān)控中,都能夠很好的支持rest api??梢酝ㄟ^(guò)監(jiān)控系統(tǒng)對(duì)json結(jié)果的解析,達(dá)到告警的目的。
消息監(jiān)控
消息監(jiān)控可以通過(guò)定時(shí)調(diào)用rest接口,獲取隊(duì)列的未消費(fèi)數(shù)量,對(duì)超過(guò)一定數(shù)量的mq消息,提供短信郵件告警;
獲取消息的rest接口地址為:
http://xxx:15672/api/queues
消息內(nèi)容示例(只截取部分內(nèi)容):
[{
"memory": 55568,
...
"messages": 21, #消息總數(shù)量
...
"messages_ready": 21, #待處理消息數(shù)量
...
"messages_unacknowledged": 0, #未確認(rèn)消息數(shù)量
...
"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, #消息占用的內(nèi)存大小
"message_bytes_persistent": 2816, #消息占用的磁盤(pán)大小
...
"name": "ha.queue_123",
"vhost": "/123",
"durable": true,
"auto_delete": false,
"exclusive": false,
"arguments": {},
"node": "rabbit@rabbitmqstg02"
}]
文件描述符、socket文件描述符、erlang進(jìn)程監(jiān)控
通過(guò)rest接口獲取到每個(gè)集群中的節(jié)點(diǎn)信息,通過(guò)實(shí)際值和閥值的大小,及時(shí)的進(jìn)行告警,這一步告警方式,可以根據(jù)嚴(yán)重程度,依次郵件、微信、短信通知到相關(guān)的人員。
獲取節(jié)點(diǎn)的rest接口地址為:
http://xxx:15672/api/nodes
集群節(jié)點(diǎn)內(nèi)容示例(只截取部分內(nèi)容):
[{
"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, # 磁盤(pán)使用量
"fd_used": 58, # 文件描述符使用數(shù)
...
"mem_used": 58362720, # 內(nèi)存使用量
"mnesia_disk_tx_count": 7,
"mnesia_ram_tx_count": 13108,
"proc_used": 225, # erlang進(jìn)程使用數(shù)
"sockets_used": 0, # socket描述符已經(jīng)使用數(shù)
"fd_total": 65536, # 文件描述符總數(shù)
"sockets_total": 58890, # socket描述符總數(shù)
"mem_limit": 1607527628, # 內(nèi)存閥值
"disk_free_limit": 10000000000, # 磁盤(pán)閥值
"proc_total": 1048576, # erlang進(jìn)程總數(shù)
...
"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中專(zhuān)門(mén)創(chuàng)建一個(gè)監(jiān)控的隊(duì)列,定時(shí)的發(fā)送和消費(fèi)隊(duì)列中的消息,并且通過(guò)的如下的代碼去監(jiān)控隊(duì)列是否已經(jīng)堵塞,如果監(jiān)聽(tīng)到隊(duì)列已經(jīng)堵塞,就立即發(fā)送告警的短信和郵件。
關(guān)于是否需要手動(dòng)將故障機(jī)器剔除集群,這個(gè)有待商榷,但是如果要做的話,是可以在這里做到的。
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
}
});
以上就是關(guān)于“Rabbitmq監(jiān)控詳解”的介紹,對(duì)Java感興趣的朋友可以關(guān)注動(dòng)力節(jié)點(diǎn)Java在線學(xué)習(xí),里面有很多相關(guān)資料文檔可以學(xué)習(xí),在Java視頻教程頁(yè)面中有入門(mén)到精通全套教程能夠免費(fèi)下載學(xué)習(xí),希望對(duì)大家能夠有所幫助。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)