GuiderFöretag och övervakningÖvervakning med Zabbix

Övervaka dina servrar med Zabbix och Podman utan root

Zabbix 7.0 LTS på Debian 13 i rootless Podman under en egen användare bakom Caddy, som övervakar själva servern och dina andra servrar via agenter som skickar sina data krypterat.

Testad på Zabbix 7.0.31 på Debian 13 (trixie) på en server hos Melonslab Uppdaterad 26 september 2026

Rekommenderad server för guiden

VC-S Micro · 2 vCPU · 8 GB Minne · 250 GB Lagring

Månadsvis, ingen bindningstid 7 dagars öppet köp

90 kr/mån

Beställ nu
På den här sidan

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 available efter 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.com som 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 zabbix som 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.internal som 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 web1 som Host name, samma som Hostname i agenten.
  • Skriv Linux by Zabbix agent active under Templates och välj den. Välj Linux servers under Host groups.
  • Öppna fliken Encryption. Avmarkera No encryption och markera PSK under Connections from host. Ange web1 som PSK identity och nyckeln som cat skrev 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.

Kör det på din egen server

VC-S Micro

90 kr/mån

vCPU
2
Minne
8 GB
Lagring
250 GB
Trafik
10 TB
Standard
HDD · RAID 10
  • Full root-åtkomst
  • Nativt /64 IPv6
  • RAID-skyddad lagring
  • Malmö, Sverige
  • Månadsvis, ingen bindningstid
  • 7 dagars öppet köp
Alla guider