Melakukan pemantauan atau monitoring secara aktif terhadap server yg kita pegang adalah hal yg sangat penting. Apalagi server tsb adalah server productional yg mempunyai fungsi sangat kritikal. Kalo cuma server buat development, staging atau cuma untuk main-main sih ga usah dimonitoring ga masalah ya. Tapi beda halnya jika itu server yg fungsinya sangat utama misal sebagai webhosting, database server, nameserver, dll.
Fungsi dari monitoring adalah jika terjadi disaster pada server, maka anda sebagai sysadmin lah yg akan tau pertama kali dalam tempo yg sesingkatnya setelah insiden terjadi. Semakin cepat diketahui maka troubleshootingnya akan cepat dan meminimalisir downtime yg bisa merugikan dan menurunkan reputasi (juga omset). Ada banyak sekali tools dan jasa monitoring baik gratis maupun berbayar yg bisa digunakan dengan fitur dan keunggulan masing-masing. Namun secara garis besar fungsinya sama yaitu: segera memberi tahu anda saat server yg dimonitor terdeteksi bermasalah.
Di postingan ini saya akan berikan sebuah contoh sederhana membuat monitoring yg bisa kirim notifikasi secara realtime di hape (Android/iOS) kita. Bahan-bahan yg saya gunakan yaitu:
- Sebuah VPS low-end tapi uptimenya pastikan ga kurang dari 99% alias nyaris pernah down/error
- Aplikasi Pushover (perlu beli license)
- Sebuah bash script yg pada dasarnya hanya memanfaatkan command ping
OK, langkah-langkahnya begini:
- Register ke pushover.net dan bikin user key untuk dipake di bash script yg akan digunakan nanti
- Berpasangan dengan user key, sekarang bikin tokennya (https://pushover.net/apps/build)
- Catatlah user key dan token yg sudah dibikin
- Selanjutnya login root ke ssh VPS yg akan digunakan sebagai monitoring
- Bikin file vim /usr/bin/hosts_monitoring
- Contoh bash script atau shell scriptnya macam gini:
#!/bin/bash PUSHOVER_TOKEN="a48rpn21du1xxxxxxxxxxxxxxxxep" USER_KEY="u9gvtxxxxxxxxxxxxxxp1dqukubni" NOTIFICATION_SOUND="pianobar" # Replace with the desired sound name LOG_FILE="/var/log/check_hosts.log" while IFS= read -r host; do if ping -c 3 "$host" >/dev/null; then echo "$(date +'%Y-%m-%d %H:%M:%S'): $host is reachable." >> "$LOG_FILE" else echo "$(date +'%Y-%m-%d %H:%M:%S'): $host is not reachable. Sending Pushover notification." >> "$LOG_FILE" curl -s \ --form-string "token=$PUSHOVER_TOKEN" \ --form-string "user=$USER_KEY" \ --form-string "title=ALERT! Host Unreachable" \ --form-string "message=Host $host is not reachable." \ --form-string "sound=$NOTIFICATION_SOUND" \ https://api.pushover.net/1/messages.json fi done < /root/hosts.txt
- Save filenya. Kemudian jadikan executable lewat perintah chmod +x
- Di bagian akhir script perhatikan ada file hosts.txt yg berlokasi di /root, kalian bisa bikin pake nama terserah dan simpen di direktori mana aja tinggal sesuaikan dengan scriptnya. File hosts.txt ini nanti diisi ip atau bisa juga nama domain yg hendak dimonitoring, misalnya saya punya 12 server yg mau saya monitor statusnya. vim /root/hosts.txt
- Isikan 1 ip/domain per baris, contoh:
28.204.115.134 123.89.15.212 73.61.49.194 229.107.87.90 107.19.163.40 101.193.211.20 210.162.251.150 45.213.143.72 198.46.131.188 200.11.185.59 example1.com example2.com
- Jalankan script melalui cron setiap satu menit dan jangan lupa restart cron setelahnya. Rumus supaya autorun per menit begini:
* * * * * root /usr/bin/hosts_monitoring
- Pastikan di hape udah terinstal aplikasi pushover
- Selesai. List ip dan domain yg udah disave itu akan secara aktif dicek tiap menit melalui command ping. Apabila dalam 3 kali ping tidak ada reply (yg mengindikasikan dia offline) maka notifikasi akan terkirim.
Demikianlah cara gampang bikin monitoring yg akan memberi tahu secara realtime atau almost realtime saat ada ip yg down/offline di file hosts.txt yg sudah dibikin sebelumnya. Seperti ini hasilnya jika salah satu ip terdeteksi down alias offline.
OK, selamat mencoba. Semoga bermanfaat.