#!/usr/bin/env bash # ============================================================================= # Zabbix Agent 2 – Aktiv-Modus Installer (Version 7.4) # Unterstützte Systeme: Debian 11/12/13, Ubuntu 20.04 / 22.04 / 24.04 # # Aufruf: # sudo bash install-zabbix-agent.sh # # Beispiel: # sudo bash install-zabbix-agent.sh webserver-prod-01 # ============================================================================= set -euo pipefail # ── Konfiguration ──────────────────────────────────────────────────────────── ZABBIX_SERVER="zabbix.server-nb.de" # <-- Zabbix-Server-Adresse hier eintragen ZABBIX_VERSION="7.4" # ───────────────────────────────────────────────────────────────────────────── # Farben RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m' info() { echo -e "${GREEN}[INFO]${NC} $*"; } warn() { echo -e "${YELLOW}[WARN]${NC} $*"; } error() { echo -e "${RED}[ERROR]${NC} $*" >&2; exit 1; } # ── Prüfungen ──────────────────────────────────────────────────────────────── [[ $EUID -ne 0 ]] && error "Bitte als root oder mit sudo ausführen." [[ $# -lt 1 ]] && error "Kein Hostname angegeben.\nAufruf: $0 " AGENT_HOSTNAME="$1" # ── OS-Erkennung ───────────────────────────────────────────────────────────── if [[ ! -f /etc/os-release ]]; then error "Kein /etc/os-release gefunden – kann OS nicht erkennen." fi source /etc/os-release case "$ID" in debian) REPO_OS="debian"; REPO_CODENAME="${VERSION_CODENAME}" ;; ubuntu) REPO_OS="ubuntu"; REPO_CODENAME="${VERSION_CODENAME}" ;; *) error "Nicht unterstütztes Betriebssystem: $ID" ;; esac info "System erkannt: ${PRETTY_NAME} (${REPO_CODENAME})" # ── Zabbix-Repo einrichten ─────────────────────────────────────────────────── RELEASE_PKG="zabbix-release_latest_${ZABBIX_VERSION}+${REPO_OS}${VERSION_ID}_all.deb" REPO_URL="https://repo.zabbix.com/zabbix/${ZABBIX_VERSION}/release/${REPO_OS}/pool/main/z/zabbix-release/${RELEASE_PKG}" #"Lade Zabbix-Repository-Paket herunter ..." wget -q --show-progress -O "/tmp/${RELEASE_PKG}" "${REPO_URL}" \ || error "Download fehlgeschlagen: ${REPO_URL}" info "Installiere Repository-Paket ..." dpkg -i "/tmp/${RELEASE_PKG}" rm -f "/tmp/${RELEASE_PKG}" apt-get update -qq # ── Zabbix Agent 2 installieren ────────────────────────────────────────────── info "Installiere zabbix-agent2 ..." apt-get install -y -qq zabbix-agent2 # ── Konfiguration schreiben ─────────────────────────────────────────────────── CONF="/etc/zabbix/zabbix_agent2.conf" info "Konfiguriere Zabbix Agent 2 (aktiv, Hostname: ${AGENT_HOSTNAME}) ..." # Hostname setzen sed -i "s|^Hostname=.*|Hostname=${AGENT_HOSTNAME}|" "$CONF" # Aktiven Server setzen sed -i "s|^ServerActive=.*|ServerActive=${ZABBIX_SERVER}|" "$CONF" # Passiver Server (bleibt für lokale Health-Checks; externe Verbindungen # werden durch die Firewall geblockt – ggf. anpassen) sed -i "s|^Server=.*|Server=${ZABBIX_SERVER}|" "$CONF" # HostnameItem deaktivieren, damit der manuell gesetzte Hostname gilt sed -i "s|^# HostnameItem=.*|# HostnameItem=|" "$CONF" 2>/dev/null || true # ── Dienst aktivieren und starten ──────────────────────────────────────────── info "Aktiviere und starte Dienst ..." systemctl enable zabbix-agent2 systemctl restart zabbix-agent2 # ── Ergebnis ───────────────────────────────────────────────────────────────── echo "" info "════════════════════════════════════════════════" info " Zabbix Agent 2 erfolgreich installiert!" info " Hostname : ${AGENT_HOSTNAME}" info " Server : ${ZABBIX_SERVER}" info " Modus : Aktiv" info " Config : ${CONF}" info " Status : $(systemctl is-active zabbix-agent2)" info "════════════════════════════════════════════════" echo "" warn "Denk daran: Den Host '${AGENT_HOSTNAME}' im Zabbix-Frontend anlegen," warn "falls er noch nicht existiert (Configuration → Hosts → Create host)."