Det här sätter du upp
Zabbix samlar in mätvärden från dina servrar, till exempel CPU, minne, diskutrymme och nätverkstrafik, ritar grafer av dem och öppnar ett problem när något går fel, som när en disk blir full eller en server slutar svara.
Här körs Zabbix-servern, dess webbgränssnitt och dess PostgreSQL-databas i en pod under en egen användare som heter monitoring, bakom Caddy från Podman-guiden. Varje server du övervakar kör Zabbix-agenten, som skickar sina mätvärden till Zabbix. Agenten på en annan server skickar dem krypterade med en nyckel du skapar, som kallas PSK.
Varje steg nedan har körts på en server hos Melonslab med Debian 13:
- Zabbix 7.0.31 satte upp sin databas själv, och dess webbgränssnitt loggade varje besökares riktiga adress.
- Agenten på servern samlade in serverns mätvärden för CPU, minne och disk. När den stoppades öppnade Zabbix problemet
Zabbix agent is not availableefter tre minuter och stängde det inom en minut efter att agenten startat igen. - En agent på en Debian 13-maskin på en annan adress skickade sina mätvärden krypterade med PSK.
- Allt startade igen av sig självt efter en omstart av servern.
Podden använde omkring 115 MB minne när den övervakade två servrar.
Innan du börjar
Du behöver:
- en server uppsatt som i Podman-guiden, med Caddy igång och ufw från säkerhetsguiden;
- en A-post och en AAAA-post för
zabbix.example.comsom pekar på din server.
Exemplen använder zabbix.example.com för Zabbix, 203.0.113.10 för serverns IPv4-adress, som ip -brief address show eth0 visar, och 198.51.100.30 för en annan server du vill övervaka. Byt ut dem genomgående.
Den här guiden använder Zabbix 7.0, den aktuella versionen med långtidsstöd, med fullt stöd till juni 2027 och säkerhetsuppdateringar till juni 2029.
1. Skapa användaren
Som root:
useradd -m -s /bin/bash monitoring
loginctl enable-linger monitoring
machinectl shell monitoring@
Användaren heter inte zabbix, eftersom agenten i steg 7 skapar en systemanvändare med det namnet.
2. Skapa databaslösenordet
openssl rand -hex 24 | tr -d '\n' | podman secret create zabbix-db-password -
3. Definiera podden
mkdir -p ~/.config/containers/systemd
cd ~/.config/containers/systemd
Skapa zabbix.pod:
[Pod]
PodName=zabbix
# The web interface, reached through Caddy only
PublishPort=127.0.0.1:8094:8080
# Agents send their data here
PublishPort=10051:10051
[Install]
WantedBy=default.target
Skapa zabbix-db.container:
[Container]
ContainerName=zabbix-db
Image=docker.io/library/postgres:16-alpine
Pod=zabbix.pod
Volume=zabbix-db:/var/lib/postgresql/data
Environment=POSTGRES_USER=zabbix POSTGRES_DB=zabbix
Secret=zabbix-db-password,type=env,target=POSTGRES_PASSWORD
AutoUpdate=registry
[Service]
Restart=always
Skapa zabbix-server.container:
[Unit]
After=zabbix-db.service
[Container]
ContainerName=zabbix-server
Image=docker.io/zabbix/zabbix-server-pgsql:alpine-7.0-latest
Pod=zabbix.pod
Environment=DB_SERVER_HOST=127.0.0.1 POSTGRES_USER=zabbix POSTGRES_DB=zabbix
Secret=zabbix-db-password,type=env,target=POSTGRES_PASSWORD
AutoUpdate=registry
[Service]
Restart=always
Och zabbix-web.container:
[Unit]
After=zabbix-server.service
[Container]
ContainerName=zabbix-web
Image=docker.io/zabbix/zabbix-web-nginx-pgsql:alpine-7.0-latest
Pod=zabbix.pod
Environment=DB_SERVER_HOST=127.0.0.1 POSTGRES_USER=zabbix POSTGRES_DB=zabbix
Environment=ZBX_SERVER_HOST=127.0.0.1 PHP_TZ=Europe/Stockholm
# Caddy's connections reach the pod from the server's own IPv4 address.
Environment=WEB_REAL_IP_FROM=203.0.113.10 WEB_REAL_IP_HEADER=X-Forwarded-For
Secret=zabbix-db-password,type=env,target=POSTGRES_PASSWORD
AutoUpdate=registry
[Service]
Restart=always
Taggen alpine-7.0-latest följer varje version av Zabbix 7.0. PHP_TZ sätter tidszonen som webbgränssnittet visar tider i.
4. Starta den
systemctl --user daemon-reload
systemctl --user start zabbix-pod
podman logs -f zabbix-server
Vid första starten skapar servern Zabbix-tabellerna i databasen, vilket tar en minut. När loggen visar server #0 started trycker du Ctrl+C.
5. Sätt Caddy framför
Gå tillbaka till root med exit, byt till machinectl shell caddy@ och lägg till det här blocket sist i ~/Caddyfile:
zabbix.example.com {
reverse_proxy 127.0.0.1:8094
}
Starta om Caddy med systemctl --user restart caddy.
6. Logga in och byt lösenord
Öppna https://zabbix.example.com och logga in som Admin med lösenordet zabbix. Byt det direkt:
- Öppna User settings, sedan Profile, och välj Change password.
- Ange
zabbixsom Current password och ditt nya lösenord under Password och Password (once again). - Välj Update, och OK när Zabbix meddelar att du loggas ut från alla aktiva sessioner.
Logga sedan in igen med det nya lösenordet.
7. Övervaka själva servern
Som root installerar du Zabbix-agenten från Zabbix-projektets eget paketförråd:
cd /tmp
wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.0+debian13_all.deb
dpkg -i zabbix-release_latest_7.0+debian13_all.deb
apt update
apt install -y zabbix-agent2
Agenten skickar redan till 127.0.0.1 och kallar sig Zabbix server, som är namnet på den värd som Zabbix skapade för sig själv. Zabbix ansluter också till agenten för att hämta mätvärden, och med rootless Podman kommer dess anslutningar från serverns egen IPv4-adress, så tillåt den adressen:
sed -i 's/^Server=127.0.0.1$/Server=203.0.113.10/' /etc/zabbix/zabbix_agent2.conf
systemctl restart zabbix-agent2
Gör sedan så här i Zabbix:
- Öppna Data collection, sedan Hosts, och välj Zabbix server.
- Ange
host.containers.internalsom DNS name under Interfaces, och sätt Connect to till DNS. - Välj Update.
Inifrån podden pekar host.containers.internal på servern utanför, där agenten körs. Inom en minut blir den röda ZBX i listan över värdar grön, och Monitoring, Latest data visar serverns mätvärden.
8. Övervaka en annan server
Som root på Zabbix-servern tillåter du den andra servern att skicka till Zabbix:
ufw allow from 198.51.100.30 to any port 10051 proto tcp
Som root på den andra servern installerar du agenten som i steg 7. För ett annat system än Debian 13 väljer du ditt system på Zabbix-projektets nedladdningssida. Ge den sedan ett namn, peka den mot Zabbix och skapa dess nyckel:
sed -i -e 's/^ServerActive=.*/ServerActive=zabbix.example.com/' -e 's/^Hostname=.*/Hostname=web1/' /etc/zabbix/zabbix_agent2.conf
openssl rand -hex 32 > /etc/zabbix/zabbix_agent2.psk
chown zabbix: /etc/zabbix/zabbix_agent2.psk
chmod 600 /etc/zabbix/zabbix_agent2.psk
printf 'TLSConnect=psk\nTLSPSKIdentity=web1\nTLSPSKFile=/etc/zabbix/zabbix_agent2.psk\n' >> /etc/zabbix/zabbix_agent2.conf
systemctl restart zabbix-agent2
cat /etc/zabbix/zabbix_agent2.psk
Den här agenten skickar bara data, så du behöver inte öppna några portar på den andra servern. Gör sedan så här i Zabbix:
- Öppna Data collection, sedan Hosts, och välj Create host.
- Ange
web1som Host name, samma somHostnamei agenten. - Skriv
Linux by Zabbix agent activeunder Templates och välj den. VäljLinux serversunder Host groups. - Öppna fliken Encryption. Avmarkera No encryption och markera PSK under Connections from host. Ange
web1som PSK identity och nyckeln somcatskrev ut som PSK. - Välj Add.
Inom ett par minuter syns mätvärdena från den nya värden under Monitoring, Latest data. Från och med nu nekar Zabbix data för web1 som inte är krypterade med dess nyckel.
9. Se problemen
Dashboards visar aktuella problem, och Monitoring, Problems listar alla, med när vart och ett började och slutade. Mallarna har rimliga gränsvärden från början, till exempel för diskutrymme och minne. För att få problemen via e-post sätter du upp Alerts, Media types och lägger till din adress för din användare under User settings, Profile, Media, som Zabbix-dokumentationen beskriver.
10. Håll den uppdaterad
Slå på Podmans dagliga uppdateringar som monitoring:
systemctl --user enable --now podman-auto-update.timer
Då uppdateras Zabbix automatiskt till den senaste versionen av 7.0, och PostgreSQL till den senaste av 16. Agenterna kommer från Zabbix-förrådet, så kör apt upgrade på varje server för dem: de automatiska uppdateringarna från säkerhetsguiden installerar bara Debians egna säkerhetsuppdateringar. När en nyare version av Zabbix med långtidsstöd släpps läser du dess uppgraderingsanvisningar innan du byter taggarna.
11. Säkerhetskopiera
Som monitoring:
mkdir -p ~/backup
podman exec zabbix-db pg_dump -U zabbix -Fc zabbix > ~/backup/zabbix-db.dump
Databasen innehåller värdarna, mallarna, användarna och alla insamlade mätvärden. Kopiera ~/backup till en annan maskin.
Felsökning
Agentens logg, /var/log/zabbix/zabbix_agent2.log, visar connection from "203.0.113.10" rejected. Raden Server= från steg 7 anger fortfarande 127.0.0.1.
Serverns ZBX förblir röd. Kontrollera gränssnittet från steg 7: host.containers.internal, anslutet med DNS, port 10050.
En annan servers agentlogg visar connection of type "unencrypted" is not allowed. Raderna TLS från steg 8 saknas i agentens konfiguration.
En annan servers agentlogg visar ssl/tls alert handshake failure. Zabbix känner inte till den agenten än, eller så skiljer sig dess PSK-identitet eller nyckel från den i steg 8. Kontrollera att värdnamnet i Zabbix är exakt agentens Hostname.