Initial commit: Zabbix producao com mariadb
This commit is contained in:
+11
@@ -0,0 +1,11 @@
|
|||||||
|
# Secrets
|
||||||
|
env/
|
||||||
|
.credentials
|
||||||
|
|
||||||
|
# Data
|
||||||
|
data/
|
||||||
|
backups/
|
||||||
|
|
||||||
|
# OS/Logs
|
||||||
|
*.log
|
||||||
|
.DS_Store
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
services:
|
||||||
|
mariadb:
|
||||||
|
image: mariadb:10.11
|
||||||
|
container_name: zabbix-db
|
||||||
|
restart: unless-stopped
|
||||||
|
env_file: ./env/.env_db
|
||||||
|
volumes:
|
||||||
|
- ./data/db:/var/lib/mysql
|
||||||
|
- ./backups:/backups
|
||||||
|
command:
|
||||||
|
- --character-set-server=utf8mb4
|
||||||
|
- --collation-server=utf8mb4_bin
|
||||||
|
- --log_bin_trust_function_creators=1
|
||||||
|
- --innodb_buffer_pool_size=512M
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 12
|
||||||
|
start_period: 60s
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 1G
|
||||||
|
|
||||||
|
zabbix-server:
|
||||||
|
image: zabbix/zabbix-server-mysql:alpine-7.4-latest
|
||||||
|
container_name: zabbix-server
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
mariadb:
|
||||||
|
condition: service_healthy
|
||||||
|
env_file: ./env/.env_server
|
||||||
|
ports:
|
||||||
|
- "10051:10051"
|
||||||
|
volumes:
|
||||||
|
- ./data/zabbix_server:/var/lib/zabbix
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "zabbix_server", "--runtime-control", "ping"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 512M
|
||||||
|
|
||||||
|
zabbix-web:
|
||||||
|
image: zabbix/zabbix-web-nginx-mysql:alpine-7.4-latest
|
||||||
|
container_name: zabbix-web
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
- mariadb
|
||||||
|
- zabbix-server
|
||||||
|
env_file: ./env/.env_web
|
||||||
|
ports:
|
||||||
|
- "0.0.0.0:8080:8080"
|
||||||
|
volumes:
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 256M
|
||||||
|
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
name: zabbix-net
|
||||||
|
driver: bridge
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Detetar Docker Compose
|
||||||
|
if command -v docker &>/dev/null && docker compose version &>/dev/null 2>&1; then
|
||||||
|
COMPOSE_CMD="docker compose"
|
||||||
|
elif command -v docker-compose &>/dev/null; then
|
||||||
|
COMPOSE_CMD="docker-compose"
|
||||||
|
else
|
||||||
|
echo "❌ Docker Compose not found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
ENV_DIR="./env"
|
||||||
|
CRED_FILE="./.credentials"
|
||||||
|
|
||||||
|
# Se já existe configuração, apenas inicia
|
||||||
|
if [[ -f "$ENV_DIR/.env_db" ]]; then
|
||||||
|
echo "[ℹ️] Configuration already exists. Starting services..."
|
||||||
|
$COMPOSE_CMD up -d
|
||||||
|
echo "✅ Running. Access: http://<IP>:8080 | Admin / zabbix"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[+] Generating secure DB passwords..."
|
||||||
|
DB_ROOT_PASS=$(openssl rand -hex 16)
|
||||||
|
DB_ZABBIX_PASS=$(openssl rand -hex 16)
|
||||||
|
|
||||||
|
echo "[+] Creating directories..."
|
||||||
|
mkdir -p "$ENV_DIR" ./data/db ./data/zabbix_server ./backups
|
||||||
|
|
||||||
|
echo "[+] Writing environment files..."
|
||||||
|
cat <<EOF > "$ENV_DIR/.env_db"
|
||||||
|
MYSQL_ROOT_PASSWORD=${DB_ROOT_PASS}
|
||||||
|
MYSQL_DATABASE=zabbix
|
||||||
|
MYSQL_USER=zabbix
|
||||||
|
MYSQL_PASSWORD=${DB_ZABBIX_PASS}
|
||||||
|
MYSQL_CHARSET=utf8mb4
|
||||||
|
MYSQL_COLLATION=utf8mb4_bin
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF > "$ENV_DIR/.env_server"
|
||||||
|
DB_SERVER_HOST=mariadb
|
||||||
|
MYSQL_DATABASE=zabbix
|
||||||
|
MYSQL_USER=zabbix
|
||||||
|
MYSQL_PASSWORD=${DB_ZABBIX_PASS}
|
||||||
|
ZBX_STARTPOLLERS=10
|
||||||
|
ZBX_STARTTRAPPERS=5
|
||||||
|
ZBX_CACHESIZE=256M
|
||||||
|
ZBX_HISTORYCACHESIZE=4M
|
||||||
|
ZBX_VALUECACHESIZE=8M
|
||||||
|
ZBX_TIMEOUT=30
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF > "$ENV_DIR/.env_web"
|
||||||
|
DB_SERVER_HOST=mariadb
|
||||||
|
MYSQL_DATABASE=zabbix
|
||||||
|
MYSQL_USER=zabbix
|
||||||
|
MYSQL_PASSWORD=${DB_ZABBIX_PASS}
|
||||||
|
PHP_TZ=Europe/Lisbon
|
||||||
|
ZBX_SERVER_HOST=zabbix-server
|
||||||
|
ZBX_SERVER_PORT=10051
|
||||||
|
PHP_MAX_EXECUTION_TIME=300
|
||||||
|
PHP_MEMORY_LIMIT=128M
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod 600 "$ENV_DIR"/.env_*
|
||||||
|
|
||||||
|
cat <<EOF > "$CRED_FILE"
|
||||||
|
# Zabbix Credentials - $(date)
|
||||||
|
[Database]
|
||||||
|
DB_ROOT_PASS: ${DB_ROOT_PASS}
|
||||||
|
DB_ZABBIX_PASS: ${DB_ZABBIX_PASS}
|
||||||
|
[Web]
|
||||||
|
User: Admin
|
||||||
|
Pass: zabbix ⚠️ CHANGE ON FIRST LOGIN
|
||||||
|
EOF
|
||||||
|
chmod 600 "$CRED_FILE"
|
||||||
|
|
||||||
|
echo "[+] Starting Zabbix stack..."
|
||||||
|
$COMPOSE_CMD up -d
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=========================================="
|
||||||
|
echo "✅ ZABBIX DEPLOYED"
|
||||||
|
echo "=========================================="
|
||||||
|
echo "🌐 Access: http://<SERVER_IP>:8080"
|
||||||
|
echo "👤 Admin / 🔑 zabbix"
|
||||||
|
echo "🔐 DB credentials: $CRED_FILE"
|
||||||
|
echo ""
|
||||||
Reference in New Issue
Block a user