Monitoring Server dengan Monit
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 [email protected]
contoh file konfigurasi seperti skenario diatas:
daemon 60 set logfile syslog facility log_daemon set mailserver localhost set mail-format { from: [email protected] } set alert [email protected] 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 = [email protected] [ 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
selamat mencoba :beer: