Nagios dengan Notification via Telegram (Nagios Part 4 of 4)

Nagios sebagai aplikasi monitoring dapat mengirimkan notice berbagai media, umumnya dari default-nya kirim notice via email dan terakhir pernah saya tulis kirim notice via SMS. Kali ini pengiriman notice ke group Telegram dengan Bot API yang disediakan oleh Telegram.

Sebelum dilanjutkan ke langkah-langkah, ada baikkan mempelajari fungsi-fungsi BotFather dan API dari Telegram tersebut, bisa merajuk ke link https://core.telegram.org/bots dan https://core.telegram.org/bots/api


Membuat BOT.

Search BotFather dan click START untuk memulai membuat Bot Account

Setelah click START maka akan keluar beberapa command (perintah)….

Memulai membuat account, ikuti perintahnya dengan ketik terlebih dahulu /newboot atau click, kemudian masukkan nama Bot yang diinginkan. Perlu diketahui nama harus unik belum ada yang pakai dan selalu diakhirin kata “bot”

Nama bot: @OPiKdesignBot
User ID : 422223526
Token : AAFI5rToxuRetjTvOzF8yaMy9s4lFgdWJAw

Group Alert di Telegram.

Buat group apa saja nama group-nya kemudian bot account masukkan ke dalam group. Setelah group terbentuk ketik /start dan lakukan pengetesan kirim pesan di group tersebut.

Disini membuat Group dengan nama group “NetMon NagiosBot”…

Mencari GroupID.

Selain ada UserID yang berupa deretan angka maka ada GroupID, dimana GroupID ini penulisannya berbeda dengan UserID, di GroupID ada tanda strip/minus “-” di depan deretan angka.

Tester kirim pesan di group sebenarnya untuk memancing agar si Bot Account menyimpan history pesan yang diterimanya namun harus diingat bahwa sebelum mengirimkan pesan harus mengaktifkan Bot Account di Group tersebut dengan ketik /start.

Kemudian kita cari GroupID dengan mengunakan API di aplikasi web browser biasa, link https://api.telegram.org/bot[UserIDbot]:[TokenBot]/getUpdates maka kita check dengan Bot Account yang tadi kita buat dengan link API sebagai berikut https://api.telegram.org/bot422223526:AAFI5rToxuRetjTvOzF8yaMy9s4lFgdWJAw/getUpdates dan hasilnya seperti dibawah ini…

Tampak hasil dari query API sebagai berikut…

{"id":-242819075,"title":"NetMon NagiosBot","type":"group","all_members_are_administrators":true},"date":1503169563,"text":"/start","entities":[{"type":"bot_command","offset":0,"length":6}]}}]}

sudah bisa dilihat GroupID-nya adalah -242819075, GroupID ini yang akan dimasukkan kedalam config Contact Nagios.

Config pada Nagios

Tentukan contact-nya, dengan membuat contact baru selain contact nagiosadmin dan masukkan GroupID-nya, edit file /etc/nagios/objects/contacts.cfg

define contact {
       contact_name telegramgroup
       use generic-contact
       alias Telegram Group
       _telegroup -242819075
}

Masih di file config yang sama, contact telegramgroup masukkan ke group contactgroup selain nagiosadmin…

define contactgroup{
       contactgroup_name admins
       alias Nagios Administrators
       members nagiosadmin,telegramgroup
}

Selanjutnya config pada file /etc/nagios/objects/commands.cfg, buat command untuk kirim pesan Telegram di GroupID dengan menambahkan baris… Jangan lupa sesuaikan UserID dan Token dari Bot Account yang dibuat.

define command {
  command_name     notify-host-by-telegram
  command_line     /usr/bin/sudo /usr/bin/printf "%b" | /usr/bin/wget "https://api.telegram.org/bot422223526:AAFI5rToxuRetjTvOzF8yaMy9s4lFgdWJAw/sendMessage?chat_id=$_CONTACTTELEGROUP$&text=Notification Type: $NOTIFICATIONTYPE$  Host: $HOSTNAME$  State: $HOSTSTATE$  Address: $HOSTADDRESS$  Info: $HOSTOUTPUT$  Date/Time: $LONGDATETIME$" && /bin/rm -rf sendMessage*
}

define command {
  command_name     notify-service-by-telegram
  command_line     /usr/bin/sudo /usr/bin/printf "%b" | /usr/bin/wget "https://api.telegram.org/bot422223526:AAFI5rToxuRetjTvOzF8yaMy9s4lFgdWJAw/sendMessage?chat_id=$_CONTACTTELEGROUP$text=Notification Type: $NOTIFICATIONTYPE$  Service: $SERVICEDESC$  Host: $HOSTALIAS$  Address: $HOSTADDRESS$  State: $SERVICESTATE$  Date/Time: $LONGDATETIME$  Additional Info: $SERVICEOUTPUT$" && /bin/rm -rf sendMessage*
}

Edit file /etc/sudoers kemudian tambahkan user nagios tanpa password bisa menjalakan beberapa command, letakkan setelah user root…

[...]
root ALL=(ALL) ALL
nagios ALL=(root) NOPASSWD: /usr/bin/printf, /usr/local/bin/gammu, /usr/bin/wget,/bin/rm
[...]

Edit template untuk mengatur notification pada config-nya di file /etc/nagios/objects/templates.cfg, tambahkan command untuk menjalankan notify baik host maupun service.

define contact{
        name generic-contact
        service_notifications_enabled 1
        service_notification_period 24x7
        service_notification_options w,u,c,r
        service_notification_commands notify-service-by-telegram,notify-service-by-sms
        host_notifications_enabled 1
        host_notification_period 24x7
        host_notification_options d,u,r
        host_notification_commands notify-host-by-telegram,notify-host-by-sms
        register 0
}

Terakhir jangan lupa restart service nagios-nya.