0

在 Debian 8 服务器上,我有5.9-1监控设置和监控多个服务。我打算在上面监控1.26-2,我可以简单地用下面的配置来做

check process atop with pidfile /var/run/atop.pid
    group system
    group atop
    start program = "/usr/sbin/service atop start"
    stop program  = "/usr/sbin/service atop stop"

这工作正常。但是,我有时注意到以下条目/var/log/messages

traps: atop[8810] trap divide error ip:40780a sp:7ffdf663cdc8 error:0 in atop[400000+26000]

发生这种情况时,顶部不会创建每日日志文件/var/log/atop/atop-$( date '+%Y%m%d' ),因此尝试运行atop -r 20160127 -b 15:00会导致输出

/var/log/atop/atop_20160127 - open raw file: No such file or directory

我一直在尝试让monit检查日志文件的存在,如果丢失则通过将上述配置更改为重新启动

date=$( date '+%Y%m%d' )
check process atop with pidfile /var/run/atop.pid
    group atop
    start program = "/usr/sbin/service atop start"
    stop program  = "/usr/sbin/service atop stop"
    depend on atop_log

check file atop_log with path /var/log/atop/atop-$date
    group atop

它不会抱怨它不会扩展变量。

如果可能/如何做到这一点,任何人都有任何想法?

4

1 回答 1

1

我找到的解决方案是使用 bash 脚本来检查文件是否存在,并且 bash 脚本由 monit 调用。

使用以下内容创建文件/etc/monit/scripts/atop-log-check.sh

#!/bin/bash
if [ -f "/var/log/atop/atop_$( date '+%Y%m%d' )" ]; then
    exit 0
else
    exit 1
fi

chmod 到 500 然后在 monit 配置上更新为:

check process atop with pidfile /var/run/atop.pid
    group atop
    start program = "/usr/sbin/service atop start"
    stop program  = "/usr/sbin/service atop stop"

check file atop-log-check path /etc/monit/scripts/atop-log-check.sh
    group atop
    if changed checksum then alert
    if failed permission 500 then alert
    if failed uid root then alert

check program atop_log path /etc/monit/scripts/atop-log-check.sh
    group atop
    if status != 0 then restart
于 2016-01-28T16:05:15.280 回答