Nethence Newdoc Olddoc Lab Your IP BBDock  

Setting up Monit

Introduction

Monit provides autonomous monitoring (cli and web) on the system as well as an agent for M/Monit.

Installation

On Unices, either use the system’s package manager,

#Debian/Ubuntu
apt -y install monit

#EPEL
yum -y install monit

or use the third-parity binaries directly.

On Windows, try out monit-windows-agent and pls send me some feedback about it (pbraun@).

Configuration

Now setup Monit,

#Debian/Ubuntu
conf=/etc/monit/monitrc
mv $conf $conf.dist
sed '/^#/d; /^$/d' $conf.dist > $conf

#EPEL6
conf=/etc/monit.conf
mv $conf $conf.dist
sed '/^#/d; /^$/d' $conf.dist > $conf

#EPEL7
conf=/etc/monitrc
mv $conf $conf.dist
sed '/^#/d; /^$/d' $conf.dist > $conf

Eventually check that the monit host resolves, responds, and that the mmonit service is reachable, preferably on 443,

mmonit=mmonit.example.local
ping -c1 $mmonit
nmap -p 80,443 $mmonit

If you’re using Monit as agent against M/Monit,

cat >> $conf <<-EOF

set mmonit https://monit:PASSWORD@$mmonit/collector

EOF

For network monitoring, identify what network interface you are using,

    netifs=`ifconfig | grep ^[[:alpha:]] | egrep -v ^lo | awk '{print $1}'`
    echo $conf
echo $netifs

for netif in $netifs; do cat >> $conf <<-EOF

check network $netif with interface $netif
        if failed link then alert
        if changed link then alert
        if saturation > 90% then alert
        if total upload > 1 GB in last hour then alert
EOF
done; unset netif

unset netifs

Check how many CPUs you have,

grep ^proc /proc/cpuinfo | wc -l

Check your short hostname and FQDN,

#hostname
#hostname --long

The default CPU info that shows up is wait. I like that so I do not tweak that.

#cat >> $conf <<-EOF
#
#check system HOSTNAME
#       if loadavg (15min) > 4 then alert
#       if memory usage > 90% then alert
#       if swap usage > 5% then alert
#       if cpu usage (wait) > 10% then alert
#       group system_resources
#EOF

Eventually check that your smtp relay responds and that your email setup is in place.

hostmaster=hostmaster@example.com
smarthost=smarthost.example.local
nmap -p 25 $smarthost
telnet $smarthost 25
quit

Mail alerts setup,

set mailserver $smarthost, localhost
set alert $hostmaster

set mail-format {
    from: $hostmaster
    subject: Monit alert -- $EVENT $SERVICE
    message: $EVENT Service $SERVICE

    Date:        $DATE
    Action:      $ACTION
    Host:        $HOST
    Description: $DESCRIPTION

    -- 
    Monit http://$HOST:2812/
    M/Monit https://$mmonit/
}

Workstation

Prepare some dummy key,

#apt install ssl-cert
#/var/lib/dpkg/info/ssl-cert.postinst
ls -lhF /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/ssl/private/ssl-cert-snakeoil.key
chmod 400 /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/ssl/private/ssl-cert-snakeoil.key

and add this to monitrc (eventuall enable ssl),

set httpd port 2812
        signature disable
        #ssl enable
        #pemfile /etc/ssl/certs/ssl-cert-snakeoil.pem
        allow localhost        # allow localhost to connect to the server and
        allow admin:monit      # require user 'admin' with password 'monit'

Monitoring Daemons

Setup additional services'monitoring e.g.,

check process mongod with pidfile /var/run/mongodb/mongod.pid
    if cpu > 60% for 2 cycles then alert
    #if totalmem > 1 GB for 5 cycles then restart
    if children > 250 then restart
    if loadavg(5min) greater than 10 for 8 cycles then alert
    group server

Ready to go

Start the daemon and enable it at boot time,

    #Ubuntu
    #already started & enabled while pkg installation
    systemctl restart monit

#RHEL6,7
service monit restart
chkconfig monit on

#binaries on Debian
/usr/local/monit/bin/monit stop all
/usr/local/monit/bin/monit start all
vi /etc/rc.local

echo -n starting monit...
/usr/local/monit/bin/monit start all && echo done

You should now see the added host within the M/Monit interface.

References


Home | GitHub | Donate | Contact