linux - Redis Sentinel 用于监控目的?通知脚本触发次数过多

标签 linux redis redis-sentinel

出于我的目的,我只需要一个运行的 Redis 实例和一个 Redis 哨兵。我正在运行 Redis 3.0.6。我的 sentinel.conf 都是默认值,除了 quorum 是 1 并且通知脚本行是未注释的:sentinel notificication-script mymaster/etc/redis/notify_me.sh。在 notify_me.sh 中,我执行了一个 python 脚本,出于测试目的,它只是说 print "HEY SOMETHING IS UP WITH REDIS"

我只想将 Redis sentinel 用于监控目的。稍后,我会在 python 脚本中写一些东西,当 redis 出现故障时,它会给我发电子邮件/发短信。然而,就像现在一样,它开火的频率太高了。当哨兵确定 redis 已经死亡时,我只想收到一次消息。 现在当我启动它时,该语句在开始时打印一次,然后在 failover-state-select-slave 之后打印多次

23863:X 06 Jan 15:26:18.422 # Sentinel runid is db267af1b9257ced70eee9cbd076291db31f9335
23863:X 06 Jan 15:26:18.422 # +monitor master mymaster 127.0.0.1 6380 quorum 1
HEY SOMETHING IS UP WITH REDIS
23863:X 06 Jan 15:27:07.602 # +sdown master mymaster 127.0.0.1 6380
23863:X 06 Jan 15:27:07.602 # +odown master mymaster 127.0.0.1 6380 #quorum 1/1
23863:X 06 Jan 15:27:07.602 # +new-epoch 1
23863:X 06 Jan 15:27:07.602 # +try-failover master mymaster 127.0.0.1 6380
23863:X 06 Jan 15:27:07.604 # +vote-for-leader db267af1b9257ced70eee9cbd076291db31f9335 1
23863:X 06 Jan 15:27:07.604 # +elected-leader master mymaster 127.0.0.1 6380
23863:X 06 Jan 15:27:07.604 # +failover-state-select-slave master mymaster 127.0.0.1 6380
HEY SOMETHING IS UP WITH REDIS
HEY SOMETHING IS UP WITH REDIS
HEY SOMETHING IS UP WITH REDIS
HEY SOMETHING IS UP WITH REDIS
HEY SOMETHING IS UP WITH REDIS
HEY SOMETHING IS UP WITH REDIS
HEY SOMETHING IS UP WITH REDIS
23863:X 06 Jan 15:27:07.682 # -failover-abort-no-good-slave master mymaster 127.0.0.1 6380

我不希望它在开始时打印,我只希望它在服务器死机时打印一次,这样我以后只会收到一封电子邮件/文本。任何人,对我能做什么有什么建议吗?谢谢!

最佳答案

好的,我已经在 freenode 上的#redis 的帮助下弄明白了。在我的 notify_me.sh 中,echo $* 会向您显示一些内容,例如:

+odown master mymaster 127.0.0.1 6379 #quorum 1/1

第一件事是像这里列出的那样的 pubsub 消息:http://redis.io/topics/sentinel#pubsub-messages . +odown 是当 sentinel 认为服务器客观关闭时,这就是我想做我的 python 东西的时候。每次有消息时 notify_me.sh 都会触发,这就是为什么我收到这么多嘿,REDIS 有问题了,所以我就这样写了:

notify_me.sh中,

#!/bin/sh
python notify_redis.py $*

然后在notify_redis.py中,

import sys

def main(args):
    for arg in args:
        if arg == "+odown":
            print "HEY SOMETHING IS UP WITH REDIS"
            email_text_or_whatever_thing_you_wanna_do()

main(sys.argv)

希望这对某人有帮助!

关于linux - Redis Sentinel 用于监控目的?通知脚本触发次数过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34645391/

相关文章:

redis - Redis是否需要锁定?

javascript - Session Node.js + Passport.js + Redis,通过user.id存储 session

node.js - 什么是 npm 模块 spport Redis Sentinel 作为 session 存储

Redis从3.0.7升级到5

linux - git push --mirror - 内部服务器错误

python - 如何使用子进程停止由单个脚本生成的所有子进程

c - (在 UNIX 中执行内置程序(C)

linux - 如何在启动每个服务之前执行命令

redis - 将交换的数据推回到 Redis 内存中

python - Celery 无法连接到哨兵 : No master found for 'mymaster'