Алгоритм действий состоит из следующих шагов: 1.Запуск Redis-экспортера для сбора метрик с Redis и отдачи их Prometheus-у 2.Настройка Prometheus-а для сбора метрик с Redis-экспортера 3.Импортирование/настройка dashboard Grafana для визуализации метрик 4.Настрйка правил Prometheus для мониторинга Redis показателей 1.Запуск Redis-экспортера для сбора метрик с Redis и отдачи их Prometheus-у Redis-экспортер запускаем в той же docker-сети, в […]
Записи с меткой ‘redis’
Настройка High Availability Redis-кластер
Есть 2 сервера приложений(app01 и app02), на которых установлен Redis и Sentinel для мониторинга активного мастера и перевода одного из существующих слейв серверов в режим мастера в случае выхода со строя текущего мастера, а также перевода старого мастера в режим slave к вновь избранному мастеру. Также есть третий сервер(advisor), на котором запущен только Sentinel. Этот […]
Мониторинг Redis в Zabbix
1.Получение Redis-статистики Если используем подключение к порту
1 |
# redis-cli info |
Если используем подключение к Unix-сокету
1 |
# redis-cli -s /path/to/socke/file |
2. Настройка скрипта на Zabbix-агенте Выполнить скрипт
1 |
# nano redis-prepare.sh |
1 2 3 4 5 6 7 8 9 |
#!/bin/bash [ -d /etc/zabbix/scripts ] || mkdir /etc/zabbix/scripts/ chown root:zabbix -R /etc/zabbix/scripts/ chmod 750 /etc/zabbix/scripts/ [ -f /etc/zabbix/scripts/redis.sh ] || touch /etc/zabbix/scripts/redis.sh chown root:zabbix /etc/zabbix/scripts/redis.sh chmod 550 /etc/zabbix/scripts/redis.sh |
Создание скрипта для проверки Redis-параметров
1 |
# nano /etc/zabbix/scripts/redis.sh |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
#!/bin/bash ##### Help ##### help () { echo "Usage: $0 redis_metric" echo "For example: $0 rejected_connections" } ##### OPTIONS VERIFICATION ##### if [[ -z "$1" ]]; then help exit 1 fi ##### PARAMETERS ##### HOSTNAME=$(hostname -f) AWK=$(which awk) GREP=$(which grep) METRIC="$1" REDIS_CLI=$(which redis-cli) # To use Unix-socket instead of port # REDIS_CLI= "$(which redis-cli) -s /path/to/socket/file" CACHE_TTL="55" CACHE_FILE="/tmp/zabbix.redis.`echo $HOSTNAME | md5sum | cut -d" " -f1`.cache" EXEC_TIMEOUT="1" NOW_TIME=`date '+%s'` ##### RUN ##### if [ -s "${CACHE_FILE}" ]; then CACHE_TIME=`stat -c"%Y" "${CACHE_FILE}"` else CACHE_TIME=0 fi DELTA_TIME=$((${NOW_TIME} - ${CACHE_TIME})) # if [ ${DELTA_TIME} -lt ${EXEC_TIMEOUT} ]; then sleep $((${EXEC_TIMEOUT} - ${DELTA_TIME})) elif [ ${DELTA_TIME} -gt ${CACHE_TTL} ]; then echo "" >> "${CACHE_FILE}" # !!! DATACACHE=`${REDIS_CLI} info 2>&1` echo "${DATACACHE}" > "${CACHE_FILE}" # !!! chmod 640 "${CACHE_FILE}" fi case ${METRIC} in rejected_connections|expired_keys|evicted_keys|keyspace_hits|keyspace_misses|connected_clients|blocked_clients|rdb_last_bgsave_status|total_connections_received|total_commands_processed|used_cpu_sys|used_cpu_user) $GREP -w ${METRIC} "${CACHE_FILE}" | $AWK -F: '{print $2}' ;; total_net_input_bytes|total_net_output_bytes) $GREP -w ${METRIC} "${CACHE_FILE}" | $AWK -F: 'x=$2 {print x/1024/1024}' ;; used_memory_rss|used_memory_peak|used_memory_overhead|used_memory_startup|used_memory_dataset|used_memory_lua|used_memory|maxmemory) $GREP -w ${METRIC} "${CACHE_FILE}" | $AWK -F: 'x=$2 {print x/1024/1024}' ;; *) help ;; esac exit 0 |
3.Настройка Zabbix-агента
1 |
# nano /etc/zabbix/zabbix_agentd.d/userparameter_redis.conf |
1 2 |
# Redis monitoring UserParameter=redis[*],/etc/zabbix/scripts/redis.sh "$1" |
Перезапуск Zabbix-агента
1 2 |
# Ubuntu14 # service zabbix-agent restart |
1 2 |
# Ubuntu16 # systemctl restart zabbix-agent |
Проверка получение Redis-метрики локально с Zabbix-агента
1 |
# sudo -u zabbix /etc/zabbix/scripts/redis.sh used_memory |
1 |
0.439476 |
1 |
# zabbix_get -s 127.0.0.1 -k "redis[used_memory]" |
1 |
0.439476 |
С Zabbix-сервера
1 |
# zabbix_get -s server1.mydomain.com -k "redis[used_memory]" |
1 |
0.439476 |
[…]
Настройка Redis
Настройка основного конфигурационного файла Redis — redis.conf (его расположение на файловой системе зависит от дистрибутива и способа установки) 1.Увеличиваем количество входящих соединений Прроверяем текущее значение
1 |
# cat /proc/sys/net/core/somaxconn |
1 |
128 |
1 |
# nano /etc/redis.conf |
1 |
tcp-backlog 511 |
Выставим somaxconn больше,чем tcp-backlog
1 |
# sysctl -w net.core.somaxconn=1024 |
Для автозагрузки используем
1 |
# nano /etc/sysctl.conf |
1 |
net.core.somaxconn=1024 |
2.Настройка переменной ядра для работы с памятью vm.overcommit_memory Определяет условия разрешения и отказа запросов […]
Настройка мониторинга Nginx, Memcached, Redis в Cacti средствами Percona Monitoring Plugins
Мониторинг Nginx 1.Узнаем под каким пользователем запускается poller
1 |
# grep -ri cacti /etc/cron* |
1 |
/etc/cron.d/cacti:* * * * * cacti /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1 |
В данном случае под пользователем cacti 2. Создаем пару SSH-ключей без пароля и сохраняем ключи в /etc/cacti
1 |
# ssh-keygen |
1 2 3 4 5 6 |
Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): /etc/cacti/id_rsa Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /etc/cacti/id_rsa. Your public key has been saved in /etc/cacti/id_rsa.pub. |
3.Выставляем корректного владельца на ключи – пользователя cacti
1 |
# chown cacti /etc/cacti/id_rsa* |
1 |
# ls -al /etc/cacti/ | grep id |
1 2 |
-rw------- 1 cacti root 1679 Dec 29 22:52 id_rsa -rw-r--r-- 1 cacti root 406 Dec 29 22:52 id_rsa.pub |
4.Создаем пользователя,например, cacti на клиенте(192.168.1.100), с которого будет сниматься статитика
1 |
# ssh -p 2220 root@192.168.1.100 adduser cacti |
[…]