有没有办法用monit检查脚本的结果?例如,脚本返回 0 表示正常,但 1 表示失败。这个想法是直接从本地机器上的 monit 调用脚本并解释结果并发送电子邮件。
例如,脚本可以进行一些硬件检查。
我的解决方法是使用 cron 调用脚本并将结果写入文件并使用 monit 检查文件。
我怎样才能让 monit 继续每隔一段时间提醒我,直到问题得到解决?这是一个示例配置:
使用路径 /dev/sda1 检查文件系统数据文件 如果空间使用率在 15 个周期内连续 5 次 > 80%,则发出警报
在这里,我会收到一次警报,然后不会再收到。我希望 monit 在问题解决之前不要关闭。
我的 monit 脚本用于检测进程中断并在规则为时通知我:
IF DOES NOT EXIST THEN ALERT
Run Code Online (Sandbox Code Playgroud)
我的 monit 脚本用于检测中断并在规则为时自动修复它:
IF DOES NOT EXIST THEN START
Run Code Online (Sandbox Code Playgroud)
但是,我想要它做的是通知我并修复它。
连续两条规则似乎使它忽略了除最后一条之外的所有规则:
IF DOES NOT EXIST THEN ALERT
IF DOES NOT EXIST THEN START
# No alert given.
Run Code Online (Sandbox Code Playgroud)
我可以使用一个自定义脚本来做这两个,并且
IF DOES NOT EXIST THEN EXEC "my_handwritten_script"
Run Code Online (Sandbox Code Playgroud)
但我试图从一堆手写脚本转向干净的 Monit 配置。
我可以将 Monit 配置为采取两项行动吗?
[编辑:我回答了我问题的前半部分,所以我将编辑这个以解决后半部分。]
/etc/monit/monitrc 看起来像这样:
set mailserver
smtp.server.net
port 587
username "USERNAME"
password "PASSWORD"
using tlsv1 with timeout 30 seconds
using hostname "server.fqdn.com",
smtp.server2.net
port 587
username "USERNAME"
password "PASSWORD"
using tlsv1 with timeout 30 seconds
using hostname "server.fqdn.com"
Run Code Online (Sandbox Code Playgroud)
sudo service monit syntax 吐出这个:
/etc/monit/monitrc:57: Error: syntax error 'smtp.server2.com'
Run Code Online (Sandbox Code Playgroud)
起初我有错误的使用/使用这样的语法:
using tlsv1
using hostname "server.fqdn.com"
with timeout 30 seconds
Run Code Online (Sandbox Code Playgroud) 我已经使用 root 用户为许多应用程序安装了 monit。其中一个应用程序是使用非 root 用户帐户启动的。
不幸的是,当我更新我的应用程序时,我还需要重新启动它。我的更新过程使用非 root 用户(我使用 capistrano 更新我的应用程序)
由于 Monit 正在检查此应用程序,并且更新过程是由非 root 用户完成的。为了重新启动应用程序,非 root 用户杀死应用程序并 monit 重新启动它。
我想允许非 root 用户只重启这个特定的应用程序。此用户不应大声运行其他与 monit 相关的操作。
有没有办法允许用户运行特定的 monit 操作,即使他不是 monitrc 的所有者?
我是 Linux 新手,我在 Digital Ocean 上安装了 Ubuntu 12.04。
我安装了 Monit 并让它通过电子邮件警报成功监控 MySQL。
我也想监控 Apache2,但找不到任何httpd.pid需要放入 monitrc 文件的文件。
我可以使用以下命令启动 Apache2: /etc/init.d/apache2 start
我可以通过以下方式停止 Apache2: /etc/init.d/apache2 stop
我可以使用以下命令重新启动 Spache2: /etc/init.d/apache2 restart
在没有 httpd.pid 文件的情况下,还有什么其他方法可以在 Monit 中监视 Apache2?
我正在尝试使用monit来查找运行时间过长的surefire进程并杀死它们。
机器正在运行并行构建,因此可以同时运行多个万无一失的进程,但这些进程没有 PID 文件。
我的 monit 配置如下所示:
check process surefire matching "surefire/surefirebooter"
if uptime > 4 hours then alert
if uptime > 4 hours then stop
Run Code Online (Sandbox Code Playgroud)
警报已发送,但停止不起作用。
我无法使用killall,因为该进程由 java 运行,并且还有其他几个 java 进程正在运行。
我所需要的只是检测该进程的正确 PID,以便我可以杀死正确的进程。
我从 Ubuntu 存储库安装了 Monit 5.6,以提醒我 VPS 上异常高的内存和 CPU 使用率。事实证明,75% 的内存使用率对于我的设置来说很常见,所以我更改了在 file 中设置限制的行/etc/monit/conf.d/system.conf:
check system localhost
...
if memory usage > 90% then alert
Run Code Online (Sandbox Code Playgroud)
但现在它会在 75% 阈值和 90% 时提醒我。我搜索了其他地方可以设置它:grep 75% -r /etc/monit/,但没有匹配。Monit 在默认设置中是否还有其他地方存储其配置文件?还是 75% 的限制是以某种方式硬编码在其中的?我怎样才能禁用它?
UPD:我尝试在更改后重新加载和重新启动 monit(虽然没有尝试重新启动服务器)。我的 Monit 版本是:
# monit -V
This is Monit version 5.6
Copyright (C) 2001-2013 Tildeslash Ltd. All Rights Reserved.
Run Code Online (Sandbox Code Playgroud)
和配置文件:
check system localhost
if loadavg (1min) > 4 then alert
if loadavg (5min) > 3 then alert
if memory usage …Run Code Online (Sandbox Code Playgroud)