如何禁用 Monit 实例启动/停止警报?

Win*_*eld 11 monit

每次 monit 守护程序停止或启动时,Monit 都会发送警报。这是令人讨厌且没有用的信息。

根据文档,我设置:

set alert user@mycompany.com but not on { instance }
Run Code Online (Sandbox Code Playgroud)

...应该向该电子邮件发送警报,除非它们属于定义为开始/停止的“实例”类别。

但是,我仍然收到警报。这超级烦人。显然,我一定是遗漏了什么。

我们正在运行 Monit 5.2.4

小智 10

根据文档,Monit 可以生成许多​​警报:

Event:     | Failure state:              | Success state:
---------------------------------------------------------------------
action     | "Action done"               | "Action done"
checksum   | "Checksum failed"           | "Checksum succeeded"
bytein     | "Download bytes exceeded"   | "Download bytes ok"
byteout    | "Upload bytes exceeded"     | "Upload bytes ok"
connection | "Connection failed"         | "Connection succeeded"
content    | "Content failed",           | "Content succeeded"
data       | "Data access error"         | "Data access succeeded"
exec       | "Execution failed"          | "Execution succeeded"
fsflags    | "Filesystem flags failed"   | "Filesystem flags succeeded"
gid        | "GID failed"                | "GID succeeded"
icmp       | "Ping failed"               | "Ping succeeded"
instance   | "Monit instance changed"    | "Monit instance changed not"
invalid    | "Invalid type"              | "Type succeeded"
link       | "Link down"                 | "Link up"
nonexist   | "Does not exist"            | "Exists"
packetin   | "Download packets exceeded" | "Download packets ok"
packetout  | "Upload packets exceeded"   | "Upload packets ok"
permission | "Permission failed"         | "Permission succeeded"
pid        | "PID failed"                | "PID succeeded"
ppid       | "PPID failed"               | "PPID succeeded"
resource   | "Resource limit matched"    | "Resource limit succeeded"
saturation | "Saturation exceeded"       | "Saturation ok"
size       | "Size failed"               | "Size succeeded"
speed      | "Speed failed"              | "Speed ok"
status     | "Status failed"             | "Status succeeded"
timeout    | "Timeout"                   | "Timeout recovery"
timestamp  | "Timestamp failed"          | "Timestamp succeeded"
uid        | "UID failed"                | "UID succeeded"
uptime     | "Uptime failed"             | "Uptime succeeded"
Run Code Online (Sandbox Code Playgroud)

我们能够通过设置(地址更改以保护无辜者)来解决这个问题:

SET ALERT important-messages@projectlocker.com ON { invalid, nonexist, timeout, resource, size, timestamp}
SET ALERT less-important-messages@projectlocker.com ON {action, permission, pid, ppid, instance, status}
Run Code Online (Sandbox Code Playgroud)

这成功地将消息路由到我们关心的地址。您可以全局或本地设置它们,但我们的警报只是全局的。

位于http://mmonit.com/monit/documentation/monit.html下的 SERVICE TESTS 下的子标题 与上述类型非常一致。

对于服务器的每个预定进程或功能,您应该能够用简单的英语提出对您重要的内容,并将这种愿望与服务测试中提到的测试之一相匹配。例如,如果我正在运行 Apache,我知道我关心的是:

  • PID文件中的PID还在运行吗?(不存在)
  • PID 是否在我不知情的情况下发生了变化?(pid)
  • 服务是否及时响应重启?(暂停)

对于轮询的自定义守护程序,我可能会关心日志文件是否定期更新状态消息(时间戳)。


The*_*nix 7

我正在使用 Monit 版本 5.2.5 并使用以下已停止通过 monit 警报

set alert example@gmail.com not {instance}


Win*_*eld 1

我无法在 monit 中修复此问题,并且必须在 monit 电子邮件上构建一个处理层,以便在发送之前通过拦截这些 monit 实例通知来过滤掉它们。

我们使用寻呼机职责来累积和发送来自 monit 和其他几个系统的通知,因此在本例中,我使用基于主题的正则表达式在 Monit 服务上添加了一条过滤规则,以过滤掉 monit 实例通知电子邮件。