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:
[code]urpmi monit[/code]
2. Atur konfigurasi monit
Atur konfigurasi monit yang berada di file
/etc/monitrc. Silakan edit dengan vim:
[code]vim /etc/monitrc[/code]
ubah baris /etc/monit.d menjadi /etc/monit.d/* sehingga monit akan membaca pula konfigurasi-konfigurasi yang ada di folder /etc/monit.d/:
[code]
[...]
include /etc/monit.d/*
[...]
[/code]
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:
[code]
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
[/code]
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.
[code]
mkdir /var/www/emka.web.id/public_html/monit/
echo "test-mas" > /var/www/emka.web.id/public_html/monit/token
[/code]
4. buat sertifikasi https
buat file pem cert untuk monit, di /var/certs/monit.pem.
[code]
mkdir /var/certs
cd /var/certs
vim /var/certs/monit.cnf
[/code]
isi dengan contoh sebagai berikut:
[code]
# 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
[/code]
buat sertifikasi ssl dengan openssl:
[code]
openssl req -new -x509 -days 365 -nodes -config ./monit.cnf -out /var/certs/monit.pem -keyout /var/certs/monit.pem
[code]openssl gendh 512 >> /var/certs/monit.pem[/code]
[code]openssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pem[/code]
[code]chmod 700 /var/certs/monit.pem
[/code]
5. Jalankan monit
untuk menjalankan monit, silakan jalankan perintah:
[code]/etc/init.d/monit start[/code]
6. Cek dan login ke monit dengan alamat https://cms.emka.web.id:2812/ dengan user admin password emka.web.id. (sesuaikan dengan konfigurasi anda)
Screenshoot
Screen utama untuk Apache

selamat mencoba :beer: