Zabbix 7.4 Docker Compose


Install Zabbix 7.4 Docker Compose

image.png

Berikut adalah panduan lengkap untuk menginstal Zabbix 7.4 menggunakan Docker Compose di Ubuntu 22.04 LTS, mulai dari awal hingga login ke web interface Zabbix. Saya akan menjelaskan langkah-langkah secara detail, termasuk prasyarat dan konfigurasi, berdasarkan informasi resmi dari Zabbix dan praktik terbaik untuk Docker.

Requirement

Sebelum memulai, pastikan Anda memiliki:

  1. Server Ubuntu 22.04 LTS yang sudah terinstall.
  2. Akses root atau hak sudo untuk menjalankan perintah instalasi.
  3. Koneksi internet untuk mengunduh paket dan image Docker.

Langkah 1: Update Sistem dan Install Docker serta Docker Compose

Langkah 2: Siapkan Docker Compose untuk Zabbix

Zabbix menyediakan file Docker Compose resmi di repositori GitHub mereka. Kita akan menggunakan file berbasis PostgreSQL, karena ini adalah konfigurasi yang umum digunakan dan didukung dengan baik untuk Zabbix 7.4.

Langkah 3: Jalankan Docker Compose

docker-compose ps

Anda seharusnya melihat container dalam status Up.

Langkah 4: Akses Zabbix

Set Static IP Agent Zabbix Docker

image.png

Pada langkah instalasi docker compose sebelumnya, IP docker masih setting DHCP, jadi ada kemungkinan untuk docker zabbix agent akan berubah IP nya ketika docker compose di restart / down kemudian up.

Solusinya IP docker zabbix agent di setting static dengan cara sebagai berikut :

1. Matikan / Stop dulu zabbix docker compose nya

docker compose -f docker-compose_v3_alpine_pgsql_latest.yaml --profile full down

2. Edit compose_zabbix_components.yaml

vim compose_zabbix_components.yaml
zabbix-agent:
  ...
  networks:
    backend:
      ipv4_address: 172.16.239.200
      aliases:
        - zabbix-agent
        - zabbix-agent-passive

3. Edit environment variable zabbix agent

vim env_vars/.env_agent

4. Start kembali zabbix docker compose nya

docker compose -f docker-compose_v3_alpine_pgsql_latest.yaml --profile full up -d

5. Cek IP docker zabbix agent

docker inspect zabbix-docker-zabbix-agent-1 | grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.16.239.200",

Monitoring Server Ubuntu 22.04 LTS

image.png

Untuk menjaga performa dan stabilitas server, terutama yang menjalankan aplikasi penting di lingkungan produksi, sistem monitoring sangat diperlukan. Salah satu solusi monitoring yang powerful dan open-source adalah Zabbix. Pada artikel ini, kita akan membahas langkah-langkah menyiapkan monitoring Ubuntu 22.04 LTS menggunakan Zabbix, mulai dari instalasi agen hingga verifikasi di dashboard Zabbix server.

Zabbix adalah platform monitoring jaringan dan server berbasis open-source yang dapat memantau berbagai metrik seperti penggunaan CPU, RAM, disk, layanan, hingga availability dari berbagai host. Zabbix mendukung banyak sistem operasi, termasuk Ubuntu, CentOS, Windows, dan lainnya.

Zabbix terdiri dari beberapa komponen utama:

Prasyarat

Sebelum melanjutkan, pastikan:

1. Tambahkan Repository Zabbix pada Server Ubuntu 22.04 LTS yang akan di monitor
2. Instal Zabbix Agent
3. Konfigurasi Zabbix Agent
4. Aktifkan dan Jalankan Zabbix Agent
5. Tambahkan Host di Zabbix Server
6. Verifikasi Monitoring

Zabbix Backup

image.png

Berikut adalah panduan lengkap untuk melakukan backup dan restore Zabbix 7.4 yang dijalankan menggunakan Docker Compose di Ubuntu 22.04 LTS, serta memindahkan dan merestorasinya ke server Ubuntu 22.04 LTS lain. Panduan ini mencakup backup database PostgreSQL, file konfigurasi Zabbix, dan data persisten lainnya, serta langkah-langkah untuk merestorasi di server baru.Prasyarat

  1. Server Sumber:
    • Zabbix 7.4 sudah terinstal menggunakan Docker Compose (sesuai panduan sebelumnya).
    • Akses root atau hak sudo.
    • Docker dan Docker Compose sudah terinstal.
  2. Server Tujuan:
    • Ubuntu 22.04 LTS yang bersih.
    • Spesifikasi server serupa atau lebih baik dari server sumber.
    • Docker dan Docker Compose terinstal (ikuti Langkah 1 dari panduan sebelumnya jika belum).
  3. Alat Pendukung:
    • Akses SSH untuk transfer file (misalnya, scp atau rsync).
    • Penyimpanan sementara untuk menyimpan file backup.
  4. Catatan:
    • Pastikan port yang diperlukan (8080, 10051, 10050, dsb.) tidak diblokir firewall di server tujuan.
    • Pastikan Anda memiliki cukup ruang penyimpanan untuk backup.

