Friday, September 16, 2016

Memantau aplikasi Java dengan Monit

Latar Belakang


Pertama kali mendengar Monit sekitar setahun yang lalu ketika pertama kali menghadapi aplikasi yang sering crash karena tidak mampu menerima lonjakan request secara tiba-tiba.

Ketika itu senior kami mengenalkan Monit, saat itu kami menggunakan Monit untuk selalu memastikan bahwa aplikasi kami selalu berjalan, dan apabila crash maka Monit akan menjalankannya kembali.

Microservice


Sekarang kami sedang membangun aplikasi berbasis microservice, aplikasi kami memiliki beberapa modul yg memiliki fungsi berbeda. Untuk membantu memonitoring modul-modul tersebut kami mencoba untuk menggunakan Monit.

Sebelum benar-benar menggunakan Monit kami google-google dulu, dan ternyata Monit memiliki fasilitas monitoring, start dan stop dari halaman web. Yeeayyy :)

Instalasi pada ubuntu


Kebetulan kami menggunakan OS ubuntu 14.04 dan 16.04, gunakan command seperti dibawah ini untuk instalasi Monit:
sudo apt-get install monit

Setelah selesai menginstall Monit otomatis akan dijalankan, edit file /etc/monit/monitrc :
 set httpd port 2812 and
     allow 0.0.0.0/0.0.0.0  # allow all host to connect to the server and 
     allow admin:monit      # require user 'admin' with password 'monit' 

Kemudian restart Monit :
  • Ubuntu 16.04
  • sudo systemctl restart monit.services
  • Ubuntu 14.04
  • sudo service monit restart
Setelah restart, bisa cek halaman webnya ke host tersebut dengan port 2182, masukkan username & password bila diminta.

Aplikasi Java dan Monit


Untuk dapat memonitor aplikasi Java dengan Monit, diperlukan shell script untuk start dan stop yang isinya kira-kira sebagai berikut :
  • Start App
  • echo $$ > /home/ubuntu/app/app.pid;
    exec /usr/bin/java -jar app.jar
  • Stop App
  • kill $(cat /home/ubuntu/app/app.pid);
    rm /home/ubuntu/app/app.pid

Kemudian buat file app pada directory /etc/monit/conf.d, yang isinya kira-kira sebagai berikut :
check process app with pidfile /home/ubuntu/app/app.pid
start program = "/home/ubuntu/app/start-app.sh"
stop program = "/home/ubuntu/app/stop-app.sh"
if cpu > 20% for 5 cycles then alert
if totalmem > 256 MB for 5 cycles then alert
if children > 2 then alert
Lalu restart Monit, dan buka web monitoringnya, dan tunggu beberapa saat Monit akan mengecek apakah aplikasi tersebut sedang berhenti atau tidak, bila berhenti maka Monit akan menjalankannya.

Untuk memberhentikan atau menjalankan aplikasi tersebut kita bisa melakukannya melalui web Monit. Sekian dan semoga bermanfaat. :)

No comments:

Post a Comment