RabbitMQ的告警之二:可用磁盘空间告警

RabbitMQ的告警之二:可用磁盘空间告警

总览

当可用磁盘空间,降至配置的限制值时(默认为50MB),将触发告警,并且所有的生产者将会被阻塞。

目的是为了避免填满整个磁盘,这将会导致节点上的所有写操作失败,并且可能会导致RabbitMQ终止。

它是如何工作的

为了降低填满磁盘的风险,所有的入口消息都会被阻止。因为在内存被限制的压力下,即使通常不会被持久化的瞬时消息,仍然会被调出到磁盘,这将会耗尽本就有限的磁盘空间。

如果磁盘告警设置的比较低,并且消息被调出的很快,则有可能会磁盘空间不足,并且在两次磁盘空间检测之间(至少间隔10秒)使RabbitMQ崩溃。较为保守的方式是,将限制值设置为,与系统上安装的内存量相同(请参考下一节配置部分)。

如果可用磁盘空间量,降至配置的限制值以下,告警将会被触发。

至少每10秒监控一次,代理数据库使用的驱动器或分区的可用空间,以确定磁盘告警是否应该引发或清除。

节点启动时,监控便开始,它将留下如下的日志记录:

2019-04-01 12:02:11.564 [info] <0.329.0> Enabling free disk space monitoring
2019-04-01 12:02:11.564 [info] <0.329.0> Disk free limit set to 950MB

在无法识别的平台上,可用磁盘空间监控将会被禁用,从而导致如下的记录:

2019-04-01 11:04:54.002 [info] <0.329.0> Disabling disk free space monitoring

当在集群中运行RabbitMQ时,磁盘告警是集群范围内的。如果一个节点低于限制值,则所有的节点都将会阻止入口消息。

RabbitMQ周期性地检查可用磁盘空间量。检查磁盘空间的频率与上次检查时的空间量有关。这是为了确保,当空间被耗尽后,磁盘告警会及时响起。通常,磁盘空间每10秒检测一次,但是随着接近限制值,检测频率会增加。当非常接近限制时,RabbitMQ将会按照每秒10次的频率检查。这可能会对系统负载产生影响。

当可用磁盘空间降至配置的限制值以下时,RabbitMQ将会阻塞生产者,并且阻止基于内存的消息分页到磁盘。这将会减少由于磁盘空间耗尽,而导致崩溃的可能性,但是不会完全消除这种可能性。特别是,如果消息被快速调出,则可能会用完磁盘空间,并且在两次磁盘空间检测之间的时间内崩溃。较为保守的方式是,将限制值设置为,与系统上安装的内存量相同(请参考下一节配置部分)。

配置磁盘可用空间限制

磁盘可用空间限制,使用disk_free_limit配置。默认情况下,数据库分区要求50MB的可用空间。下面的配置,将磁盘可用空间设置为1GB。

disk_free_limit.absolute = 1000000000

或者,你可以像这样,使用内存单位(KB,MB,GB等):

disk_free_limit.absolute = 1GB

也可以相对于机器的RAM设置可用空间限制,下面的配置,设置磁盘可用空间与机器上的RAM数量相同。

disk_free_limit.relative = 1.0

在代理正在运行时,可以使用rabbitmqctl set_disk_free_limitrabbitmqctl set_disk_free_limit mem_relative命令改变限制值。命令将会一直生效,直到下一次节点重启。如果想在节点重启后仍然生效,相关的配置文件也需要修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值