Langkah 1: Backup Zabbix di Server SumberZabbix 7.4 yang dijalankan dengan Docker Compose menyimpan data di dua tempat utama:

1.1 Backup Database PostgreSQL

  1. Identifikasi container PostgreSQL: Cari nama container PostgreSQL:
    bash

    docker-compose ps
    Nama container biasanya seperti zabbix-docker-postgres-server-1 (sesuai dengan docker-compose.yaml).
  2. Buat backup database: Gunakan pg_dump untuk mengekspor database Zabbix ke file SQL:
    bash

    docker exec zabbix-docker-postgres-server-1 pg_dump -U zabbix zabbix > zabbix_backup_$(date +%F).sql
    • -U zabbix: Menggunakan user zabbix (sesuaikan jika Anda mengubah POSTGRES_USER di .env).
    • zabbix: Nama database (sesuaikan jika Anda mengubah POSTGRES_DB di .env).
    • File output akan bernama seperti zabbix_backup_2025-07-13.sql.
  3. Verifikasi file backup: Pastikan file backup telah dibuat dan tidak kosong:
    bash

    ls -lh zabbix_backup_*.sql

1.2 Backup Volume DockerVolume Docker menyimpan file konfigurasi dan data persisten di direktori ./zbx_env (sesuai konfigurasi di docker-compose.yaml).

  1. Hentikan container Zabbix (opsional, untuk konsistensi data):
    bash

    cd ~/zabbix-docker
    docker-compose stop
  2. Backup direktori volume: Kompres direktori ./zbx_env ke file tar.gz:
    bash

    tar -zcvf zbx_env_backup_$(date +%F).tar.gz zbx_env
  3. Verifikasi file backup: Pastikan file backup telah dibuat:
    bash

    ls -lh zbx_env_backup_*.tar.gz
  4. Nyalakan kembali container (jika dihentikan):
    bash

    docker-compose start

1.3 (Opsional) Backup File Konfigurasi Docker ComposeBackup file docker-compose.yaml dan .env untuk memastikan konfigurasi identik saat restore:

bash

cp docker-compose.yaml docker-compose_backup_$(date +%F).yaml
cp .env .env_backup_$(date +%F)

1.4 Kumpulkan File BackupSekarang Anda memiliki:

Zabbix Restore

image.png

Berikut adalah panduan lengkap untuk merestorasi backup Zabbix 7.4 yang telah dibuat dari server sumber ke server tujuan baru yang menjalankan Ubuntu 22.04 LTS. Proses ini mencakup restore database PostgreSQL, volume Docker, dan file konfigurasi untuk memastikan Zabbix berjalan kembali seperti di server asal. Saya akan menjelaskan langkah-langkah secara detail dengan asumsi Anda telah memiliki file backup dari panduan sebelumnya.Prasyarat

  1. Server Tujuan:
    • Ubuntu 22.04 LTS yang bersih.
    • Docker dan Docker Compose sudah terinstal (ikuti Langkah 1 dari panduan instalasi sebelumnya jika belum).
    • Akses root atau hak sudo.
    • Spesifikasi server setara atau lebih baik dari server sumber.
  2. File Backup:
    • zabbix_backup_YYYY-MM-DD.sql: File backup database PostgreSQL.
    • zbx_env_backup_YYYY-MM-DD.tar.gz: File backup volume Docker.
    • docker-compose_backup_YYYY-MM-DD.yaml: File konfigurasi Docker Compose.
    • .env_backup_YYYY-MM-DD: File variabel lingkungan.
  3. Koneksi Jaringan:
    • Pastikan port 8080 (atau port web yang digunakan), 10051 (Zabbix server), dan 10050 (Zabbix agent, jika digunakan) tidak diblokir firewall.
  4. Alat Pendukung:
    • Akses SSH untuk transfer file (misalnya, scp atau rsync) dari server sumber atau penyimpanan backup.

Langkah-langkah Restore Zabbix 7.4Langkah 1: Persiapkan Server Tujuan

  1. Update sistem Ubuntu: Pastikan sistem tujuan diperbarui:
    bash

    sudo apt update && sudo apt upgrade -y
  2. Install Docker dan Docker Compose: Jika belum terinstal, ikuti langkah-langkah berikut (sesuai panduan instalasi sebelumnya):
    bash

    # Install dependensi
    sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
    
    # Tambahkan GPG key Docker
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    
    # Tambahkan repositori Docker
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    # Install Docker
    sudo apt update
    sudo apt install -y docker-ce docker-ce-cli containerd.io
    
    # Install Docker Compose
    sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    
    # Tambahkan pengguna ke grup Docker (opsional)
    sudo usermod -aG docker $USER
    newgrp docker
  3. Verifikasi instalasi:
    bash

    docker --version
    docker-compose --version

