Redis Sentinel:通知中的主名称

时间:2015-08-26 09:00:39

标签: notifications redis redis-sentinel

当Redis Sentinel通知事件时,它不提供Redis主服务器的名称。

摘录中的摘录:

# sentinel notification-script <master-name> <script-path>
#
# Call the specified notification script for any sentinel event that is
# generated in the WARNING level (for instance -sdown, -odown, and so forth).
# This script should notify the system administrator via email, SMS, or any
# other messaging system, that there is something wrong with the monitored
# Redis systems.
#
# The script is called with just two arguments: the first is the event type
# and the second the event description.

因此,只有事件类型(例如+odown)和事件描述,如果+odown只是master。不知怎的,我觉得这是缺乏重要的信息。我们不仅希望通知用户某些内容已发生变化,而且其中已更改。

您无法使用其他参数注册脚本,例如

sentinel notification-script <master-name> "<script-path> <master-name>"

Redis将整个值使用,并检查它是否存在且可执行。

我们通过创建小包装脚本来解决这个问题,每个主实例都有一个脚本。

$ cat /some/path/notify-master42.sh
#!/bin/sh
/some/path/notify.sh master42 $1 $2

然后将此包装脚本附加到主文件:

sentinel notification-script <master-name> notification-script /some/path/notify-<master-name>.sh

只要您拥有固定数量的主人并且不通过网络动态创建它们,这有点不舒服,但也不会太糟糕。

您只需通过网络与哨兵互动即可注册新主人。 (redis-cli -h <host> -p <port> sentinel whatever...)但是创建这些包装器脚本更复杂。并不是说这是不可能的,但感觉就像没有任何东西跳过燃烧的箍。

有没有办法通知包括主名称:

  • 没有修补redis
  • 没有包装脚本

1 个答案:

答案 0 :(得分:1)

是的,你是通过使用正确的事件来完成的。

&#34;所以只有事件类型(例如+ odown)和事件描述,在+ odown的情况下只是master。不知怎的,我觉得这是缺乏重要的信息。我们不仅希望通知用户某些内容已发生变化,而且还发生了变化。&#34;

在+ odown的情况下, 没有其他信息。所有 + odown 表示主服务器已关闭。此时没有其他事情发生过。如果您想根据故障转移(在 + odown 之后发生)更新某些内容,您需要查看相应的事件:<强>开关主即可。 switch-master 事件是故障转移完成时发生的事件。

直接来自documentation

  

switch-master <master name> <oldip> <oldport> <newip> <newport> - 主配置新IP和地址是配置更改后指定的IP地址。 这是大多数外部用户感兴趣的消息。

因此,让您的脚本查找并对switch-master事件采取行动,以获取有关更改内容的信息。没有更多的燃烧箍跳过。