Instalasi dan Integrasi Zabbix Monitoring Server dengan Telegram

Dapet request dari kantor lagi, untuk integrasi monitoring server dengan aplikasi chat, agar alert yang dikirim dapat langsung dibaca. Karena selama ini alert dikirim melalui email, jadi banyak yang terlewatkan. Tau sendiri, orang banyak yg males baca email, hahaha….

Setelah cari sana sini, akhirnya pilihan jatuh pada Zabbix dan Telegram. O iya seperti biasa, requestnya yg free alias gratis alias opensource, hahaha….

Ok, sekarang kita mulai aja ya

Instalasi Zabbix Server

  1. Update Repository
sudo apt update
  1. Install Packet yang diperlukan
sudo apt install apache2 mysql-server php libapache2-mod-php php-mcrypt php-mysql php-xml php-bcmath php-mbstring
  1. Download repo zabbix
wget http://repo.zabbix.com/zabbix/3.5/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.5-1%2Bxenial_all.deb
  1. Install repo zabbix, bisa juga dengan menambahkan manual di /etc/apt/sources.list
sudo dpkg -i zabbix-release_3.5-1%2Bxenial_all.deb
  1. Update repo, agar dapat mengenali repo zabbix
sudo apt update
  1. Install zabbix
sudo apt install zabbix-server-mysql zabbix-frontend-php
  1. Karena, akan memonitor dirinya sendiri, maka perlu install zabbix agent juga diserver
sudo apt install zabbix-agent
  1. Buat database zabbix
mysql -u root -p
            Enter password:
            Welcome to the MySQL monitor.  Commands end with ; or \g.
            Your MySQL connection id is 4
            Server version: 5.7.24-0ubuntu0.16.04.1 (Ubuntu)


            Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.


            Oracle is a registered trademark of Oracle Corporation and/or its
            affiliates. Other names may be trademarks of their respective
            owners.


            Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


            mysql>
            mysql> create database zabbix character set utf8 collate utf8_bin;
            Query OK, 1 row affected (0.00 sec)

            mysql> grant all privileges on zabbix.* to [email protected] identified by '12345678';
            Query OK, 0 rows affected, 1 warning (0.00 sec)

            mysql> flush privileges;flush privileges;
            Query OK, 0 rows affected (0.00 sec)

            mysql> quit;

9. Restore database zabbix ke database zabbix yang kita buat tadi

zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -u zabbix -p zabbix
  1. Edit konfigurasi zabbix server, sesuaikan db password dengan yang dibuat tadi
sudo nano /etc/zabbix/zabbix_server.conf
            ...
            ### Option: DBPassword                          
            #       Database password. Ignored for SQLite.  
            #       Comment this line if no password is used.
            #                                                
            # Mandatory: no                                 
            # Default:                                      
            # DBPassword=
            DBPassword=12345678
  1. Edit konfigurasi zabbix apachenya, ubah timezone dengan timezone kita
sudo nano /etc/zabbix/apache.conf

            ...
            <IfModule mod_php7.c>
                        php_value max_execution_time 300
                        php_value memory_limit 128M
                        php_value post_max_size 16M
                        php_value upload_max_filesize 2M
                        php_value max_input_time 300
                        php_value always_populate_raw_post_data -1
                        php_value date.timezone Asia/Jakarta
            </IfModule>
  1. Restart apache2
sudo systemctl restart apache2
  1. Enable service zabbix-server
sudo systemctl enable zabbix-server
  1. Aktifkan/Start service zabbix-server
sudo systemctl start zabbix-server
  1. Cek service zabbix-server sudah berjalan baik atau tidak
sudo systemctl status zabbix-server
  1. Selanjutnya, buka zabbix melalui dashboard, langkah pertama akan mengecek kebutuhan yang akan digunakan oleh zabbix, apabila sudah “OK” semua, klik Next step 
  2. Selanjutnya, konfigurasi database, isikan sesuai yang dibuat sebelumnya, kemudian klik Next step 
  3. Selanjutnya, isi nama host, kemudian klik Next step 
  4. Summary dari langkah yang dilakukan tadi, klik Next step untuk melanjutkan 
  5. Selamat, sudah berhasil install zabbix. Klik finish 
  6. Login ke zabbix, user default adalah Admin dan password default adalah zabbix

 

Instal Zabbix Agent di Ubuntu Server

  1. Install repository zabbix pada Ubuntu server
wget http://repo.zabbix.com/zabbix/3.5/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.5-1%2Bxenial_all.deb
sudo dpkg -i zabbix-release_3.5-1%2Bxenial_all.deb
  1. Update repository
sudo apt update
  1. Install zabbix-agent
sudo apt install zabbix-agent
  1. Generate key untuk preshared key zabbix agent
sudo sh -c "openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk"
  1. Lihat preshared key (psk) yang sudah digenerate
cat /etc/zabbix/zabbix_agentd.psk
3b36cea5dc8f000568d66e8189524661c65c0a0b96ebc57ff1e980db0bbc8819
  1. Edit zabbix agent configuration, sesuaikan dengan ip zabbix server. Karena akan menggunakan preshared key (psk), untuk TLSAccept dan TLSConnet menggunakan psk. Untuk TLSPSKIdentity isi dengan kata spesifik, disini kita isi dengan PSKAgent1. TLSPSKFile merupakan lokasi penyimpanan psk yang tadi digenerate.
