Membuat Notifikasi Telegram untuk Nagios
posted at
Assalamualaikum Warahmatullahi Wabarokatuh
Postingan ini akan membahas tentang bagaimana membuat notikasi ke telegram. Membuat notifikasi telegram untuk nagios sebenarnya sudah banyak ditulis oleh para pegiat teknologi ( silahkan cek google ). Tapi, kebanyakan mengharuskan kita untuk mengkonfigurasi di sisi nagiosnya, seperti membuat config di direktori /etc/nagios dan sebagianya.
Sebenarnya hal itu sah sah saja dan sangat dianjurkan, tapi ( bagi saya ) yang baru kenalan dengan nagios dan kurang faham dengan konfignya atau bahkan tidak mempunyai hak akses untuk melakukan konfigurasi secara langsung ke sisi server akan dipaksa putar otak agar mempermudah pekerjaan hehe.
Nah, hasil mutar mutar di google ternyata nagios mempunyai CGI Service hhhhmm sebuah angin segar.

Service ini memungkinkan kita untuk mendapatkan data dari nagios secara real time. Untuk lebih mendetail bisa dicek di https://labs.nagios.com/2014/06/19/exploring-the-new-json-cgis-in-nagios-core-4-0-7-part-1/ .
Medapatkan Data Nagios
Berdasarkan artikel tersebut disebutkan bahwa terdapat tiga buah cgi yang bisa kita eksplor, yaitu
- objectjson.cgi (object configuration)
- statusjson.cgi (status information)
- archivejson.cgi (historical logs)
Selanjutnya untuk menggunakan service tersebut silahkan buka, http://<ip server>/nagios/jsonquery.html
, maka akan muncul halaman Json Query Generator yang akan mempermudah kita untuk mendapatkan informasi.

Silahkan pilih pilihan pada CGI, dan untuk mendapatkan status up dan down dari hosts kita cukup berfokus pada Status Json CGI, silahkan dipilih.
Selanjutnya halaman akan memberikan pilihan Query, silahkan pilih hostslist untuk mendapatkan data hosts nagios kita.
Selanjutnya akan muncul banyak filter, silahkan disesuaikan dengan kebutuhan. Untuk filter yang saya gunakan sebagai berikut, silahkan disesuaikan atau sesuai kemauan.
Sebagai contoh ingin mengecek status dari host grup yang dihandle, masukkan host grup dan centang True pada show details, kemudian pilih Send Query.

Kemudian, server akan memberikan response kepada kita berupa data data dari hosts, jangan terlalu dipusingkan untuk hasil yang ditampilkan cukup berfokus pada dua hal, yaitu status dan URL yang dihasilkan.
Untuk status dari host diwakilkan dengan angka yakni, 2
untuk Ok
sisanya dianggap bermasalah.
Sedangkan untuk URL yang dihasilkan silahkan dicopy dan disimpan karena akan kita gunakan lagi, http://<ip server>/nagios/cgi-bin/statusjson.cgi?query=hostlist&details=true&hostgroup=sesuainamagrup

Membuat Daftar Host / Site
Jika kita perhatikan data json hasil query kita pada Json Query Generator pada bagian hostslist, result json kita mempunyai key
sesuai nama host yang terdaftar di nagios. Hal ini membuat kita sedikit kesulitan dalam memastikan key
yang akan kita gunakan untuk mendapatkan data, yaa karena tiap host beda beda.
Selain untuk mengatasi hal diatas, pendaftaran host ini juga berguna jikalau kita hanya memerlukan status dari beberapa site saja, seperti contoh dari total 100 hosts, kita hanya perlu 10 saja, karena akan tidak efektif lagi jika kita mendapatkan data dari host yang tidak kita handle.
Berdasarkan script yang dibuat, host ini di daftarkan di file locations.csv
dengan pola
NAMA LOKASI, IP DEVICE
Contohnya, *pastikan tidak ada line kosong pada bari paling bawah
https://gist.github.com/azharisikumbang/2ee74e5ce37ddc04ff039d4320166234
Membuat Bot Telegram
Silahkan login ke akun telegram masing masing dan untuk membuat bot bisa dengan menggunakan botFather
telegram di https://t.me/botfather
.
- Pada botFather, ketikkan
/start
dan kemudian/newbot
- Selanjutnya, masukkan nama bot ( misal, saya pake telnagiosbot )
- Setelah nama, masukkan username dengan embel-embel
bot
diujung username ( misal, telnagiosbot ) - Jika muncul pesan balasan seperti berikut, berarti kita berhasil membuat bot kita sendiri

- Silahkan di copy dan disimpan
token
dari si telegram bot - Kemudian silahkan
/start
dan kirim pesan sembarang ke bot kita, dengan masuk kehttps://t.me/usernamebotmasingmasing

- Selanjutnya adalah mendapatkan
telegram chat id
ataumessage id
, silahkan masuk kehttps://api.telegram.org/botTOKEN/getUpdates
( * ganti kata TOKEN dengan token masing – masing )

- chat – id adalah
message_id
kita ( kotak biru ) , silahkan di copy dan disimpan - Jika tidak menghasilkan seperti gambar diatas, silahkan dikirim ulang pesan ke bot dan diakses lagi
Mari Koding
Untuk script telah diupload di gist github, script ditulis memakai PHP 7.2 ( update : dan tersedia juga dalam python3 di https://gist.github.com/azharisikumbang/ec1fc6db9ba9d51be16d52d75d57eb91)
Beberapa parameter berikut silahkan disesuaikan masing masing
- $CSV_FILE, disikan dengan lokasi file csv yang telah kita buat tadi
- $TELEGRAM_CHAT_ID, disesuaikan dengan telegram chat id
- $TELEGRAM_TOKEN, sesuai bot token masing masing
- $NAGIOS_USERNAME
- $NAGIOS_PASSWORD
- $NAGIOS_URL, sesuai yang telah ktia generate diawal
https://gist.github.com/azharisikumbang/b7c3f78e0fc5b967a993c96779a6a062
Yok dicoba!
Untuk melakukan pengujian awal, kita menggunakan komputer masing masing, dan pastikan telah terinstall PHP (update: atau python3).
Berikut hasil uji coba.
$ php telenagios.php

Yeayy, notifikasi telegram sederhana berhasil dibuat, tapi.. masih banyak kekurangan,, untuk selanjutnya akan diupdate berupa pemberian notifikasi secara otomatis dan berkala ( misal per satu jam ) ke hp, atau penambahan atribute lain seperti kontak client di lokasi perangkat kita berada..
Sekian,