
Zabbix: monitorizare la scara enterprise, fara taxa de licenta
Cele mai multe unelte de monitorizare functioneaza bine pana la un anumit numar de host-uri, dupa care fie serverul de monitorizare cade sub propria greutate, fie factura de licenta explodeaza. Zabbix e construit special sa evite ambele: e gandit de la inceput pentru scara mare, si e complet gratuit, indiferent de cate host-uri monitorizezi.
Codul sursa e pe github.com/zabbix/zabbix , sub licenta GPLv2. Compania din spatele lui, Zabbix SIA (Letonia), nu are un model de “editie enterprise” separata cu functii blocate dupa un paywall - toate functiile sunt in versiunea open-source, iar veniturile vin din suport, training si certificare. E o abordare rara in piata de monitorizare, unde de obicei “open-source” inseamna “versiune redusa a produsului platit”.
Ce este, mai exact, Zabbix
Zabbix exista din 1998, creat de Alexei Vladishev, si a trecut prin mai multe generatii arhitecturale pana la forma actuala. Componentele principale: Zabbix server (motorul central, proceseaza date si evalueaza trigger-e), Zabbix proxy (opional, colecteaza date local intr-o retea segmentata si le trimite comprimat catre server), agenti (Zabbix Agent 2, rescris in Go, activ sau pasiv) si un frontend in PHP pentru administrare si vizualizare. Datele istorice se stocheaza in MySQL, PostgreSQL sau, pentru volume mari, PostgreSQL cu extensia TimescaleDB.
Modelul de date e simplu de inteles odata ce-l vezi: un item e o singura metrica colectata (CPU load, spatiu liber pe disk, timp de raspuns HTTP). Un trigger e o expresie logica peste unul sau mai multe item-uri, care schimba starea intre OK si Problem. O actiune defineste ce se intampla cand un trigger se declanseaza: trimite notificare, ruleaza o comanda de remediere, escaladeaza dupa un interval daca nimeni nu confirma. Peste toate astea stau template-urile: bundle-uri reutilizabile de item-uri, trigger-e si grafice, atasate unei clase de host-uri (toate switch-urile Cisco, toate serverele MySQL) si mostenite automat.
De ce conteaza asta
Diferentiatorul real al Zabbix e proxy-ul. Cand ai o retea segmentata - un site remote, un VLAN izolat, un datacenter secundar fara conectivitate directa la serverul central - un proxy Zabbix ruleaza local, colecteaza toate datele acolo, si le trimite comprimat printr-un singur tunel catre server. Serverul central nu mai trebuie sa deschida conexiuni catre mii de agenti individuali; vorbeste doar cu proxy-uri. Asta e ceea ce permite scalarea de la cateva zeci la zeci de mii de device-uri monitorizate fara sa reproiectezi arhitectura.
Ce primesti din cutie
- Colectare prin multiple canale: Zabbix Agent 2 (activ sau pasiv), SNMP, IPMI, JMX (prin Java gateway), HTTP agent pentru webhook-uri si integrari custom, si item-uri calculate din alte item-uri.
- Auto-discovery pe doua niveluri: discovery de retea (scaneaza un range de IP-uri si adauga host-uri noi) si low-level discovery (LLD) pentru entitati dinamice in interiorul unui host - filesystem-uri, interfete de retea, procese - care apar si dispar in timp.
- O biblioteca mare de template-uri, oficiale si de la comunitate, pentru sisteme de operare, echipamente de retea de zeci de producatori si aplicatii comune.
- Dependinte intre trigger-e, ca sa nu primesti 50 de alerte de “host down” cand pica de fapt un singur switch upstream.
- Actiuni cu escaladare pe mai multi pasi, cu retrimitere si canale diferite in functie de cat timp a trecut fara confirmare.
- Harti de retea pentru vizualizare topologica si dashboard-uri configurabile cu widget-uri.
- Monitorizare distribuita prin proxy-uri, pentru retele segmentate sau fleet-uri foarte mari.
Instalare Zabbix pe un VPS
Cel mai curat mod de a incerca Zabbix e prin Docker Compose, cu backend PostgreSQL:
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: zabbix
POSTGRES_PASSWORD: change_me
POSTGRES_DB: zabbix
volumes:
- pgdata:/var/lib/postgresql/data
zabbix-server:
image: zabbix/zabbix-server-pgsql:6.4-alpine-latest
environment:
DB_SERVER_HOST: postgres
POSTGRES_USER: zabbix
POSTGRES_PASSWORD: change_me
depends_on: [postgres]
zabbix-web:
image: zabbix/zabbix-web-nginx-pgsql:6.4-alpine-latest
environment:
DB_SERVER_HOST: postgres
POSTGRES_USER: zabbix
POSTGRES_PASSWORD: change_me
ZBX_SERVER_HOST: zabbix-server
ports:
- "8080:8080"
depends_on: [zabbix-server]
zabbix-agent:
image: zabbix/zabbix-agent2:6.4-alpine-latest
environment:
ZBX_HOSTNAME: vps-monitor
ZBX_SERVER_HOST: zabbix-server
volumes:
pgdata:
docker compose up -d porneste tot stack-ul. Frontend-ul e la portul 8080, iar login-ul implicit e Admin / zabbix - schimba-l imediat.
Pentru firewall, cu ufw, expune doar ce trebuie public (nimic, ideal - pune frontend-ul dupa un reverse proxy):
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw deny 8080/tcp
ufw deny 10050/tcp # port agent, restrictionat doar la IP-ul serverului Zabbix
ufw enable
Portul 10050 (agent pasiv) trebuie accesibil doar de pe IP-ul serverului sau proxy-ului Zabbix, nu din internet larg - ufw allow from <ip-server> to any port 10050. Un VPS
cu 2 GB RAM tine confortabil serverul + frontend-ul pentru cateva sute de host-uri; pentru mii de host-uri, adauga proxy-uri separate.
Tipare de configurare care merita stiute
Proxy-uri pentru retele segmentate
Daca ai o filiala, un VLAN izolat sau un site fara conectivitate directa catre serverul central, un proxy Zabbix local rezolva problema fara VPN complicat: proxy-ul colecteaza tot local si trimite un singur flux comprimat catre server. E si mai usor pentru firewall - un singur port deschis in loc de sute de conexiuni individuale.
Low-level discovery pentru entitati dinamice
In loc sa configurezi manual monitorizarea pentru fiecare disk sau interfata de retea, LLD scaneaza periodic host-ul si creeaza/sterge item-uri automat pe baza a ce gaseste. Cand adaugi un disk nou pe un server, LLD il prinde la urmatoarea rulare, fara sa umbli in configuratie.
Dependinte de trigger ca sa taie zgomotul
Cand un switch de acces cade, fara dependinte configurate primesti o alerta pentru fiecare host din spatele lui. Cu o dependinta setata (host-urile depind de disponibilitatea switch-ului), Zabbix suprima alertele derivate si iti arata o singura problema reala: switch-ul.
TimescaleDB pentru compresie de istoric la scara
Daca stochezi date de la mii de item-uri pe termen lung, PostgreSQL simplu incepe sa sufere la spatiu si performanta de query. Extensia TimescaleDB, suportata nativ de Zabbix, comprima automat datele vechi si accelereaza interogarile pe intervale mari.
Unde Zabbix nu e raspunsul potrivit
Pentru un homelab sau 3-5 VPS-uri, Zabbix e clar prea mult. Curba de invatare (items, triggers, actions, templates, proxies) nu se justifica pentru un fleet mic; acolo un Uptime Kuma sau un Gatus fac treaba in cateva minute.
UI-ul e functional, dar arata si se simte “enterprise clasic” - nu ai experienta de explorare libera pe care ti-o da Grafana peste date de tip timeserie. Multe echipe folosesc Zabbix ca sursa de date, cu plugin-ul oficial Grafana, exact ca sa combine motorul solid de colectare/alerting al Zabbix cu explorarea vizuala moderna.
Nici nu e ideal pentru workload-uri cloud-native efemere, unde containere apar si dispar in secunde. Modelul lui de discovery presupune ca un host exista suficient timp cat sa fie descoperit, configurat si monitorizat; pentru medii unde totul e efemer, un model de tip Prometheus (pull cu service discovery integrat in orchestrator) se potriveste mai natural.
Alternative pe care le-am luat in calcul
Checkmk ofera un flux de discovery mai automatizat din prima si un accent mai puternic pe ITIL, in schimbul unei flexibilitati putin mai mici in modelul de date.
Prometheus/VictoriaMetrics + Grafana raman alegerea noastra pentru corelare vizuala si interogari ad-hoc peste metrici - am scris de ce le folosim intr-un articol dedicat.
Nagios/Icinga raman relevante pentru echipe care vor control granular de jos in sus, dar fara scalabilitatea nativa prin proxy pe care o are Zabbix.
Deci, sa-l rulezi?
Daca administrezi o infrastructura mare, cu multe echipamente de retea, filiale sau VLAN-uri segmentate, si vrei un sistem matur, gratuit si testat la scara enterprise, Zabbix e o alegere solida. Daca fleet-ul tau e mic, incepe cu ceva mai simplu si revino la Zabbix cand cresti.
Poti incepe testul pe un VPS de la noi in cateva minute cu stack-ul de mai sus, sau lasa echipa noastra de administrare de servere sa se ocupe de instalare, proxy-uri si template-uri de la capat.