Langkah 2: Transfer File Backup ke Server Tujuan

  1. Pindahkan file backup: Gunakan scp atau rsync untuk mentransfer file backup dari server sumber (atau penyimpanan eksternal) ke server tujuan. Misalnya, dari server sumber atau lokasi penyimpanan:
    bash

    scp zabbix_backup_2025-07-13.sql zbx_env_backup_2025-07-13.tar.gz docker-compose_backup_2025-07-13.yaml .env_backup_2025-07-13 user@<IP_SERVER_TUJUAN>:~/zabbix-restore/
    • Ganti <IP_SERVER_TUJUAN> dengan IP server tujuan.
    • Ganti user dengan nama pengguna SSH di server tujuan.
    • Direktori tujuan (~/zabbix-restore/) bisa disesuaikan.
  2. Buat direktori kerja di server tujuan: SSH ke server tujuan dan buat direktori untuk restore:
    bash

    mkdir ~/zabbix-restore
    cd ~/zabbix-restore
  3. Verifikasi file backup: Pastikan semua file telah ditransfer:
    bash

    ls -lh
    Anda seharusnya melihat:
    • zabbix_backup_2025-07-13.sql
    • zbx_env_backup_2025-07-13.tar.gz
    • docker-compose_backup_2025-07-13.yaml
    • .env_backup_2025-07-13

Langkah 3: Siapkan File Konfigurasi

  1. Salin file konfigurasi: Gunakan file docker-compose.yaml dan .env dari backup:
    bash

    cp docker-compose_backup_2025-07-13.yaml docker-compose.yaml
    cp .env_backup_2025-07-13 .env
  2. Periksa file .env: Buka file .env untuk memastikan konfigurasinya sesuai dengan server tujuan:
    bash

    nano .env
    • Pastikan ZBX_WEBSERVER_PORT (misalnya, 8080) sesuai dengan port yang diizinkan di server tujuan.
    • Pastikan POSTGRES_PASSWORD dan parameter lain sesuai dengan backup database.
    • Jika IP server berubah, sesuaikan ZBX_SERVER_HOST jika diperlukan.
    • Simpan dan keluar (Ctrl+O, Enter, Ctrl+X).
  3. Periksa file docker-compose.yaml: Pastikan file ini sesuai dengan struktur yang digunakan saat backup (biasanya tidak perlu diubah). 
  1. Pastikan izin direktori: Berikan izin yang sesuai untuk Docker:
    bash

    sudo chown -R $USER:docker zbx_env
    sudo chmod -R 755 zbx_env

