首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Monit不和Redis合作

Monit不和Redis合作
EN

Stack Overflow用户
提问于 2015-08-19 15:15:08
回答 2查看 1.9K关注 0票数 4

我正在配置莫尼特来监视Redis和Redis。但是每次运行Monit时,它都会记录Redis和都没有运行,并且尝试运行它们,尽管它们都已经完成了。它在启动Redis进程时失败。

然而,它对系统检查和nginx以及其他一些进程都非常有效。

版本:

代码语言:javascript
运行
复制
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几乎有相同的配置):

代码语言:javascript
运行
复制
# 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的日志:

代码语言:javascript
运行
复制
[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。

但是我尝试通过在开始设置和停止设置中添加用户来使用它,比如:

代码语言:javascript
运行
复制
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的正确方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2015-11-30 21:32:34

我做了几次更改,以确保Monit有权启动/停止服务,并确保在Monit重新启动服务后具有正确的PID文件。在我的例子中,这是一种配置:

代码语言:javascript
运行
复制
# 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允许在超时之前,确保有足够的时间作为服务进行响应。

产出如下:

代码语言:javascript
运行
复制
[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
票数 2
EN

Stack Overflow用户

发布于 2022-08-07 02:35:37

这是我的红宝石的监控器。看看这个对你有用吗。

代码语言:javascript
运行
复制
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 timeout
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32099509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档