问题标签 [monit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
998 浏览

ruby-on-rails - 如果独角兽工人重生过快,Monit 会在停止独角兽工人时超时

我正在尝试用 monit 监控独角兽工人,所以当他们达到一定的内存阈值时,它会优雅地杀死他们。

问题:

当我告诉 monit 重新启动一个工作人员时,它首先尝试停止它,触发我的/etc/init.d/unicorn kill_worker 0脚本命令。

当我通过top命令监视进程时,我看到了工人是如何被杀死的,以及主人如何用另一个 pid 产生一个新的工人。

但是,Monit 会等待一段时间并在其日志中抛出“停止失败”错误。它实际上是在等待 30 秒并超时。

一旦超时,monit 会识别出restart action is done,然后注意到 worker PID 已更改并继续按预期监视进程。

结果一切正常,monit 能够在需要时重新启动工作人员并继续监视它们,但是日志中充满了错误,Web 界面execution failed在工作人员上显示了令人讨厌(且令人困惑)的错误状态,我猜它会如果设置了错误的电子邮件警报,则发送错误的电子邮件警报。

这是日志的相关部分,当我尝试通过 Web 界面重新启动工作人员时(注意它也与工作人员的父 PID 混淆):

我花了很长时间才弄清楚,但是这里发生的事情是工人被杀死然后很快重生,以至于 monit 甚至没有注意到变化。

我的猜测是,monit 在执行停止操作时会读取/tmp/unicorn.orly.0.pid以获取进程的 pid,然后查看该进程是否仍然存在。

然而,由于kill-respawn worker 操作发生得如此之快,monit 并没有意识到 worker 的 pid 已经改变并一直在等待(全新的)worker 死亡。然后它超时,然后它意识到pid实际上已经改变并且它正常运行。

我发现的肮脏解决方案:

为了证明这个假设,我试图减慢提到的kill-respawn worker 操作。所以我编辑了 unicorn 配置文件,让新工作人员在/tmp/unicorn.orly.0.pid.

我是这样做的:

而且效果非常好:晴天鸟语花香,网络界面现在显示process running状态不错,日志显示一切顺利,看看:

问题:

有没有实现这一目标的监控方式?让我的工人睡 3 秒钟似乎不是一个好的解决方案。有任何想法吗?

我知道这不是 monit 的正常情况。我们打破了monit的重启过程循环,因为我们不希望start programmonit执行任何操作,而是让独角兽主进程处理它(如这里解释:http: //www.stopdropandrew.com/ 2010/06/01/where-unicorns-go-to-die-watching-unicorn-workers-with-monit.html )

0 投票
1 回答
604 浏览

regex - 如果 X 字符串包含一个单词,则匹配正则表达式?

我正在处理一个我不知道是否可以通过这种方式解决的问题,希望你能帮助我,让我们看看:

我正在使用 Monit 来监视一些日志文件,并且我希望它查找某个表达式,但是如果该表达式出现的次数超过 3 次,我只想要一个正匹配。

有问题的日志文件如下所示:

我正在寻找“ [SEVERE] ”表达式。

如果该表达式出现超过 3 次,我想要一个匹配项。

我知道这.*\[SEVERE\].*给了我匹配该表达式的所有行,但我只想匹配该行数为 3 或更多。有没有办法用正则表达式来做到这一点?或者用Monit做它的替代方法?

0 投票
4 回答
8334 浏览

monit - 在Monit中存在文件的警报

我一直在使用monit 一段时间,但如果文件存在,我想报警。这是与主文档相反的用例。

这里的文档说:

这给了我“如果文件丢失就吓坏了”的秘诀。但我想“如果文件在那里就吓坏了”。行动的选择意味着没有“什么都不做”的行动。我可以选择无操作,但这对于“什么都不做”的标准情况来说真的很愚蠢。

我猜了一些基本情况:

那么,有没有标准的方法IF IT DOES EXIST呢?

0 投票
1 回答
1321 浏览

ruby-on-rails - monit 在生产服务器中找不到独角兽工作者

我正在使用这个 gem 来部署kapify

这是我的独角兽配置:

独角兽配置

独角兽变种erb

unicorn_init.erb

我的部署中有:

这是我在远程服务器中的 pid:

这是我的config/deploy/templates/monit/unicorn.erb文件:

我可以在monit中看到unicorn worker pid的下一条路径:

和消息:

远程服务器中的独角兽 pid 在/home/myapp/apps/myapp/current/tmp/pids/unicorn.pid

unicorn.0.pid我看不到pid/home/hyperrjas/apps/myapp/current/tmp/pids/

Monit 正在监视独角兽 pid。

我如何监控我的独角兽工人?

0 投票
1 回答
382 浏览

node.js - upstart和monit如何支持多个nodejs服务?

我创建了一个新贵脚本以守护 node.js 应用程序:

我的监控脚本如下:

它工作正常,但现在我想添加 nginx 作为上游的负载均衡器,如下所示:

那么我应该如何更改 upstart 和 monit 脚本来支持它呢?

0 投票
5 回答
15291 浏览

bash - Monit 无法启动进程

我写了一个脚本,可以很好地启动和停止服务器。

如果我通过运行启动它

然后启动monit它会正确捕获PID和服务器:

如果我停止它,它将正确终止该进程并取消对其进行监控。但是,如果我再次启动它,它将不会再次启动服务器:

这是监视器:

0 投票
1 回答
1292 浏览

capistrano - 如何配置 monit 以允许更改 pid?

我正在使用 sidekiq 部署 Rails 应用程序。在每次部署时,Capistrano 都会停止以前运行的 sidekiq 版本(一个 ruby​​ 进程),然后启动一个新版本。我正在用monit监控sidekiq pid文件。

问题:每次我部署 pid 文件更改但 monit 检测到它已更改并重新启动进程。经过几天的多次发布,我最终得到了多个 sidekiq 实例,而我只想要一个。

这是我对 sidekiq 的监控配置:

有没有办法配置 monit 以允许 pid 文件更改并仅确保 sidekiq 实例正在运行?

0 投票
1 回答
92 浏览

monitoring - 如何(或应该)监控或确保监控软件的运行?

我正在编写一个系统/服务监控软件,我的主要目标是使其尽可能安全。

现在,我有一个启动主进程的二进制脚本,它派生出执行实际监控和报告的子进程。主人只在孩子失败时管理孩子的重启,以及孩子之间的一些沟通。

鉴于这种故障安全级别,是否建议为主进程添加另一层监控?

假设我的代码是高级语言(python 等),将我的软件包装在一个监视它的 initscript 或 shellscript 中是否有意义,或者它是否是多余的?

0 投票
2 回答
818 浏览

unix - 无法使用 Monit 监控另一个系统中的 MySQL

我正在尝试使用 Monit 监视另一个系统中的 MySQL 进程。该系统连接到与我相同的网络连接。我正在使用这段代码(在配置文件中,monitrc):

使用 pidfile /var/run/mysqld/mysqld.pid 检查进程 mysql

组数据库

启动程序 = "/etc/init.d/mysql 重启"

停止程序 = "/etc/init.d/mysql 停止"

如果主机 192.168.0.189 端口 3306 失败,则重新启动

如果 5 次在 5 个周期内重新启动,则超时

状态似乎是“未监控”。似乎是什么问题?

0 投票
2 回答
253 浏览

monitoring - 微小的 RSS 监视器

帮助!我想在我的 Debian 服务器上设置一个监控服务,它将监控并启动 wen 需要更新程序来更新微型 rss。问题是它是一个 php 前台进程,通常在非 root 用户的屏幕上运行。

我可以将其运行为:

或者更好地把它放在后台,以便从不同的帐户运行它

我已经安装了 monit,但似乎无法找到一种方法来检测 t 是否正在运行。我宁愿继续使用 monit,但没有必要。

任何想法,将不胜感激。