четверг, 14 сентября 2017 г.

Нотификации об ошибках в Redis-кластере с помощью Sentinel и Slack

На самом деле можно куда угодно слать уведомление, хоть в систему мониторинга, хоть на почту. Я отправляю в Slack.

Вот как выглядит скрипт отправки сообщения:
# vim /srv/sentinel_notification.bash
#!/bin/bash

SLACK_URL=https://hooks.slack.com/services/12345 # your webhook url

if [ "$#" = "2" ]; then
SLACK_BODY=`cat << EOB
=====================================
Information about your Redis Cluster.
Check Redis server or sentinel.
=====================================
Event type: ${1}
Event description: ${2}

Message sent by Sentinel Notification feature.

EOB`
    curl -X POST --data-urlencode "payload={\"channel\": \"#monitoring\", \"username\": \"Redis Sentinel from dbs\", \"text\": \"\`\`\`$SLACK_BODY\`\`\`\"}" $SLACK_URL
fi

Делаем скрипт исполняемым:
# chmod +x /srv/sentinel_notification.bash

В конфиг sentinel прописываем наш скрипт:
# vim /etc/redis-sentinel.conf
....
sentinel notification-script mymaster /srv/sentinel_notification.bash
...

Рестартим сервис:
# systemctl restart redis-sentinel

Вот пример того, как выглядит сообщение в Slack:

Список всех event type можно посмотреть в документации: https://redis.io/topics/sentinel#pubsub-messages