问题 1
我想用 monit 版本 5.25.1 监控一个无头运行的 LibreOffice-Process。
这是我对这种方法的监控配置:
cat /etc/monit/conf.d/libreoffice
check program lo-check-8101 with path "/bin/bash /opt/libreoffice/chkloproc.sh TestLOPort8101 8101"
with timeout 10 seconds
if status != 0 then exec "/bin/bash /opt/libreoffice/loproc_is_down.sh"
if status = 0 then exec "/bin/bash /opt/libreoffice/loproc_is_up.sh"
此 LibreOffice 实例正在侦听端口 8101。
如果一切正常,检查脚本将返回 0,如果该 LibreOffice 实例出现错误,则返回 101。我正在通过发送 HTML、请求 TEXT 并检查响应来测试这个正在运行的 LibreOffice 进程的文本转换。
动作脚本 (loproc_is_down.sh / loproc_is_up.sh) 正在添加/删除一个 iptables 规则,以向正在运行的 haproxy 发出状态,该 haproxy 正在端口检查 LibreOffice 实例 / 进程......如果这听起来有点复杂,对不起,但这不是我想在这里谈论的问题。
问题是,我不明白为什么 monit 会记录以下条目:
重启后监控日志
[CET Oct 29 16:58:18] info : Starting Monit 5.25.1 daemon with http interface at [localhost]:2812
[CET Oct 29 16:58:18] info : Monit start delay set to 10s
[CET Oct 29 16:58:28] info : 'host1' Monit 5.25.1 started
[CET Oct 29 16:58:58] error : 'lo-check-8101' status failed (0) -- no output
[CET Oct 29 16:58:58] info : 'lo-check-8101' exec: '/bin/bash /opt/libreoffice/loproc_is_up.sh'
[CET Oct 29 16:59:28] error : 'lo-check-8101' status failed (0) -- no output
...以及“监控状态”中的以下状态屏幕:
monit status
Monit 5.25.1 uptime: 0m
Program 'lo-check-8101'
status Status failed
monitoring status Monitored
monitoring mode active
on reboot start
last exit value 0
last output -
data collected Tue, 29 Oct 2019 16:58:58
System 'host1'
status OK
monitoring status Monitored
monitoring mode active
on reboot start
load average [0.03] [0.02] [0.01]
cpu 0.6%us 0.6%sy 0.0%wa
memory usage 543.9 MB [7.8%]
swap usage 0 B [0.0%]
uptime 20d 1h 11m
boot time Wed, 09 Oct 2019 16:47:51
data collected Tue, 29 Oct 2019 16:58:58
在我看来,检查脚本返回退出值 0 但状态被报告/解释为“状态失败”。
我不明白,为什么 monit 在其日志文件中报告“错误:... status failed (0)”。
除了解释给定检查脚本程序的最后一个退出代码之外,状态还意味着什么?
问题 2
还有另一个来自monit的反应,我无法理解,也许有人可以向我解释一下?
当我试图通过停止它来伪造一个损坏的 LibreOffice 进程时,monit 确实在一个周期后识别出这一点,并且正在启动想要/配置的操作脚本“loproc_is_down.sh”并将最后一个退出代码正确报告为 101,但使用日志-线
“信息:状态成功(101)”
第一个循环,然后再用
“错误:状态失败(101)”
伪造失败的监控日志
[CET Oct 29 17:14:28] info : 'lo-check-8101' status succeeded (101) -- Error: Existing listener not found. Unable start listener by parameters. Aborting.
[CET Oct 29 17:14:28] error : 'lo-check-8101' status failed (101) -- Error: Existing listener not found. Unable start listener by parameters. Aborting.
[CET Oct 29 17:14:28] info : 'lo-check-8101' exec: '/bin/bash /opt/libreoffice/loproc_is_down.sh'
[CET Oct 29 17:14:58] error : 'lo-check-8101' status failed (101) -- Error: Existing listener not found. Unable start listener by parameters. Aborting.
[CET Oct 29 17:15:28] error : 'lo-check-8101' status failed (101) -- Error: Existing listener not found. Unable start listener by parameters. Aborting.
相反的是再次启动 LibreOffice 进程时:
服务再次运行时监控日志
[CET Oct 29 17:15:58] error : 'lo-check-8101' status failed (0) -- no output
[CET Oct 29 17:15:58] info : 'lo-check-8101' exec: '/bin/bash /opt/libreoffice/loproc_is_up.sh'
[CET Oct 29 17:15:58] info : 'lo-check-8101' status succeeded (0) -- no output
[CET Oct 29 17:16:28] error : 'lo-check-8101' status failed (0) -- no output
[CET Oct 29 17:16:58] error : 'lo-check-8101' status failed (0) -- no output
看起来monit运行该检查脚本,它返回退出代码0并启动动作脚本“loproc_is_up.sh”并使用“状态成功(0)”报告它
...但在接下来的周期中再次记录“错误:状态失败(0)”。
我不理解monit概念/文档中“状态”的含义......有人可以向我解释吗?
感谢您阅读这篇长文,希望能帮助我回答。