RabbitMQ监控

1、搜集日志信息

通过ELK搜集集群节点中的日志信息,对于ERROR信息,进行邮件告知相关的维护人员及时进行处理。

2、监控硬件资源及进程

公司已经有监控系统,直接将如下磁盘、内存及端口、URL信息在监控中进行配置即可。

磁盘

监控每台服务器的磁盘空间,重点监控如下两个目录:

  • log目录

即/app/log 目录。日志文件可以通过定期压缩清理,保证控制在一定的大小内。

  • data目录

即/app/data 目录,这个目录主要堆积的数据还是未消费的已经持久化到磁盘上的消息。这个需要及时对消息进行监控。

内存

监控服务器的内存使用情况,当达到阀值的情况下,进行提前告警。

监控进程

主要是监控5672端口,及http://xxxx:15672访问地址

3、通过rest接口进行监控

依托于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
}]

4、监听堵塞消息

可以在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
    }
});
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容