GuíasGuides · Sector 1Sector 1

Zabbix: monitorizar un restaurante o un hotel, con los TPV, las impresoras de cocina e internet vigilados antes del servicioZabbix: monitoring a restaurant or hotel, with the POS, kitchen printers and internet watched before service

Cómo vigilar un local de hostelería con Zabbix 7.0 LTS: servidor y proxy, agentes en el servidor del TPV, ICMP para terminales e impresoras, SNMP para la red y el SAI, los triggers que importan antes de abrir, avisos por correo y Telegram, mantenimientos y una tormenta de alertas un sábado a las 13:05.How to watch a hospitality venue with Zabbix 7.0 LTS: server and proxy, agents on the POS server, ICMP for tills and printers, SNMP for the network and UPS, the triggers that matter before opening, email and Telegram alerts, maintenance periods and an alert storm on a Saturday at 13:05.

Qué vas a conseguir

Que el móvil de la guardia suene antes que el teléfono del encargado: Zabbix vigilando internet, el servidor del TPV y su base de datos, las impresoras de cocina, los terminales, la red y el SAI del local. Con avisos que llegan solo cuando importan, y silencio mientras el local está cerrado.

Antes de empezar

  • La versión: Zabbix 7.0 LTS (junio de 2024, soporte completo hasta junio de 2027). La 8.0 LTS está en release candidate a finales de octubre de 2026: para producción, 7.0 hasta su primera versión de correcciones. La 6.0 LTS ya solo tiene soporte limitado: planifica la actualización.
  • Dónde va cada pieza: un servidor central y un Zabbix proxy en cada local, en un equipo pequeño siempre encendido, que sigue recogiendo datos aunque se caiga internet. Con el servidor dentro del local, sus avisos dependen de la misma línea que vigila.
  • El inventario del local con IP fijas o reservas de DHCP (guía de ICG y HIOPOS).
  • SNMP de solo lectura, mejor SNMPv3; con v2c, nunca la comunidad public.
  • Puertos: 10050/TCP del proxy al agente y 10051/TCP hacia el servidor. Con el proxy en modo activo, el local solo necesita salida.
  • El horario de servicio (comidas, cenas, desayunos del hotel) y quién está de guardia cada día.

1. Servidor, proxy y agentes

El servidor central, en Ubuntu 24.04 con PostgreSQL y Nginx, desde el repositorio oficial:

Bash · servidor central (Ubuntu 24.04)
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.debsudo dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb && sudo apt updatesudo apt install zabbix-server-pgsql zabbix-frontend-php php8.3-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2sudo -u postgres createuser --pwprompt zabbixsudo -u postgres createdb -O zabbix zabbixzcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix# DBPassword en /etc/zabbix/zabbix_server.conf; listen y server_name en /etc/nginx/conf.d/zabbix.confsudo systemctl restart zabbix-server zabbix-agent2 nginx php8.3-fpmsudo systemctl enable zabbix-server zabbix-agent2 nginx php8.3-fpm

En el local, el paquete zabbix-proxy-sqlite3 y tres líneas que deciden casi todo en /etc/zabbix/zabbix_proxy.conf:

zabbix_proxy.conf · proxy del local
ProxyMode=0Server=zabbix.corp.exampleHostname=PRX-BRISADBName=/var/lib/zabbix/zabbix_proxy.dbProxyOfflineBuffer=24
  • ProxyMode=0 es activo: el proxy llama al servidor, no al revés. El Hostname tiene que coincidir con el nombre dado en Administration › Proxies.
  • ProxyOfflineBuffer son las horas que el proxy guarda datos sin conexión. Por defecto es 1: un corte de internet de una tarde se pierde. Con 24 horas cubres una noche entera.
  • En el servidor del TPV (Windows), Zabbix Agent 2 con el MSI: Server y ServerActive apuntan al proxy, y el 10050 abierto solo desde él.

2. Plantillas: qué vigilar en cada equipo

