在过去的几年中,我们一直运行Varnish作为caching和负载均衡器,在服务于数千个网站的几台Apache服务器之前。 我们还使用monit来确保如果清漆死亡,它会重新启动。 monitrc中的清漆部分如下所示: # Check varnish on port 80 check process varnish with pidfile /var/run/varnishd.pid start program = "/etc/init.d/varnish start" stop program = "/etc/init.d/varnish stop" if failed host 127.0.0.1 port 80 protocol http and request "/monit-check-url" then restart 这至less可以工作3年。 80端口检查偶尔会出现故障,但monit会重新启动清漆,用户通常不会察觉。 但是,在过去的几个星期里,我们看到了这些失败的风险,通常在几个小时的时间里,用户注意到连接失败。 今天特别糟糕。 在系统日志中没有任何线索(这是一个debian框btw)的build议“光油崩溃”部分: https : //www.varnish-cache.org/docs/3.0/tutorial/troubleshooting.html和我们看到的所有有监测端口80检查,然后停止和启动清漆。 另外,我们没有看到带宽的上升或后端Web服务器的点击次数,这表明它在高于正常负载的情况下失败。 我们正在运行光油3.0.3,我升级到3.0.7,但问题仍在继续。 这个箱子没有做任何其他的改变,这个改变与开始的问题是一致的,而且在很长一段时间里漆的configuration没有改变。 有没有人有类似的经验与清漆或有任何解决这个问题的build议? 会不会是某种攻击? 任何帮助或build议非常感谢!
当我使用check process ,monit会启动我在start program下定义的start program然后monit会在start program停止时重新启动它。 但是,当我使用check program monit不会自动启动它。 如果程序正在运行,并由于某种原因停止与非0的退出代码monit将不会重新启动它(见我的configuration下面)。 我真的不知道如何根据我的退出代码正确启动和重新启动程序。 我的configuration文件如下所示: set logfile /tmp/monit.log set daemon 1 check program MyProgram with path “/monit/MyProgram.py” and with timeout 3600 seconds every 1 cycles start program = “/monit/MyProgram.py” with timeout 3600 seconds if status > 200 then restart if status < 201 then stop if 2 restart […]
我已经启用并监视了一个应用程序,如果应用程序在10个周期内重新启动超过4次,我将停止它,然后运行一个脚本(除其他动作外,还会unmonitor all脚本并停止monit ) 现在,如果我手动启动我的应用程序并再次监听,则monit首先在所有应用程序上禁用监视。 是否有可能在monitrc或其他configuration中的某处进行monitor all ,以便monitor all启动? 我可以从我的脚本发出monit monitor all命令,但是有一个为monitconfiguration的startup delay ,我将不得不等待HTTP连接启动后才能发出命令。 相反,监视启用monit开始将是一件好事。 我在最新的5.17 ,从Ubuntu的可靠源码build立。
我在monit中configuration了十几个相同的服务。 当我为这些服务的check process启用警报,并在所有服务中出现警报情况时,我会收到十几个相同的警报。 有没有办法进行某种聚合(可能基于进程检查组),以便在一个监视周期内只收到一个警报?
我正在尝试使用resque作为Rails的职位。 我已经尝试过这个configuration,还有许多其他的妖魔化救援任务的方式(因为运行rake resque:work离开与该命令绑定的terminal)。 不幸的是,他们的示例configuration不适合我。 configuration看起来是否正确? 或者还有另一种方法将stream程转变成守护进程? 谢谢 :) check process resque_worker_QUEUE with pidfile /data/APP_NAME/current/tmp/pids/resque_worker_QUEUE.pid start program = "/bin/sh -c 'cd /data/APP_NAME/current; RAILS_ENV=production QUEUE=queue_name VERBOSE=1 nohup rake environment resque:work& > log/resque_worker_QUEUE.log && echo $! > tmp/pids/resque_worker_QUEUE.pid'" as uid deploy and gid deploy stop program = "/bin/sh -c 'cd /data/APP_NAME/current && kill -s QUIT `cat tmp/pids/resque_worker_QUEUE.pid` && […]
我想在monit重启时执行一个脚本。 对我来说,这主要适用于整个服务器的重启。 我怎样才能做到这一点? 旁边有没有办法做到这一点? 背景:我需要的服务器是虚拟服务器。 看来,在iptables防火墙规则是不持久的,所以我需要在服务器启动设置它们。
Apache失败,Monit没有按预期重启。 monit日志中的错误是: Error opening Monit id file '/root/.monit.id' for writing-Cannot allocate memory 问题是Apache由于内存不足而宕机,所以……在这种情况下,没有什么可做的事情吗? 内存不足导致进程和监视进程的事件都被中断。 任何人都知道在Monit工作的任何策略?
我们的开发人员需要某种通知,以便知道应用程序是否运行正常。我们已经决定,我们将执行monit以完成此项任务。 不幸的是,这是另一个挑战。 如果monit本身出现故障会发生什么呢?他们当然不知道他们的应用程序是否正在运行? 有没有人有任何想法,以确保这件事情可以通知(无论服务器正在上升或下降)? 谢谢。
我们有监听端口9000的套接字监听器,下面是我们如何编写monit的警报。 侦听器通过yajsw守护进程工具运行。 所以目前当它在9000端口失败时,我们会收到一封电子邮件。 我们想要扩展的是,如果它没有停止运行,卸载,安装并最终启动程序。 我们有所有的脚本到所述的过程,但如何把监视? 所有这些都在shell脚本文件中。 check process cs9000 with pidfile /var/run/wrappercs9000.pid # check your app pid start program = stop program = if failed port 9000 # if you want to check your app that listen on port 9000 then restart
我有一个monit脚本(11-13行): check program foo with path "/usr/local/bin/foo.sh" with timeout 300 seconds if status != 0 then alert [email protected] monit reload说: /etc/monit/conf.d/example:13: Error: syntax error '[email protected]' 这些例子都没有显示一个电子邮件警报,但我需要一个。 为什么我不能在这里? 我正在使用Monit 5.5。