我正在配置莫尼特来监视Redis和Redis。但是每次运行Monit时,它都会记录Redis和都没有运行,并且尝试运行它们,尽管它们都已经完成了。它在启动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以下是我对Redis Monit的配置(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我认为造成这个问题的原因是其他运行良好的进程与所有目录和bin文件一起归root所有。但是与Redis相关的所有东西都是用户"redis“从组"redis”拥有的。这就是为什么Monit不能启动或阻止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但这也没用。
我在这里做错什么了?用Monit监控Redis的正确方法是什么?
发布于 2015-11-30 21:32:34
我做了几次更改,以确保Monit有权启动/停止服务,并确保在Monit重新启动服务后具有正确的PID文件。在我的例子中,这是一种配置:
# 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/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发布于 2022-08-07 02:35:37
这是我的红宝石的监控器。看看这个对你有用吗。
check process redis matching "redis"
start program = "/usr/bin/sudo /bin/systemctl start redis"
stop program = "/usr/bin/sudo /bin/systemctl stop redis"
if failed host localhost port 6379 protocol redis then alert
if failed host localhost port 6379 for 3 cycles then restart
if 3 restarts within 10 cycles then timeouthttps://stackoverflow.com/questions/32099509
复制相似问题