Langkah 5: Jalankan Container untuk Persiapan Restore Database

  1. Jalankan container tanpa Zabbix server dan web: Ubah sementara docker-compose.yaml untuk hanya menjalankan container PostgreSQL agar database dapat direstorasi terlebih dahulu. Edit file docker-compose.yaml:
    bash

    nano docker-compose.yaml
    Komentari (tambahkan # di depan) layanan zabbix-server, zabbix-web-nginx-pgsql, dan zabbix-agent (jika ada) untuk sementara. Contoh:
    yaml

    version: '3.8'
    services:
      postgres-server:
        image: postgres:15
        environment:
          - POSTGRES_USER=${POSTGRES_USER}
          - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
          - POSTGRES_DB=${POSTGRES_DB}
        volumes:
          - ./zbx_env/var/lib/postgresql/data:/var/lib/postgresql/data
        restart: unless-stopped
      # zabbix-server:
      #   ...
      # zabbix-web-nginx-pgsql:
      #   ...
      # zabbix-agent:
      #   ...
    Simpan dan keluar.
  2. Jalankan container PostgreSQL:
    bash

    docker-compose up -d
  3. Verifikasi container PostgreSQL: Pastikan container berjalan Indonesia
    docker-compose ps
    Anda seharusnya melihat container `postgres-server` dalam status `Up`.
    • Salin file backup database ke container:
      Salin file SQL ke container PostgreSQL:
      docker cp zabbix_backup_2025-07-13.sql zabbix-docker-postgres-server-1:/tmp/zabbix_backup.sql

Langkah 7: Jalankan Semua Container

  1. Kembalikan docker-compose.yaml: Buka docker-compose.yaml dan hapus tanda komentar (#) dari layanan zabbix-server, zabbix-web-nginx-pgsql, dan zabbix-agent (jika ada):

     

    nano docker-compose.yaml
    Pastikan semua layanan aktif kembali.
  2. Jalankan semua container:

     

    docker-compose up -d
  3. Verifikasi container: Pastikan semua container berjalan:

     

    docker-compose ps
    Anda seharusnya melihat semua container (postgres-server, zabbix-server, zabbix-web-nginx-pgsql, dan zabbix-agent jika digunakan) dalam status Up

Langkah 8: Akses dan Verifikasi Zabbix

  1. Akses web interface: Buka browser dan akses Zabbix di server tujuan:

    http://<IP_SERVER_TUJUAN>:<ZBX_WEBSERVER_PORT>/zabbix
    Contoh: http://192.168.1.100:8080/zabbix.
  2. Login ke Zabbix:
    • Username: Admin (atau username yang digunakan di server sumber).
    • Password: Kata sandi yang digunakan di server sumber (default: zabbix jika belum diubah).
    • Jika kata sandi tidak berfungsi, reset kata sandi melalui database (lihat Langkah 9 jika diperlukan).
  3. Verifikasi data:
    • Navigasi ke Monitoring > Latest data untuk memastikan data monitoring dari server sumber tersedia.
    • Periksa Configuration > Hosts untuk memastikan semua host yang sebelumnya dikonfigurasi ada.
    • Pastikan status host menunjukkan koneksi aktif (kolom Availability berwarna hijau).

Langkah 9: (Opsional) Reset Kata Sandi AdminJika Anda lupa kata sandi Admin atau ingin meresetnya:

  1. Akses database:

     

    docker exec -it zabbix-docker-postgres-server-1 psql -U zabbix -d zabbix
  2. Update kata sandi Admin: Jalankan perintah SQL untuk mereset kata sandi user Admin ke zabbix:
    sql

    UPDATE users SET passwd=md5('zabbix') WHERE username='Admin';
    \q
  3. Login ulang: Coba login kembali dengan Admin/zabbix.

Langkah 10: Pemecahan Masalah

  1. Web interface tidak dapat diakses:
    • Pastikan port ZBX_WEBSERVER_PORT (misalnya, 8080) terbuka:
      bash

      sudo ufw allow 8080
    • Cek log container:
      bash

      docker-compose logs zabbix-web-nginx-pgsql
  2. Database error:
    • Pastikan variabel di .env (POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB) sesuai dengan backup.
    • Jika database gagal dimuat, periksa integritas file SQL:
      bash

      less zabbix_backup_2025-07-13.sql
    • Coba restore ulang jika file rusak.
  3. Zabbix server tidak terhubung ke database:
    • Cek log:
      bash

      docker-compose logs zabbix-server
    • Pastikan container postgres-server berjalan sebelum zabbix-server.
  4. Host tidak terhubung:
    • Pastikan IP server tujuan sesuai dengan konfigurasi Zabbix agent di host yang dimonitor.
    • Perbarui Server di file konfigurasi agent (/etc/zabbix/zabbix_agentd.conf) di host target:
      bash

      Server=<IP_SERVER_TUJUAN>
    • Restart agent:
      bash

      sudo systemctl restart zabbix-agent

Langkah 11: (Opsional) Konfigurasi Tambahan

  1. Konfigurasi firewall: Pastikan port yang diperlukan terbuka:
    bash

    sudo ufw allow 8080
    sudo ufw allow 10051
    sudo ufw allow 10050
  2. Konfigurasi HTTPS (opsional): Untuk keamanan, konfigurasikan SSL di Nginx. Tambahkan sertifikat SSL ke volume zbx_env/etc/zabbix/web dan ubah docker-compose.yaml untuk menggunakan port 443.
  3. Backup rutin: Setelah restore berhasil, atur cron job untuk backup rutin di server tujuan:
    bash

    crontab -e
    Tambahkan baris untuk backup harian (misalnya, pukul 02:00):
    bash

    0 2 * * * cd ~/zabbix-restore && docker exec zabbix-docker-postgres-server-1 pg_dump -U zabbix zabbix > zabbix_backup_$(date +\%F).sql && tar -zcvf zbx_env_backup_$(date +\%F).tar.gz zbx_env

Catatan Penting

RingkasanDengan langkah-langkah di atas, Anda telah berhasil merestorasi Zabbix 7.4 dari backup di server Ubuntu 22.04 LTS baru. Proses ini mencakup transfer file backup, restore volume Docker, restore database PostgreSQL, dan verifikasi sistem. Zabbix Anda sekarang seharusnya berjalan seperti di server sumber, dengan semua data monitoring, host, dan konfigurasi utuh.Jika Anda mengalami masalah atau memerlukan panduan tambahan (misalnya, konfigurasi lanjutan seperti notifikasi atau clustering), silakan beri tahu!