#!/bin/bash
# --- KONFIGURASI ---
ZBX_VER="alpine-7.0-latest"
MYSQL_PASS="zabbix_pwd"
NET_NAME="zabbix-net"
DB_VOL="zabbix-db-storage"
echo "🔍 Memulai pengecekan sistem..."
# 1. Cek Network & Volume
podman network exists $NET_NAME || podman network create $NET_NAME
podman volume exists $DB_VOL || podman volume create $DB_VOL
cleanup() {
if [ "$(podman ps -aq -f name=^$1$)" ]; then
echo "🔄 Membersihkan kontainer lama: $1..."
podman rm -f $1 > /dev/null 2>&1
fi
}
# 2. Jalankan Database (MySQL)
cleanup "zabbix-db"
echo "🗄️ Menjalankan MySQL 8.0..."
podman run -d --name zabbix-db \
--net $NET_NAME \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="$MYSQL_PASS" \
-e MYSQL_ROOT_PASSWORD="$MYSQL_PASS" \
--restart always \
-v $DB_VOL:/var/lib/mysql:Z \
docker.io/mysql:8.0
# --- SMART CHECK: Tunggu MySQL Benar-benar Ready ---
echo -n "⏳ Menunggu Database siap (Handshake)..."
RETRIES=30
while [ $RETRIES -gt 0 ]; do
# Cek apakah MySQL sudah bisa menerima koneksi
if podman exec zabbix-db mysqladmin ping -h localhost -u zabbix -p"$MYSQL_PASS" --silent; then
echo -e "\n✅ Database siap! Melanjutkan instalasi..."
break
fi
echo -n "."
sleep 2
RETRIES=$((RETRIES-1))
done
if [ $RETRIES -eq 0 ]; then
echo -e "\n❌ Timeout: Database gagal siap dalam 60 detik."
echo "💡 Tips: Cek log dengan 'podman logs zabbix-db'"
exit 1
fi
# 3. Jalankan Java Gateway
cleanup "zabbix-java-gateway"
podman run -d --name zabbix-java-gateway --net $NET_NAME --restart always docker.io/zabbix/zabbix-java-gateway:$ZBX_VER
# 4. Jalankan Zabbix Server Core
cleanup "zabbix-server"
echo "🧠 Menjalankan Zabbix Server..."
podman run -d --name zabbix-server \
--net $NET_NAME \
-p 10051:10051 \
-e DB_SERVER_HOST="zabbix-db" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="$MYSQL_PASS" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
--restart always \
docker.io/zabbix/zabbix-server-mysql:$ZBX_VER
# --- SMART CHECK: Tunggu Zabbix Server siap ---
echo -n "⏳ Menunggu Zabbix Server listen di port 10051..."
RETRIES=20
while [ $RETRIES -gt 0 ]; do
if podman exec zabbix-server nc -zv localhost 10051 > /dev/null 2>&1; then
echo -e "\n✅ Server Core aktif!"
break
fi
echo -n "."
sleep 2
RETRIES=$((RETRIES-1))
done
# 5. Jalankan Web Dashboard
cleanup "zabbix-web"
echo "🖥️ Menjalankan Web Dashboard..."
podman run -d --name zabbix-web \
--net $NET_NAME \
-p 8080:8080 \
-e ZBX_SERVER_HOST="zabbix-server" \
-e DB_SERVER_HOST="zabbix-db" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="$MYSQL_PASS" \
-e PHP_TZ="Asia/Jakarta" \
--restart always \
docker.io/zabbix/zabbix-web-nginx-mysql:$ZBX_VER
echo "------------------------------------------------"
echo "🚀 Zabbix Berhasil Dideploy dengan Smart Check!"
echo "🌐 URL: http://$(hostname -I | awk '{print $1}'):8080"
echo "------------------------------------------------"
Script: startzabbixagent-smart.sh
#!/bin/bash
# --- KONFIGURASI ---
CONTAINER_NAME="zabbix-agent"
ZABBIX_SERVER="192.168.10.65" # IP Server Pusat Anda
HOSTNAME_KITA=$(hostname) # Mengambil hostname otomatis agar unik di dashboard
IMAGE="docker.io/zabbix/zabbix-agent2:alpine-7.0-latest"
echo "🔍 Memulai pengecekan Agent untuk host: $HOSTNAME_KITA..."
# 1. Cek apakah Podman terinstal
if ! command -v podman &> /dev/null; then
echo "❌ Error: Podman tidak ditemukan. Silakan instal podman terlebih dahulu."
exit 1
fi
# 2. Fungsi Cleanup: Hapus kontainer lama jika ada agar tidak bentrok
if [ "$(podman ps -aq -f name=$CONTAINER_NAME)" ]; then
echo "🔄 Menghapus kontainer lama $CONTAINER_NAME..."
podman rm -f $CONTAINER_NAME > /dev/null
fi
# 3. Jalankan Zabbix Agent 2 dengan fitur Smart & Portable
echo "🚀 Menjalankan Zabbix Agent 2 (Versi Alpine)..."
podman run -d --name $CONTAINER_NAME \
--net=host \
--privileged \
--restart always \
-e ZBX_SERVER_HOST="$ZABBIX_SERVER" \
-e ZBX_HOSTNAME="$HOSTNAME_KITA" \
-e ZBX_SERVER_ACTIVE="$ZABBIX_SERVER" \
-v /:/host:ro,Z \
-v /proc:/host/proc:ro,Z \
-v /sys:/host/sys:ro,Z \
$IMAGE
# 4. Verifikasi Akhir
if [ $? -eq 0 ]; then
echo "------------------------------------------------"
echo "✅ Agent Berhasil Dijalankan secara Portable!"
echo "📊 Hostname di Zabbix: $HOSTNAME_KITA"
echo "🔗 Terhubung ke Server: $ZABBIX_SERVER"
echo "📝 Gunakan 'podman logs -f $CONTAINER_NAME' untuk cek log."
echo "------------------------------------------------"
else
echo "❌ Gagal menjalankan Agent."
fi
Berikut adalah panduan ringkas untuk membuat dashboard tabel pemantau (All-in-One) agar Anda bisa melihat status CPU, RAM, dan Uptime dari semua server sekaligus dalam satu layar tanpa perlu klik satu per satu.
1. Persiapan Host
Pastikan semua server (Windows/Linux) sudah terdaftar di menu Data Collection > Hosts dan indikator ZBX sudah berwarna Hijau.
2. Membuat Dashboard Baru
Buka menu Dashboards (menu paling atas di sidebar).
Klik tombol Create dashboard di pojok kanan atas.
Beri nama, contoh:
Monitoring Center, lalu klik Apply.
3. Menambahkan Widget Tabel (Top Hosts)
Klik Add widget di tengah layar atau pojok kanan atas.
Pilih Type: Top hosts.
Pada bagian Hosts, pilih grup server Anda atau masukkan nama host satu per satu (seperti
rs,server-windows, dsb).
4. Konfigurasi Kolom (Inti Tabel)
Klik tombol Add pada bagian Columns untuk setiap data yang ingin ditampilkan:
| Nama Kolom | Data / Item | Catatan |
| Host | Host name | Menampilkan nama server. |
| IP Address | Host interface | Menampilkan IP server secara otomatis. |
| CPU | Item value: CPU utilization | Menampilkan beban prosesor dalam %. |
| RAM | Item value: Memory utilization | Menampilkan penggunaan RAM dalam %. |
| Uptime | Item value: System uptime | Menampilkan durasi server menyala. |
No comments:
Post a Comment