EquipoCómoPlantilla
Servidor del TPV (Windows)Agente 2Windows by Zabbix agent, más el servicio de la base de datos
Servidor Linux del local, si lo hayAgente 2Linux by Zabbix agent
Terminales TPV, comanderos, pantallas de cocinaICMPICMP Ping
Impresoras de cocina y de ticketsICMP y puerto 9100ICMP Ping más una comprobación TCP
Switches HP y TP-LinkSNMPHP Enterprise Switch by SNMP, TP-LINK by SNMP o Network Generic Device by SNMP
Router MikroTikSNMPLas plantillas de MikroTik por SNMP (una por familia de modelo)
SAISNMPAPC UPS by SNMP o la del fabricante
  • ICMP Ping necesita fping en el proxy. Da tres elementos (icmpping, icmppingloss, icmppingsec) y el trigger Unavailable by ICMP ping.
  • Una impresora puede responder al ping con la tapa abierta o sin papel. El elemento que de verdad dice si acepta comandas es el puerto de impresión: comprobación simple net.tcp.service[tcp,,9100] cada minuto, no más a menudo.
  • Los datáfonos van en su red de pagos. Solo se vigilan si la segmentación lo permite y está documentado en el alcance de PCI DSS; si no, se quedan fuera.
  • Un grupo de hosts por local (Locales/Brisa) y etiquetas (servicio:tpv, servicio:sala).

3. Los triggers que importan antes del servicio

Cinco problemas paran un servicio. Cada uno con un trigger claro y la severidad que le corresponde:

Zabbix · Data collection › Hosts › triggers del local
Internet caído (High)max(/PRX-BRISA/icmpping[1.1.1.1],3m)=0 and max(/PRX-BRISA/icmpping[8.8.8.8],3m)=0
Proxy del local sin contacto (High)fuzzytime(/Zabbix server/zabbix[proxy,"PRX-BRISA",lastaccess],300)=0
Impresora de cocina sin servicio (High)max(/IMP-COC-CALIENTE/net.tcp.service[tcp,,9100],2m)=0
Base de datos del TPV parada (Disaster)last(/SRV-TPV-BRISA/service.info["MSSQL$TPV",state])<>0
SAI en batería (High)trigger de la plantilla del SAI
  • Internet se mide desde el local contra dos destinos a la vez: uno solo da falsas alarmas. El del proxy sin contacto salta en el servidor central cuando el local entero desaparece.
  • Con 4G de respaldo, la caída de la fibra no corta el servicio, pero hay que saberlo: el trigger de enlace caído de la WAN en la plantilla del router, como Warning.
  • service.info[...,state] devuelve 0 con el servicio en marcha (6 es detenido, 255 que no existe). El nombre, como MSSQL$TPV, sale de services.msc.

4. Avisos a la guardia: correo y Telegram

Primero los tipos de medio, en Alerts › Media types:

  • Email: servidor SMTP, puerto 587 con STARTTLS y una cuenta propia para Zabbix.
  • Telegram: el tipo de medio viene incluido. Crea un bot con @BotFather, pega el token en el parámetro api_token y prueba con Test. En cada usuario, en Users › Users › Media, el tipo Telegram con el chat ID en Send to.

En el medio de cada usuario, When active limita las horas (1-7,11:00-24:00) y las severidades que le llegan. Después la acción, en Alerts › Actions › Trigger actions:

Zabbix · Alerts › Actions › Trigger actions › Locales en servicio
ConditionsHost group equals Locales/Brisa · Trigger severity is greater than or equals High
Operations
Paso 1 (0 min)enviar a Guardia IT por Telegram
Paso 2 (10 min)enviar a Responsable de operaciones por Telegram y correo · solo si no está reconocido
Pause operations for suppressed problems
Recovery operationsavisar a Guardia IT de que se ha resuelto
Update
  • Reconocer (acknowledge) el problema corta el paso 2.
  • El mensaje lleva {HOST.NAME}, {TRIGGER.NAME} y {EVENT.SEVERITY}: local y equipo sin abrir el portátil.

5. Mantenimientos: cierre, descanso semanal y cambios

