100 lines
5.1 KiB
Bash
Executable File
100 lines
5.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# =============================================================================
|
||
# Zabbix Agent 2 – Aktiv-Modus Installer (Version 7.4)
|
||
# Unterstützte Systeme: Debian 11/12, Ubuntu 20.04 / 22.04 / 24.04
|
||
#
|
||
# Aufruf:
|
||
# sudo bash install-zabbix-agent.sh <hostname>
|
||
#
|
||
# 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 <hostname>"
|
||
|
||
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)."
|