问题标签 [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.
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 program
monit执行任何操作,而是让独角兽主进程处理它(如这里解释:http: //www.stopdropandrew.com/ 2010/06/01/where-unicorns-go-to-die-watching-unicorn-workers-with-monit.html )
regex - 如果 X 字符串包含一个单词,则匹配正则表达式?
我正在处理一个我不知道是否可以通过这种方式解决的问题,希望你能帮助我,让我们看看:
我正在使用 Monit 来监视一些日志文件,并且我希望它查找某个表达式,但是如果该表达式出现的次数超过 3 次,我只想要一个正匹配。
有问题的日志文件如下所示:
我正在寻找“ [SEVERE] ”表达式。
如果该表达式出现超过 3 次,我想要一个匹配项。
我知道这.*\[SEVERE\].*
给了我匹配该表达式的所有行,但我只想匹配该行数为 3 或更多。有没有办法用正则表达式来做到这一点?或者用Monit做它的替代方法?
monit - 在Monit中存在文件的警报
我一直在使用monit 一段时间,但如果文件存在,我想报警。这是与主文档相反的用例。
这里的文档说:
这给了我“如果文件丢失就吓坏了”的秘诀。但我想“如果文件在那里就吓坏了”。行动的选择意味着没有“什么都不做”的行动。我可以选择无操作,但这对于“什么都不做”的标准情况来说真的很愚蠢。
我猜了一些基本情况:
那么,有没有标准的方法IF IT DOES EXIST
呢?
ruby-on-rails - monit 在生产服务器中找不到独角兽工作者
我正在使用这个 gem 来部署kapify。
这是我的独角兽配置:
我的部署中有:
这是我在远程服务器中的 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。
我如何监控我的独角兽工人?
node.js - upstart和monit如何支持多个nodejs服务?
我创建了一个新贵脚本以守护 node.js 应用程序:
我的监控脚本如下:
它工作正常,但现在我想添加 nginx 作为上游的负载均衡器,如下所示:
那么我应该如何更改 upstart 和 monit 脚本来支持它呢?
bash - Monit 无法启动进程
我写了一个脚本,可以很好地启动和停止服务器。
如果我通过运行启动它
然后启动monit
它会正确捕获PID和服务器:
如果我停止它,它将正确终止该进程并取消对其进行监控。但是,如果我再次启动它,它将不会再次启动服务器:
这是监视器:
capistrano - 如何配置 monit 以允许更改 pid?
我正在使用 sidekiq 部署 Rails 应用程序。在每次部署时,Capistrano 都会停止以前运行的 sidekiq 版本(一个 ruby 进程),然后启动一个新版本。我正在用monit监控sidekiq pid文件。
问题:每次我部署 pid 文件更改但 monit 检测到它已更改并重新启动进程。经过几天的多次发布,我最终得到了多个 sidekiq 实例,而我只想要一个。
这是我对 sidekiq 的监控配置:
有没有办法配置 monit 以允许 pid 文件更改并仅确保 sidekiq 实例正在运行?
monitoring - 如何(或应该)监控或确保监控软件的运行?
我正在编写一个系统/服务监控软件,我的主要目标是使其尽可能安全。
现在,我有一个启动主进程的二进制脚本,它派生出执行实际监控和报告的子进程。主人只在孩子失败时管理孩子的重启,以及孩子之间的一些沟通。
鉴于这种故障安全级别,是否建议为主进程添加另一层监控?
假设我的代码是高级语言(python 等),将我的软件包装在一个监视它的 initscript 或 shellscript 中是否有意义,或者它是否是多余的?
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 个周期内重新启动,则超时
状态似乎是“未监控”。似乎是什么问题?
monitoring - 微小的 RSS 监视器
帮助!我想在我的 Debian 服务器上设置一个监控服务,它将监控并启动 wen 需要更新程序来更新微型 rss。问题是它是一个 php 前台进程,通常在非 root 用户的屏幕上运行。
我可以将其运行为:
或者更好地把它放在后台,以便从不同的帐户运行它
我已经安装了 monit,但似乎无法找到一种方法来检测 t 是否正在运行。我宁愿继续使用 monit,但没有必要。
任何想法,将不胜感激。