Un local cerrado no es una incidencia. Los mantenimientos, en Data collection › Maintenance:

Zabbix · Data collection › Maintenance › Cierre nocturno Brisa
Maintenance typeWith data collection
Active since2026-11-01 00:00 · Active till: 2027-12-31 23:59
PeriodsWeekly · todos los días · desde 01:30 · duración 8 h
PeriodsWeekly · lunes · desde 00:00 · duración 1 d (descanso semanal)
Host groupsLocales/Brisa · Tags: servicio:sala
Add
  • With data collection sigue guardando datos: el martes ves qué pasó el lunes. Los problemas se marcan como suprimidos y, con Pause operations for suppressed problems, no avisan.

Un mantenimiento sin fecha de fin, o que abarca todo el local, esconde también la caída de verdad. Limítalo por etiquetas y ponle siempre final.

6. El ticket: "una tormenta de alertas a las 13:05"

Sábado, 13:05. A la guardia le llegan 47 mensajes de Telegram en dos minutos: todos los TPV, los comanderos, las impresoras y la pantalla de cocina de un mismo local, sin respuesta. La sala está llena.

  1. El primero de la lista: en Monitoring › Problems, filtrado por el local y ordenado por hora, el primero es SW-BRISA-01: Unavailable by ICMP ping a las 13:04:40. Lo demás es consecuencia: un problema real y 46 copias.
  2. Confirmar en el local: el switch está apagado; alguien ha desenchufado la regleta de la barra para una cafetera. A las 13:08 todo responde.
  3. Reconocer el problema con lo ocurrido: se para la escalada.
  4. Dependencias de triggers: cada trigger de TPV, impresora y pantalla del local depende del ping de SW-BRISA-01, y el switch depende de Proxy del local sin contacto. En los triggers que vienen de plantilla, la dependencia se añade en el host, en la pestaña Dependencies. Con eso, la próxima vez llega un único aviso: el del switch.
  5. El ruido de los comanderos: se apagan al cargarse cada noche y algunos se duermen a media tarde. Severidad Warning, sin aviso, y un trigger con recuperación separada: problema con max(/CMD-01/icmpping,#5)=0 y recuperación con min(/CMD-01/icmpping,#3)=1, para que no abra y cierre cada minuto.
  6. El cierre: causa (regleta compartida), acción (switch al SAI) y mejora (dependencias en los demás locales).

Siguientes pasos

  • La guía de ICG y HIOPOS tiene el inventario de terminales e impresoras que alimenta a Zabbix.
  • La red que vigilas aquí, con sus VLAN y el 4G de respaldo, está en la guía de MikroTik y TP-Link: red y WiFi de un restaurante u hotel.
  • La revisión de cada mañana antes del servicio (terminales, comanderos, impresoras de cocina y la línea de respaldo) es la idea del repositorio 34-venue-service-readiness de mi GitHub.

¿Falta algo o en tu entorno es distinto? Escríbeme y lo corrijo.

What you'll get

The on-call phone rings before the manager's does: Zabbix watching the internet, the POS server and its database, the kitchen printers, the tills, the network and the venue's UPS. With alerts that arrive only when they matter, and silence while the venue is closed.

Before you start

  • The version: Zabbix 7.0 LTS (June 2024, full support until June 2027). 8.0 LTS is at release candidate at the end of October 2026: for production, 7.0 until its first bug-fix release. 6.0 LTS now only has limited support: plan the upgrade.
  • Where each piece goes: a central server and a Zabbix proxy in each venue, on a small box that is always on, which keeps collecting data when internet drops. With the server inside the venue, its alerts depend on the same line it is watching.
  • The venue's inventory with fixed IPs or DHCP reservations (ICG and HIOPOS guide).
  • Read-only SNMP, preferably SNMPv3; with v2c, never the public community.
  • Ports: 10050/TCP from the proxy to the agent and 10051/TCP towards the server. With the proxy in active mode, the venue only needs outbound access.
  • The service hours (lunch, dinner, hotel breakfast) and who is on call each day.

1. Server, proxy and agents

The central server, on Ubuntu 24.04 with PostgreSQL and Nginx, from the official repository:

Bash · central server (Ubuntu 24.04)
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.debsudo dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb && sudo apt updatesudo apt install zabbix-server-pgsql zabbix-frontend-php php8.3-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2sudo -u postgres createuser --pwprompt zabbixsudo -u postgres createdb -O zabbix zabbixzcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix# DBPassword in /etc/zabbix/zabbix_server.conf; listen and server_name in /etc/nginx/conf.d/zabbix.confsudo systemctl restart zabbix-server zabbix-agent2 nginx php8.3-fpmsudo systemctl enable zabbix-server zabbix-agent2 nginx php8.3-fpm

In the venue, the zabbix-proxy-sqlite3 package and a few lines in /etc/zabbix/zabbix_proxy.conf that decide almost everything:

zabbix_proxy.conf · venue proxy
ProxyMode=0Server=zabbix.corp.exampleHostname=PRX-BRISADBName=/var/lib/zabbix/zabbix_proxy.dbProxyOfflineBuffer=24
  • ProxyMode=0 is active: the proxy calls the server, not the other way round. The Hostname must match the name given in Administration › Proxies.
  • ProxyOfflineBuffer is how many hours the proxy keeps data without a connection. The default is 1: an afternoon internet outage is lost. With 24 hours you cover a whole night.
  • On the POS server (Windows), Zabbix Agent 2 from the MSI: Server and ServerActive point to the proxy, and 10050 open only from it.

2. Templates: what to watch on each device

DeviceHowTemplate
POS server (Windows)Agent 2Windows by Zabbix agent, plus the database service
The venue's Linux server, if anyAgent 2Linux by Zabbix agent
POS tills, handhelds, kitchen screensICMPICMP Ping
Kitchen and receipt printersICMP and port 9100ICMP Ping plus a TCP check
HP and TP-Link switchesSNMPHP Enterprise Switch by SNMP, TP-LINK by SNMP or Network Generic Device by SNMP
MikroTik routerSNMPThe MikroTik SNMP templates (one per model family)
UPSSNMPAPC UPS by SNMP or the vendor's own
  • ICMP Ping needs fping on the proxy. It provides three items (icmpping, icmppingloss, icmppingsec) and the Unavailable by ICMP ping trigger.
  • A printer can answer ping with its lid open or out of paper. The item that really tells you whether it accepts orders is the print port: a simple check net.tcp.service[tcp,,9100] every minute, not more often.
  • Card terminals live on their payments network. They are only monitored if the segmentation allows it and it is documented in the PCI DSS scope; otherwise they stay out.
  • One host group per venue (Venues/Brisa) and tags (service:pos, service:floor).

3. The triggers that matter before service

Five problems stop a service. Each one with a clear trigger and the severity it deserves:

Zabbix · Data collection › Hosts › venue triggers
Internet down (High)max(/PRX-BRISA/icmpping[1.1.1.1],3m)=0 and max(/PRX-BRISA/icmpping[8.8.8.8],3m)=0
Venue proxy not in contact (High)fuzzytime(/Zabbix server/zabbix[proxy,"PRX-BRISA",lastaccess],300)=0
Kitchen printer not accepting jobs (High)max(/IMP-COC-CALIENTE/net.tcp.service[tcp,,9100],2m)=0
POS database stopped (Disaster)last(/SRV-TPV-BRISA/service.info["MSSQL$TPV",state])<>0
UPS on battery (High)trigger from the UPS template
  • Internet is measured from the venue against two targets at once: a single one gives false alarms. The proxy-not-in-contact one fires on the central server when the whole venue disappears.
  • With 4G backup, losing the fibre does not stop service, but you need to know: the WAN link-down trigger in the router template, as Warning.
  • service.info[...,state] returns 0 with the service running (6 is stopped, 255 that it does not exist). The name, such as MSSQL$TPV, comes from services.msc.

4. Alerting the on-call: email and Telegram

First the media types, in Alerts › Media types:

  • Email: SMTP server, port 587 with STARTTLS and a dedicated account for Zabbix.
  • Telegram: the media type is built in. Create a bot with @BotFather, paste the token into the api_token parameter and try it with Test. On each user, in Users › Users › Media, the Telegram type with the chat ID in Send to.

On each user's media, When active limits the hours (1-7,11:00-24:00) and the severities they receive. Then the action, in Alerts › Actions › Trigger actions:

Zabbix · Alerts › Actions › Trigger actions › Venues in service
ConditionsHost group equals Venues/Brisa · Trigger severity is greater than or equals High
Operations
Step 1 (0 min)send to IT On-call via Telegram
Step 2 (10 min)send to Operations Manager via Telegram and email · only if not acknowledged
Pause operations for suppressed problems
Recovery operationstell IT On-call it has been resolved
Update
  • Acknowledging the problem stops step 2.
  • The message carries {HOST.NAME}, {TRIGGER.NAME} and {EVENT.SEVERITY}: venue and device without opening a laptop.

5. Maintenance periods: closing time, the weekly day off and changes

A closed venue is not an incident. Maintenance periods, in Data collection › Maintenance:

Zabbix · Data collection › Maintenance › Brisa night closure
Maintenance typeWith data collection
Active since2026-11-01 00:00 · Active till: 2027-12-31 23:59
PeriodsWeekly · every day · from 01:30 · duration 8 h
PeriodsWeekly · Monday · from 00:00 · duration 1 d (weekly day off)
Host groupsVenues/Brisa · Tags: service:floor
Add
  • With data collection keeps storing data: on Tuesday you can see what happened on Monday. Problems are marked as suppressed and, with Pause operations for suppressed problems, they do not alert.

A maintenance period with no end date, or one that covers the whole venue, also hides the real outage. Limit it by tags and always give it an end.

6. The ticket: "an alert storm at 13:05"

Saturday, 13:05. The on-call gets 47 Telegram messages in two minutes: every till, handheld, printer and the kitchen screen of the same venue, not responding. The dining room is full.

  1. The first one on the list: in Monitoring › Problems, filtered by the venue and sorted by time, the first is SW-BRISA-01: Unavailable by ICMP ping at 13:04:40. The rest are consequences: one real problem and 46 copies.
  2. Confirm in the venue: the switch is off; someone unplugged the bar's power strip for a coffee machine. By 13:08 everything responds.
  3. Acknowledge the problem with what happened: the escalation stops.
  4. Trigger dependencies: every till, printer and screen trigger in the venue depends on SW-BRISA-01's ping, and the switch depends on Venue proxy not in contact. For triggers that come from a template, the dependency is added on the host, in the Dependencies tab. With that, next time a single alert arrives: the switch's.
  5. The handheld noise: they switch off while charging every night and some go to sleep mid-afternoon. Warning severity, no notification, and a trigger with a separate recovery: problem with max(/CMD-01/icmpping,#5)=0 and recovery with min(/CMD-01/icmpping,#3)=1, so it does not open and close every minute.
  6. Closing: cause (shared power strip), action (switch on the UPS) and improvement (dependencies in the other venues).

Next steps

  • The ICG and HIOPOS guide has the inventory of tills and printers that feeds Zabbix.
  • The network you are watching here, with its VLANs and 4G backup, is in the MikroTik and TP-Link: network and WiFi for a restaurant or hotel guide.
  • The morning check before service (tills, handhelds, kitchen printers and the backup line) is the idea behind the 34-venue-service-readiness repository on my GitHub.

Is something missing, or different in your environment? Get in touch and I'll fix it.

Tech Career Lab · newsletter

¿Te ha servido? Cada dos semanas envío una idea práctica para perfiles IT: LinkedIn, proyectos, networking y procesos de selección.Found this useful? Every two weeks I send one practical idea for IT professionals: LinkedIn, projects, networking and hiring processes.

Apúntate y llévate las 33 ideasSign up and get the 33 ideas →