2015-08-19 2 views
3

Я настраиваю Monit для мониторинга Redis и Redis Sentinel. Но каждый раз, когда Monit запущен, он регистрирует, что оба Redis и Redis Sentinel не работают и пытаются их запустить, хотя оба они уже выполнены. Он не запускает процессы Redis.Monit не работает с Redis

Принимая во внимание, что он отлично работает для системных проверок и nginx и некоторых других процессов.

Версии:

Redis: Redis server v=2.8.4 sha=00000000:0 malloc=jemalloc-3.4.1 bits=64 build=a44a05d76f06a5d9 
Monit: version 5.6 

Вот моя конфигурация Monit для Redis (Redis Страж имеет почти такую ​​же конфигурацию):

# redis 
check process redis with pidfile /var/run/redis-server.pid 
    group cache 
    group redis 
    start program = "/etc/init.d/redis-server start" 
    stop program = "/etc/init.d/redis-server stop" 
    if failed host 127.0.0.1 port 6379 then restart 
    if totalmem > 500 Mb then alert 
    if cpu > 60% for 2 cycles then alert 
    if cpu > 98% for 5 cycles then restart 
    if 2 restarts within 2 cycles then alert 
    depend redis_bin 
    depend redis_rc 

check file redis_bin with path /usr/bin/redis-server 
    group redis 
    include /etc/monit/templates/rootbin 

check file redis_rc with path /etc/init.d/redis-server 
    group redis 
    include /etc/monit/templates/rootbin 

Вот журналы Monit:

[PKT Aug 19 17:00:07] error : 'redis' process is not running 
[PKT Aug 19 17:00:07] info  : 'redis' trying to restart 
[PKT Aug 19 17:00:07] info  : 'redis' start: /etc/init.d/redis-server 
[PKT Aug 19 17:00:37] error : 'redis' failed to start 

Я думаю, что причиной этой проблемы являются другие процессы, которые работают нормально, принадлежат root вместе со всеми e каталогов и файлов bin. Но все, что связано с Redis, принадлежит пользователю «redis» из группы «redis». И вот почему Монит не может начать или остановить Редиса.

Но я пытался использовать его путем добавления пользователя в начальной и конечной настройки, как это:

start program = "/etc/init.d/redis-server start" 
    as uid redis and gid redis 
stop program = "/etc/init.d/redis-server stop" 
    as uid redis and gid redis 

Но это не сработало.

Что я здесь делаю неправильно? Каков правильный способ мониторинга Redis с Монитом?

ответ

0

Пара изменений, которые я сделал, чтобы убедиться, что Monit имеет доступ к запуску/остановке службы, а также убедитесь, что у меня есть правильный файл PID, который Monit проверяет после перезапуска службы. В моем случае это была конфигурация:

# redis 
check process redis with pidfile /var/run/redis/redis-server.pid 
    group cache 
    group redis 
    start program = "/usr/sbin/service redis-server start" with timeout 60 seconds 
    stop program = "/usr/sbin/service redis-server stop" with timeout 60 seconds 
    if failed host 127.0.0.1 port 6379 then restart 
    if totalmem > 500 Mb then alert 
    if cpu > 60% for 2 cycles then alert 
    if cpu > 98% for 5 cycles then restart 
    if 2 restarts within 2 cycles then alert 
    depend redis_bin 
    depend redis_rc 

check file redis_bin with path /usr/bin/redis-server 
    group redis 
    include /etc/monit/templates/rootbin 

check file redis_rc with path /etc/init.d/redis-server 
    group redis 
    include /etc/monit/templates/rootbin 
  • Сформированный PID путь к файлу отличается от моей машины, я рекомендую вам убедиться, что это правильный путь, на вашей стороне.
  • Я дал операцию старт/стоп 60 секунд вместо значения по умолчанию 30 секунд
  • примечание стороны: я использовал /usr/sbin/service redis-server вместо /etc/init.d/redis-server, но это не должно иметь значение, я пытался их обоих, и они оба работают.

Monit позволяет до истечения срока, только чтобы убедиться, что у него есть достаточное количество времени, чтобы ответить как услуга.

Выход:

[EST Nov 30 16:25:22] error : 'redis' process is not running 
[EST Nov 30 16:25:22] info  : 'redis' trying to restart 
[EST Nov 30 16:25:22] info  : 'redis' start: /usr/sbin/service 
[EST Nov 30 16:27:22] info  : 'redis' process is running with pid 24864 
Смежные вопросы