I have to deploy monit on Debian, RHEL4, SuSE SLES9. Unfortunately, each is
different enough that a single .monitrc won't work. Specifically, as an
example, 'sshd' and 'ntpd' init.d scripts have different names across all
three distros. (/etc/init.d/{x,}ntp{,d} /etc/init.d/ssh{,d} ...)
It would be nice if monitrc had some simplistic preprocessor handling, like:
#ifdef RHEL4
include RHEL4/sshd
#else ifdef DEBIAN
include Debian/sshd
#endif
or if it supported variable expansion:
include ${DISTRO}/sshd
Additionally, for a logfile scanner, i look for "Out of Memory: Kill
process" messages, but the default syslog writes these in different places
on different distros, so my 'logscan' monitrc include snippet would benefit
from variable expansion or preprocessor conditionals, etc.
-------------------
#ifdef RHEL4
syslogfile=/var/log/messages
#else ifdef DEBIAN
syslogfile=/var/log/syslog
#endif
check file SYSLOGFILE with path ${syslogfile}
-------------------
I could create a bunch of start/stop front-end scripts that did all the
conditional determination/processing themselves in /etc/opt/monit/init.d or
something, but that's also non-optimal.
Running the .monitrc through an m4 or cpp first-run might be workable, but
again, isn't as desireable as having built-in support in Monit to do this.
I would prefer to have to manage a SINGLE .monitrc and tree full of includes
than to have to track modifications across distro-specific .monitrcs.
Does anyone have any good ideas on this issue or anecdotes on how they
manage this problem?
thanks,
--stephen