在配置 monit 守护进程每隔几个小时唤醒一次并开始监视设置为“未监视”状态的进程时,我发现 monit 配置存在问题。
问题:当 monit 更改为取消监控某个进程时,状态将更改为“未监控”,并且 monit 守护进程将永远不会尝试再次启动此进程的监控,即使 PID 文件已使用新的正确 PID 更新,并且对此进程的监控将永远停止,除非 monit 守护进程再次手动唤醒此进程,如下所示。
是否可以在每个进程的监控配置中以特定的超时间隔配置此唤醒守护进程,以避免最终导致进程永远处于“未监控”状态的陷阱?
例如,如果 3 个周期内重新启动 2 次,则超时 {X 小时} 监视器重新启动
谢谢。
我有以下 snmp 进程的配置。
# 检查 cmaeventd 进程 使用 pidfile /var/run/cmaeventd.pid 检查进程 cmaeventd 组 snmp-agent 启动程序 = “/opt/hp/hp-snmp-agents/storage/etc/cmaeventd start” 停止程序 = “/opt/hp/hp-snmp-agents/storage/etc/cmaeventd stop” 如果 3 个周期内重新启动 2 次,则超时
由于某种原因,如果 PID 文件未正确填充(我正在修复它),monit 将继续尝试使用空的 pid 文件重新启动该过程,并在 monit 日志中抛出以下错误,并最终在我们配置的 3 个周期内重新启动失败后“取消监控”。
日志消息:
[PST 2 月 3 日 11:43:23] 错误:monit:从文件“/var/run/cmaeventd.pid”读取 pid 时出错 [PST 2 月 3 日 11:43:24] 错误:monit:从文件“/var/run/cmaeventd.pid”读取 pid 时出错 [PST 2 月 3 日 11:45:25] 错误:“cmaeventd”服务在 2 个周期内重新启动了 2 次 - 取消监控
取消监控后该进程的监控状态:
进程‘cmaeventd’ 状态未被监控 监控状态 未监控 数据收集时间:2015 年 2 月 3 日星期二 12:10:25
手动唤醒该进程的守护进程,重新启动监控:
>monit 监控 cmaeventd 这将唤醒该进程的 monit 守护进程并再次开始读取 PID 文件,如果成功,则重新启动监控。 在唤醒该进程的 monit 守护进程之前: --------------------------------------------------- logbash-3.1# ls -l /var/run/cmaeventd.pid -rw-r--r-- 1 root root 1 2 月 3 日 00:00 /var/run/cmaeventd.pid logbash-3.1# cat /var/run/cmaeventd.pid logbash-3.1# ps -ef|grep cmaeventd |grep -v grep root 13066 1 0 00:00 ? 00:00:00 cmaeventd -p 15 -l /var/log/hp-snmp-agents/cma.log 升 logbash-3.1# echo "13066" > /var/run/cmaeventd.pid logbash-3.1# cat /var/run/cmaeventd.pid 13066 logbash-3.1# monit 监控 cmaeventd
来自日志:
[PST 2 月 3 日 12:20:54] 信息:根据用户请求监控服务“cmaeventd” [PST 2 月 3 日 12:20:54] 信息:monit 守护进程在 23515 处被唤醒 [PST 2 月 3 日 12:20:54] 信息:由用户定义的信号 1 唤醒 [PST 2 月 3 日 12:20:54] 信息:“cmaeventd”监控操作已完成
监控状态:
进程‘cmaeventd’ 状态初始化 监控状态初始化 数据收集时间:2015 年 2 月 3 日星期二 12:20:54
一段时间后变化如下:
进程‘cmaeventd’ 状态 运行 监控状态 已监控 进程号 13066 父进程 pid 1 正常运行时间 12小时21分钟 儿童 0 内存 千字节 2160 内存千字节总计 2160 内存百分比 0.0% 内存百分比总计 0.0% CPU 百分比 0.0% CPU 百分比总计 0.0% 数据收集时间:2015 年 2 月 3 日星期二 12:21:54
答案1
没有必要使用 Monit 监控单个 HP 代理。此外,它们都与包装器服务绑定在一起。hp-snmp-agents
单独重新启动其中一个代理会产生不良影响。
虽然可以调试 HP 代理日志,但我认为您的旧内核(看起来像 RHEL/CentOS 5.5)和旧的 HP 管理代理可能存在问题。您应该使用的 HP 代理位于SDR 存储库。
对于 ProLiant DL3xx G7 平台,您需要以下软件包的最新版本:
hp-snmp-agents, hpssa, hp-health, hp-smh-templates, hpsmh, hpssacli, hponcfg