Pada tutorial kali ini kita akan memonitor kondisi server dengan monit. Monit adalah software monitoring server berbasis linux dengan kemampuan akses monitoring dari command line. Monit sendiri merupakan alternatif dari munin, software monitoring yang menghasilkan gambar report dari kondisi server.

Tutorial kali ini akan menggunakan Mandriva Linux 2011. Silakan sesuaikan dengan masing-masing distro linux anda.

1. Instalasi monit

Untuk menginstall monit, silakan jalankan perintah berikut sebagai root:

urpmi monit

2. Atur konfigurasi monit

Atur konfigurasi monit yang berada di file /etc/monitrc. Silakan edit dengan vim:

vim /etc/monitrc

ubah baris /etc/monit.d menjadi /etc/monit.d/* sehingga monit akan membaca pula konfigurasi-konfigurasi yang ada di folder /etc/monit.d/:

[...]
include /etc/monit.d/*
[...]

buat dan edit file /etc/monit.d/monitrc. sebagai contoh, pada tutorial kali ini kita akan memonitor proftpd, sshd, mysql, dan postfix. Port yang akan digunakan oleh monit diatur pada port 2812 dengan interface https, dengan user admin dan password emka.web.id. Kita juga akan atur supaya monit secara reguler mengirimkan email peringatan ke email root@localhost.

contoh file konfigurasi seperti skenario diatas:

daemon  60
set logfile syslog facility log_daemon
set mailserver localhost
set mail-format { from: monit@emka.web.id }
set alert root@localhost
set httpd port 2812 and
     SSL ENABLE
     PEMFILE  /var/certs/monit.pem
     allow admin:emka.web.id

check process proftpd with pidfile /var/run/proftpd.pid
   start program = "/etc/init.d/proftpd start"
   stop program  = "/etc/init.d/proftpd stop"
   if failed port 21 protocol ftp then restart
   if 5 restarts within 5 cycles then timeout

check process sshd with pidfile /var/run/sshd.pid
   start program  "/etc/init.d/sshd start"
   stop program  "/etc/init.d/sshd stop"
   if failed port 22 protocol ssh then restart
   if 5 restarts within 5 cycles then timeout

check process mysql with pidfile /var/run/mysqld/mysqld.pid
   group database
   start program = "/etc/init.d/mysqld start"
   stop program = "/etc/init.d/mysqld stop"
   if failed host 127.0.0.1 port 3306 then restart
   if 5 restarts within 5 cycles then timeout

check process apache with pidfile /var/run/httpd.pid
   group www
   start program = "/etc/init.d/httpd start"
   stop program  = "/etc/init.d/httpd stop"
   if failed host emka.web.id port 80 protocol http
      and request "/monit/token" then restart
   if cpu is greater than 60% for 2 cycles then alert
   if cpu > 80% for 5 cycles then restart
   if totalmem > 500 MB for 5 cycles then restart
   if children > 250 then restart
   if loadavg(5min) greater than 10 for 8 cycles then stop
   if 3 restarts within 5 cycles then timeout

check process postfix with pidfile /var/spool/postfix/pid/master.pid
   group mail
   start program = "/etc/init.d/postfix start"
   stop  program = "/etc/init.d/postfix stop"
   if failed port 25 protocol smtp then restart
   if 5 restarts within 5 cycles then timeout

silakan baca dokumentasi monit untuk lebih jelasnya di http://mmonit.com/monit/documentation/monit.html.

3. buat file token monit

file token monit yang kita referensikan pada konfigurasi diatas ada di /var/www/emka.web.id/public_html/monit/token. buat file tersebut dan isi dengan random string.

mkdir /var/www/emka.web.id/public_html/monit/
echo "test-mas" > /var/www/emka.web.id/public_html/monit/token

4. buat sertifikasi https

buat file pem cert untuk monit, di /var/certs/monit.pem.

mkdir /var/certs
cd /var/certs
vim /var/certs/monit.cnf

isi dengan contoh sebagai berikut:

# create RSA certs - Server

RANDFILE = ./openssl.rnd

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type

[ req_dn ]
countryName = Country Name (2 letter code)
countryName_default = ID

stateOrProvinceName             = State or Province Name (full name)
stateOrProvinceName_default     = Jawa Tengah

localityName                    = Locality Name (eg, city)
localityName_default            = Semarang

organizationName                = Organization Name (eg, company)
organizationName_default        = Intipadi Sejahtera,inc.

organizationalUnitName          = Organizational Unit Name (eg, section)
organizationalUnitName_default  = Tim IT

commonName                      = Common Name (FQDN of your server)
commonName_default              = server.emka.web.id

emailAddress                    = Email Address
emailAddress_default            = webmaster@emka.web.id

[ cert_type ]
nsCertType = server

buat sertifikasi ssl dengan openssl:

openssl req -new -x509 -days 365 -nodes -config ./monit.cnf -out /var/certs/monit.pem -keyout /var/certs/monit.pem
openssl gendh 512 >> /var/certs/monit.pem
openssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pem
chmod 700 /var/certs/monit.pem

5. Jalankan monit

untuk menjalankan monit, silakan jalankan perintah:

/etc/init.d/monit start

6. Cek dan login ke monit dengan alamat https://emka.web.id:2812/ dengan user admin password emka.web.id. (sesuaikan dengan konfigurasi anda)

Screenshoot

Screen utama untuk Apache

selamat mencoba :beer: