Files
zabbix-agent-deployment/install-zabbix-agent.sh

100 lines
5.1 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 <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)."