RabbitMQ監(jiān)控

1罢绽、搜集日志信息

通過ELK搜集集群節(jié)點中的日志信息畏线,對于ERROR信息,進行郵件告知相關(guān)的維護人員及時進行處理良价。

2寝殴、監(jiān)控硬件資源及進程

公司已經(jīng)有監(jiān)控系統(tǒng)蒿叠,直接將如下磁盤、內(nèi)存及端口蚣常、URL信息在監(jiān)控中進行配置即可市咽。

磁盤

監(jiān)控每臺服務(wù)器的磁盤空間,重點監(jiān)控如下兩個目錄:

  • log目錄

即/app/log 目錄抵蚊。日志文件可以通過定期壓縮清理施绎,保證控制在一定的大小內(nèi)。

  • data目錄

即/app/data 目錄贞绳,這個目錄主要堆積的數(shù)據(jù)還是未消費的已經(jīng)持久化到磁盤上的消息谷醉。這個需要及時對消息進行監(jiān)控。

內(nèi)存

監(jiān)控服務(wù)器的內(nèi)存使用情況冈闭,當(dāng)達到閥值的情況下俱尼,進行提前告警。

監(jiān)控進程

主要是監(jiān)控5672端口萎攒,及http://xxxx:15672訪問地址

3遇八、通過rest接口進行監(jiān)控

依托于rabbitmq提供的強大的rest api,我們可以很方便的獲取到集群中的各個節(jié)點信息躺酒,從而根據(jù)具體的需求押蚤,進行全方位的監(jiān)控。

在公司已經(jīng)采購的監(jiān)控系統(tǒng)和自行搭建的zabbix監(jiān)控中羹应,都能夠很好的支持rest api揽碘。可以通過監(jiān)控系統(tǒng)對json結(jié)果的解析园匹,達到告警的目的雳刺。

消息監(jiān)控

消息監(jiān)控可以通過定時調(diào)用rest接口,獲取隊列的未消費數(shù)量裸违,對超過一定數(shù)量的mq消息掖桦,提供短信郵件告警;

  • 獲取消息的rest接口地址為:

http://xxx:15672/api/queues

  • 消息內(nèi)容示例(只截取部分內(nèi)容):
[{
    "memory": 55568,
    ...
    "messages": 21,                              #消息總數(shù)量
    ...
    "messages_ready": 21,                        #待處理消息數(shù)量
    ...
    "messages_unacknowledged": 0,                #未確認消息數(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,            #消息占用的磁盤大小
    ...
    "name": "ha.queue_123",
    "vhost": "/123",
    "durable": true,
    "auto_delete": false,
    "exclusive": false,
    "arguments": {},
    "node": "rabbit@rabbitmqstg02"
}]

文件描述符供汛、socket文件描述符枪汪、erlang進程監(jiān)控

通過rest接口獲取到每個集群中的節(jié)點信息,通過實際值和閥值的大小怔昨,及時的進行告警雀久,這一步告警方式,可以根據(jù)嚴(yán)重程度趁舀,依次郵件赖捌、微信、短信通知到相關(guān)的人員矮烹。

  • 獲取節(jié)點的rest接口地址為:

http://xxx:15672/api/nodes

  • 集群節(jié)點內(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,                 # 磁盤使用量
    "fd_used": 58,                            # 文件描述符使用數(shù)
    ...
    "mem_used": 58362720,                     # 內(nèi)存使用量
    "mnesia_disk_tx_count": 7,
    "mnesia_ram_tx_count": 13108,
    "proc_used": 225,                         # erlang進程使用數(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,           # 磁盤閥值
    "proc_total": 1048576,                    # erlang進程總數(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
}]

4越庇、監(jiān)聽堵塞消息

可以在MQ中專門創(chuàng)建一個監(jiān)控的隊列罩锐,定時的發(fā)送和消費隊列中的消息,并且通過的如下的代碼去監(jiān)控隊列是否已經(jīng)堵塞卤唉,如果監(jiān)聽到隊列已經(jīng)堵塞涩惑,就立即發(fā)送告警的短信和郵件。

關(guān)于是否需要手動將故障機器剔除集群搬味,這個有待商榷境氢,但是如果要做的話,是可以在這里做到的碰纬。

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
    }
});
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市问芬,隨后出現(xiàn)的幾起案子悦析,更是在濱河造成了極大的恐慌,老刑警劉巖此衅,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件强戴,死亡現(xiàn)場離奇詭異,居然都是意外死亡挡鞍,警方通過查閱死者的電腦和手機骑歹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來墨微,“玉大人道媚,你說我怎么就攤上這事∏滔兀” “怎么了最域?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長锈麸。 經(jīng)常有香客問我镀脂,道長,這世上最難降的妖魔是什么忘伞? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任薄翅,我火速辦了婚禮,結(jié)果婚禮上氓奈,老公的妹妹穿的比我還像新娘翘魄。我一直安慰自己,他們只是感情好探颈,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布熟丸。 她就那樣靜靜地躺著,像睡著了一般伪节。 火紅的嫁衣襯著肌膚如雪光羞。 梳的紋絲不亂的頭發(fā)上绩鸣,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音纱兑,去河邊找鬼呀闻。 笑死,一個胖子當(dāng)著我的面吹牛潜慎,可吹牛的內(nèi)容都是我干的捡多。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼铐炫,長吁一口氣:“原來是場噩夢啊……” “哼垒手!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起倒信,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤科贬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鳖悠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體榜掌,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年乘综,在試婚紗的時候發(fā)現(xiàn)自己被綠了憎账。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡卡辰,死狀恐怖胞皱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情看政,我是刑警寧澤朴恳,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站允蚣,受9級特大地震影響于颖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嚷兔,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一森渐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冒晰,春花似錦同衣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春埠况,著一層夾襖步出監(jiān)牢的瞬間耸携,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工辕翰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留夺衍,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓喜命,卻偏偏與公主長得像沟沙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子壁榕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容