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.