当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...
)但是创建这些包装器脚本更复杂。并不是说这是不可能的,但感觉就像没有任何东西跳过燃烧的箍。
有没有办法通知包括主名称:
答案 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事件采取行动,以获取有关更改内容的信息。没有更多的燃烧箍跳过。