sudo nano /etc/zabbix/zabbix_agentd.conf
            ...
            ### Option: Server
            #       List of comma delimited IP addresses (or hostnames) of Zabbix servers.
            #       Incoming connections will be accepted only from the hosts listed here.
            #       If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally.
            #
            # Mandatory: no
            # Default:
            # Server=
            Server=172.30.0.51

            ...
            ### Option: TLSConnect
            #       How the agent should connect to server or proxy. Used for active checks.
            #       Only one value can be specified:
            #               unencrypted - connect without encryption
            #               psk         - connect using TLS and a pre-shared key
            #               cert        - connect using TLS and a certificate
            #
            # Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
            # Default:
            # TLSConnect=unencrypted
            TLSConnect=psk

            ...
            ### Option: TLSAccept
            #       What incoming connections to accept.
            #       Multiple values can be specified, separated by comma:
            #               unencrypted - accept connections without encryption
            #               psk         - accept connections secured with TLS and a pre-shared key
            #               cert        - accept connections secured with TLS and a certificate
            #
            # Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
            # Default:
            # TLSAccept=unencrypted
            TLSAccept=psk

            ...
            ### Option: TLSPSKIdentity
            #       Unique, case sensitive string used to identify the pre-shared key.
            #
            # Mandatory: no
            # Default:
            # TLSPSKIdentity=
            TLSPSKIdentity=PSKAgent1

            ...
            ### Option: TLSPSKFile
            #       Full pathname of a file containing the pre-shared key.
            #
            # Mandatory: no
            # Default:
            # TLSPSKFile=
            TLSPSKFile=/etc/zabbix/zabbix_agentd.psk
  1. Start zabbix agent service
sudo systemctl start zabbix-agent
  1. Enable zabbix agent service
sudo systemctl enable zabbix-agent
  1. Cek zabbix agent service status
sudo systemctl status zabbix-agent

Menambahkan Server (Ubuntu server) di Zabbix Server

  1. Klik Configuration => Host, kemudian klik create hosts 
  2. Isikan nama hostname, kemudian pada group pilih linux server dan terakhir, karena menggunakan zabbix agent yg diinstall pada server yang akan dimonitor, maka isikan ip server yang akan dimonitor pada agent interface 
  3. Selanjutnya klik templates. Pada link new templates, klik select, kemudian cari Template OS Linux. Setelah itu klik add dibawah kotak link new templates. 
  4. Selanjutnya klik Encryption, pilih psk pada connection to host dan connection from host. Isikan PSK Identity dan PSK sesuai yang ada di set pada server yang akan dimonitor. Terakhir, klik Add, maka akan muncul host 

Integrasi Zabbix dengan Telegram

  1. Buat dulu akun bot Telegram di Botfather dengan command /newbot, kemudian nama botnya
  2. Catat TokenID, karena ini nanti yang akan kita masukan di script. Pada lab ini TokenIDnya 782976883:AAGsqdWf3lei2ehsbL5NaJTMuEwGdShCcqQ
  3. Tambahkan bot ini kedalam group telegram, agar apabila ada notification, dapat diketahui banyak orang. Kemudian, cek dan catat id dari group dengan ketikan https://api.telegram.org/bot782976883:AAGsqdWf3lei2ehsbL5NaJTMuEwGdShCcqQ/getUpdates, pada browser
  4. Download the zabbix-telegram.sh di sini, kemudian extract kemudian copy file zabbix-telegram.sh ke /usr/lib/zabbix/alertscripts/ pada Server Zabbix Monitoring.
  5. Edit zabbix-telegram.sh pada parameter berikut
  • ZBX_URL : isikan dengan IP Zabbix or URL
ZBX_URL="http://172.30.0.51/zabbix"
  • USERNAME and PASSWORD : untuk akses ke Zabbix GUI (user harus punya akses untuk melihat graph)
USERNAME="Admin"

PASSWORD="konfigurasi12345"
  • BOT_TOKEN : isikan TokenID dari BotFather
BOT_TOKEN='782976883:AAGsqdWf3lei2ehsbL5NaJTMuEwGdShCcqQ'
  • ZABBIXVERSION34 jika Zabbix is >= 3.4.1, isikan 1
ZABBIXVERSION34="1"
  1. Kemudian, login ke Zabbix Dashboard. Klik Administration => Media types. Buat media baru dengan klik create media.
  2. Isikan seperti berikut, kemudian klik Update 
  3. Klik Administration => Users. Edit user Admin yang akan diintegrasi dengan Telegram. Kemudian pilih media, isikan seperti gambar dibawah. Untuk Send To, karena akan dikirimkan ke group, isikan dengan id group seperti yang dicek pada browser pada langkah 3. Klik update untuk menyimpan setingan  
  4. Selanjutnya, kita akan melakukan set triger, sehingga apabila ada alert dr triger dapat dikirimkan ke group. 
  5. Pilih Configuration => Actions. Klik Report problems untuk mengedit.
  6. Klik Operation, isikan dengan parameter seperti gambar. Pada Kotak Operations, Klik New, tambahkan zabbix administrator ke group. 

Isi dari Default message

     GroupName:{TRIGGER.HOSTGROUP.NAME}
     Hostname: {HOSTNAME}
     Problem: {TRIGGER.NAME}:
     Problem status: {STATUS}
     Severity: {TRIGGER.SEVERITY}
     Date and Time: {EVENT.DATE} - {EVENT.TIME}
     Item Graphic: [{ITEM.ID1}]
     Last tested value: {{HOSTNAME}:{TRIGGER.KEY}.last(0)}
  1. Pada Recovery Operations, isikan seperti gambar berikut. Jangan lupa tambahkan Zabbix administrator group pada Operations nya 

Isi dari default message pada Recovery Operations

    Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}
    Problem name: {EVENT.NAME}
    Host: {HOST.NAME}
    Severity: {EVENT.SEVERITY}


    Original problem ID: {EVENT.ID}
    {TRIGGER.URL}
  1. Klik Update untuk menyimpan settingan