Overview
In the monitoring system space, Zabbix and Prometheus are the two giants. Zabbix comes from the traditional operations era, dominating physical machine/VM environments for nearly 25 years; Prometheus rose in the cloud-native era, becoming the de facto standard for the Kubernetes ecosystem. Many teams face a question when choosing a monitoring system: Zabbix or Prometheus?
The answer isn’t either/or. Many mature teams run both systems simultaneously in production — Zabbix handles the infrastructure layer (network, hardware, OS), while Prometheus handles the application and cloud-native layers. This article comprehensively compares the two across architecture, data models, alerting, ecosystems, and use cases to help you make a reasonable selection decision.
Reference: Zabbix Official Documentation, Prometheus Official Documentation
I. Architecture Comparison
1.1 Zabbix Architecture
Zabbix uses a classic C/S architecture with core components including Server, Database, Web Frontend, and Agent.
┌──────────────────────────────────────────────────────────┐
│ Zabbix Architecture │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Agent │ │ SNMP │ │ JMX │ ← Monitored │
│ │ (active/ │ │ devices │ │ Java │ │
│ │ passive)│ │ │ │ │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │
│ └──────────────┼──────────────┘ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Zabbix Server│ ← Scrape + alert engine │
│ │ (C language) │ │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Database │ ← MySQL/PostgreSQL │
│ │ (relational)│ │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Web Frontend│ ← PHP frontend │
│ │ (Dashboard) │ │
│ └─────────────┘ │
│ │
│ ┌──────────────┐ │
│ │ Zabbix Proxy │ ← Distributed collection proxy │
│ │ (regional) │ (optional) │
│ └──────────────┘ │
└──────────────────────────────────────────────────────────┘
Zabbix architecture characteristics:
- Centralized Server: All collection, storage, and alerting logic in the Server process
- Relational database: Uses MySQL/PostgreSQL for historical data and configuration
- Agent-based collection: Zabbix Agent installed on monitored hosts, supporting active and passive modes
- Proxy tiering: Zabbix Proxy as regional collection proxy for large-scale distributed monitoring
- Integrated Web UI: Built-in PHP web frontend; configuration and viewing done in the UI
1.2 Prometheus Architecture
Prometheus uses a pull-based model with core components including Server, Exporters, Pushgateway, and Alertmanager.
┌──────────────────────────────────────────────────────────┐
│ Prometheus Architecture │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Exporter │ │ Exporter │ │Pushgatew │ ← Monitored │
│ │ (node) │ │ (mysql) │ │ (short │ │
│ │ │ │ │ │ jobs) │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │
│ │ ←── Pull ───┤──────────────┤ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────┐ │
│ │ Prometheus │ ← Scrape engine │
│ │ Server │ (TSDB) │
│ │ (Go) │ │
│ └──────┬───────┘ │
│ │ │
│ ┌──────────┼──────────┐ │
│ ▼ ▼ ▼ │
│ ┌──────────┐ ┌────────┐ ┌──────────┐ │
│ │ Grafana │ │Rules │ │Alertmanager│ │
│ │ (viz) │ │(alerts)│ │(dispatch) │ │
│ └──────────┘ └────────┘ └──────────┘ │
└──────────────────────────────────────────────────────────┘
Prometheus architecture characteristics:
- Decentralized design: Server scrapes independently, no external database dependency
- Time-series database (TSDB): Built-in TSDB, columnar storage, no external database
- Pull-based collection: Server actively pulls Exporter data; agent push not supported (Pushgateway is the exception)
- Component decoupling: Collection, storage, visualization, and alerting are independent components
- No Web UI: Built-in UI is basic; primarily relies on Grafana
1.3 Core Architecture Differences
| Dimension | Zabbix | Prometheus |
|---|---|---|
| Collection model | Push (Agent → Server) | Pull (Server → Exporter) |
| Storage | External relational DB (MySQL/PG) | Built-in TSDB |
| Language | C (Server) / Go (Agent 2.0) | Go |
| Web UI | Built-in complete PHP frontend | Basic UI, mainly relies on Grafana |
| Configuration | Web UI + database | YAML config files + CI/CD |
| Scaling | Zabbix Proxy regional proxy | Federation / remote storage |
| Alerting component | Built-in alert engine | Standalone Alertmanager |
| Agent type | Zabbix Agent / Agent 2 | Dedicated Exporters (Node Exporter, etc.) |
II. Data Model Comparison
2.1 Zabbix Data Model
Zabbix uses a relational data model with core concepts:
- Host: A monitored device or virtual host
- Item: A single metric on a host, e.g., CPU usage, disk space
- Trigger: An expression based on Item values that fires an alert when conditions are met
- Template: A collection of Items + Triggers + Graphs that can be batch-applied to Hosts
- Application: A logical grouping of Items
Zabbix data model:
Template
├── Application: CPU
│ ├── Item: CPU idle time
│ ├── Item: CPU user time
│ └── Item: CPU system time
├── Trigger: CPU usage > 80% for 5m
└── Graph: CPU Overview
Host
← Inherits Template
├── Item instantiation
└── Trigger instantiation
Zabbix data model advantages:
- Intuitive hierarchical relationships, suited for traditional infrastructure
- Template supports batch management, operations-friendly
- Database storage enables complex queries and reporting
Zabbix data model disadvantages:
- Relational database performance bottlenecks under high-concurrency writes
- Database I/O becomes a bottleneck at scale
- Each Item is independently configured, limited automation capability
2.2 Prometheus Data Model
Prometheus uses a multi-dimensional label data model with core concepts:
- Metric: A time series uniquely identified by name + label set
- Label: Metric dimensions, e.g.,
instance,job,env - Time Series: A sequence of (timestamp, value) pairs
- Job: A group of similar scrape targets
Prometheus data model:
Metric name: node_cpu_seconds_total
Labels:
instance = "web-01:9100"
job = "node"
cpu = "0"
mode = "idle"
Time series: [(t1, v1), (t2, v2), (t3, v3), ...]
Query: avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m]))
→ Returns CPU idle rate per instance
Prometheus data model advantages:
- Multi-dimensional labels naturally suited for microservices and container environments
- PromQL’s powerful aggregation and computation capabilities
- TSDB columnar storage, high write and query efficiency
- Declarative configuration, GitOps and automation friendly
Prometheus data model disadvantages:
- Not suitable for storing text/log-type data
- Local storage has retention time limits (default 15 days)
- Steeper learning curve; PromQL takes time to master
2.3 Data Model Use Case Comparison
| Scenario | Zabbix | Prometheus |
|---|---|---|
| Server CPU/memory/disk | ✓ Native support | ✓ node-exporter |
| Network devices (SNMP) | ✓ Native support | ✓ snmp-exporter |
| Hardware monitoring (IPMI) | ✓ Native support | ✓ ipmi-exporter |
| Database monitoring | ✓ Zabbix Agent | ✓ mysqld-exporter |
| Kubernetes monitoring | △ Via external scripts | ✓ Native support |
| Microservice metrics | △ Custom scripts | ✓ Standard format |
| Log analysis | ✓ Supported (not a strength) | ✗ Not supported (use Loki) |
| Text/event monitoring | ✓ Supported | ✗ Not supported |
| Network topology maps | ✓ Native support | ✗ Not supported |
III. Alerting Mechanism Comparison
3.1 Zabbix Alerting Mechanism
Zabbix’s alerting core is the Trigger — a boolean expression based on Item values:
Trigger expression syntax:
{server:system.cpu.load[all,avg1].last(0)} > 5
└─┬─┘ └──────────┬──────────┘ └─┬─┘ └┬┘
Host Item Key Function Threshold
# Zabbix Trigger examples (configured in Web UI)
# CPU usage > 80% for 5 minutes
{host:system.cpu.util[,idle].max(5m)} < 20
# Disk free space < 10%
{host:vfs.fs.size[/,pfree].last(0)} < 10
# Port unreachable
{host:net.tcp.service[ssh,,22].last(0)} = 0
Zabbix alerting characteristics:
- Trigger levels: Not classified / Information / Warning / Average / High / Disaster
- Action mechanism: Execute Actions when Triggers fire (send notifications, run scripts)
- Escalation: Alert escalation mechanism with time-based stepped escalation
- Media types: Email / SMS / Webhook / custom scripts
- Alert acknowledgment: Supports manual alert acknowledgment, marking as known issue
3.2 Prometheus Alerting Mechanism
Prometheus’s alerting is two-layered: Prometheus handles rule evaluation, Alertmanager handles alert routing and dispatch.
# Prometheus Alerting Rule
- alert: HighCPU
expr: 100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: "CPU usage too high: {{ $labels.instance }}"
Prometheus alerting characteristics:
- PromQL-driven: Alerting rules are PromQL expressions, supporting complex aggregation
forduration: Avoids transient spikes- Standalone Alertmanager: Grouping, routing, inhibition, deduplication
- Label-driven routing: Notification channels determined by label matching
- No escalation mechanism: No native multi-level escalation like Zabbix; needs to be simulated via routing config
3.3 Alerting Mechanism Comparison
| Dimension | Zabbix | Prometheus |
|---|---|---|
| Alert definition | Trigger expression | PromQL Alerting Rule |
| Alert levels | 6 levels | Custom labels (typically 3-4 levels) |
| Escalation | Native stepped escalation | Needs Alertmanager routing to simulate |
| Alert acknowledgment | Supported (mark as known) | Not supported (needs ticket system integration) |
| Grouping/aggregation | Not supported | Supported (group_by) |
| Alert inhibition | Not supported | Supported (inhibit_rules) |
| Alert deduplication | Supported (single Server) | Supported (Alertmanager HA Gossip) |
| Notification channels | Email/SMS/Webhook/scripts | Email/Webhook (needs DingTalk/WeCom integration) |
| Maintenance mode | Supported (Maintenance Period) | Needs silences |
| Alert resolution notification | Supported | Supported (send_resolved) |
Zabbix is more mature in alert management: Native support for escalation, acknowledgment, and maintenance modes. Prometheus + Alertmanager’s strengths are in label-driven routing and inhibition rules, but it’s less complete in alert lifecycle management compared to Zabbix.
IV. Ecosystem Comparison
4.1 Zabbix Ecosystem
Zabbix’s ecosystem is relatively closed, mainly revolving around official components:
| Component | Description |
|---|---|
| Zabbix Server | Core collection and alerting engine |
| Zabbix Agent / Agent 2 | Monitored host agent |
| Zabbix Proxy | Distributed collection proxy |
| Zabbix Web Frontend | PHP web interface |
| Zabbix API | RESTful API (JSON-RPC) |
| Template Library | Official and community template library |
Zabbix ecosystem characteristics:
- Officially maintained, comprehensive documentation, easy to get started
- Template marketplace provides many pre-built monitoring templates
- Zabbix Agent 2.0 supports Go plugins, improved extensibility
- But limited integration with cloud-native ecosystem (Kubernetes, Service Mesh)
4.2 Prometheus Ecosystem
Prometheus is a CNCF graduated project with a massive open-source ecosystem:
| Category | Projects |
|---|---|
| Visualization | Grafana, Perses |
| Alerting | Alertmanager, Karma |
| Long-term storage | Thanos, Mimir, VictoriaMetrics, Cortex |
| Logging | Loki |
| Tracing | Jaeger, Tempo |
| Exporters | Node / MySQL / Redis / Kafka / Blackbox / SNMP etc. 100+ |
| K8s integration | kube-state-metrics, kubelet, Prometheus Operator |
| Auto-discovery | file_sd / kubernetes_sd / consul_sd / dns_sd etc. |
| Remote storage | InfluxDB, TimescaleDB, Elasticsearch |
Prometheus ecosystem characteristics:
- Open ecosystem, components are replaceable
- Deep integration with Kubernetes
- Grafana natively supports PromQL
- Active community, new Exporters and tools constantly emerging
- But components are dispersed; you need to assemble a complete solution yourself
4.3 Ecosystem Maturity Comparison
| Dimension | Zabbix | Prometheus |
|---|---|---|
| Official documentation | Comprehensive, good Chinese support | Comprehensive, primarily English |
| Template marketplace | Official + community templates | Community Exporters + Grafana Dashboards |
| Kubernetes integration | Weak (needs external scripts) | Extremely strong (native support) |
| Microservice monitoring | Weak | Strong |
| Traditional network monitoring | Strong (native SNMP) | Medium (snmp-exporter) |
| Hardware monitoring | Strong (native IPMI) | Medium (ipmi-exporter) |
| Commercial support | Zabbix Company | Grafana Labs / Timescale etc. |
| Community activity | Medium | Extremely high |
V. Performance and Scalability Comparison
5.1 Performance Benchmarks
| Dimension | Zabbix | Prometheus |
|---|---|---|
| Single-instance metric capacity | ~100K Items/Server | ~2M time series/instance |
| Write performance | DB-limited (MySQL ~50K/s) | ~1M samples/s |
| Query performance | DB queries, slow for large ranges | TSDB columnar, medium |
| Memory consumption | Low (C language) | Medium-High (Go + TSDB in-memory index) |
| Storage compression | Average (DB row storage) | Good (TSDB columnar + Gorilla) |
| Horizontal scaling | Zabbix Proxy (limited) | Federation / remote storage (native) |
5.2 Scaling Methods Comparison
Zabbix scaling:
┌──────────────────┐
│ Zabbix Server │
└────────┬─────────┘
│
┌─────────────┼─────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Proxy-1 │ │ Proxy-2 │ │ Proxy-3 │
│ (Region A)│ │ (Region B)│ │ (Region C)│
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
┌────┴────┐ ┌────┴────┐ ┌────┴────┐
│ Agents │ │ Agents │ │ Agents │
└─────────┘ └─────────┘ └─────────┘
Zabbix Proxy is the only scaling method — it only does regional collection aggregation, with all data ultimately flowing into the Server’s database. Server and database remain single points.
Prometheus scaling:
Option A: Federation
Regional Prometheus → Global Prometheus → Grafana
Option B: Remote storage (Thanos/Mimir/VM)
Each Prometheus → remote_write → remote storage cluster → global query
Option C: Sharded scraping
Prometheus-1 (shard 0) → each stores + uploads
Prometheus-2 (shard 1) → Thanos → global query
Prometheus offers more diverse scaling methods, enabling true horizontal scaling of both collection and storage.
VI. Use Case Comparison
6.1 Scenarios Where Zabbix Is Better
| Scenario | Reason |
|---|---|
| Traditional datacenter (physical/VMs) | Host/Template model is a natural fit |
| Network device monitoring (SNMP) | Native SNMP support, auto-discovery of network topology |
| Hardware monitoring (IPMI/smart PDU) | Native IPMI support |
| Hybrid IT environments | Supports multiple collection methods (Agent/SNMP/JMX/HTTP) |
| Non-K8s microservice environments | Agent collection is simple and direct |
| Need Web UI management | Built-in complete web frontend |
| Ops team unfamiliar with K8s | Zabbix has low entry barrier |
6.2 Scenarios Where Prometheus Is Better
| Scenario | Reason |
|---|---|
| Kubernetes / container environments | Native K8s service discovery and collection |
| Microservice architecture | Multi-dimensional label model fits microservices |
| Cloud-native applications | Apps expose /metrics directly |
| Dynamic elastic environments | Service discovery auto-senses instance changes |
| DevOps / GitOps | YAML config + CI/CD |
| Need powerful query capabilities | PromQL far exceeds Zabbix Trigger expressions |
| Need scalable long-term storage | Rich Thanos/Mimir/VM ecosystem |
6.3 Hybrid Monitoring: Best of Both Worlds
Many mature teams choose to run both systems, each serving its purpose:
┌─────────────────────────────────────────────────────┐
│ Hybrid Monitoring Architecture │
│ │
│ ┌─── Infrastructure Layer ──────────────────┐ │
│ │ Zabbix │ │
│ │ ├── Network devices (SNMP) │ │
│ │ ├── Physical servers (IPMI + Agent) │ │
│ │ ├── Storage arrays / SAN │ │
│ │ └── Datacenter environment (temp/humidity/UPS) │ │
│ └────────────────────────────────────────────┘ │
│ │
│ ┌─── Application & Cloud-Native Layer ──────┐ │
│ │ Prometheus │ │
│ │ ├── Kubernetes clusters │ │
│ │ ├── Microservice application metrics │ │
│ │ ├── Middleware (MySQL/Redis/Kafka) │ │
│ │ └── API Gateway / Ingress │ │
│ └────────────────────────────────────────────┘ │
│ │
│ ┌─── Unified Visualization ──────────────────┐ │
│ │ Grafana │ │
│ │ ├── Zabbix datasource │ │
│ │ └── Prometheus datasource │ │
│ └────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
Grafana unified visualization: Grafana supports both Zabbix and Prometheus data sources, allowing you to mix data from both systems in a single dashboard.
VII. Migration Plans
7.1 Migrating from Zabbix to Prometheus
Migration isn’t simple “replacement” — it requires redesigning the monitoring architecture:
Step 1: Inventory monitoring items
# Export all Zabbix monitoring items
mysql -u zabbix -p zabbix -e "
SELECT h.name, i.key_, i.description, t.expression
FROM items i
JOIN hosts h ON i.hostid = h.hostid
LEFT JOIN triggers t ON t.itemid = i.itemid
WHERE i.status = 0
ORDER BY h.name, i.key_
" > zabbix_items.csv
Step 2: Map to Prometheus Exporters
| Zabbix Item Key | Prometheus Exporter | Metric Name |
|---|---|---|
system.cpu.load | node-exporter | node_load1 |
system.cpu.util | node-exporter | rate(node_cpu_seconds_total) |
vfs.fs.size | node-exporter | node_filesystem_size_bytes |
vm.memory.size | node-exporter | node_memory_MemAvailable_bytes |
net.if.in | node-exporter | rate(node_network_receive_bytes_total) |
mysql.status | mysqld-exporter | mysql_global_status_* |
Step 3: Rewrite alerting rules
# Zabbix Trigger: {host:system.cpu.load[all,avg1].last(0)} > 5
# Prometheus equivalent:
- alert: HighLoadAverage
expr: node_load1 > 5
for: 5m
labels:
severity: warning
annotations:
summary: "High system load: {{ $labels.instance }}"
description: "1-minute load {{ $value }} exceeds 5"
Step 4: Dual-run transition period
Run both systems during migration, compare data consistency, and gradually switch alerts to Prometheus.
7.2 Migrating from Prometheus to Zabbix
This migration is less common but has demand in traditional enterprise IT environments:
- Replace node-exporter with Zabbix Agent 2
- Use Zabbix HTTP Agent type Item to replace Prometheus Exporter
- Convert PromQL alerting rules to Zabbix Triggers
- Leverage Zabbix Templates for batch monitoring item management
VIII. Feature Coverage Matrix
| Feature | Zabbix | Prometheus | Notes |
|---|---|---|---|
| Host auto-discovery | ✓ | ✓ | Zabbix: network discovery / Prometheus: SD |
| Network topology maps | ✓ | ✗ | Zabbix native support |
| Dashboards | ✓ | ✗ (use Grafana) | Zabbix built-in Dashboard |
| Alert grouping | ✗ | ✓ | Prometheus Alertmanager advantage |
| Alert inhibition | ✗ | ✓ | Alertmanager inhibit_rules |
| Alert escalation | ✓ | ✗ | Zabbix native support |
| Alert acknowledgment | ✓ | ✗ | Zabbix native support |
| Maintenance mode | ✓ | △ | Zabbix native / Prometheus uses silences |
| SLA reporting | ✓ | ✗ (needs third-party) | Zabbix native SLA reports |
| Auto-remediation | ✓ | ✗ | Zabbix Action can execute remote scripts |
| Short-lived task monitoring | ✓ | △ (Pushgateway) | Zabbix Agent supported |
| Log monitoring | ✓ | ✗ | Zabbix supported (not specialized) / Prometheus uses Loki |
| Distributed tracing | ✗ | ✗ | Neither supports (use Jaeger) |
| Synthetic monitoring | △ (Web scenarios) | ✓ (Blackbox) | Limited functionality |
| Multi-tenancy | ✗ | ✗ | Neither natively supports |
| API | ✓ | ✓ | Both have RESTful APIs |
IX. TCO Comparison
9.1 Total Cost of Ownership
| Cost Item | Zabbix | Prometheus |
|---|---|---|
| Software license | Free (open-source) / Enterprise paid | Free (open-source) |
| Server cost | Medium (Server + DB + Web) | Medium-High (Prom + Grafana + AM + remote storage) |
| Database cost | MySQL/PG needs dedicated high-performance instance | None (built-in TSDB) |
| Storage cost | Medium (database storage) | Low-Medium (TSDB compression / low-cost object storage) |
| Ops personnel | Low-Medium (Web UI management) | Medium-High (need YAML/PromQL/Grafana skills) |
| Training cost | Low (UI friendly) | Medium-High (PromQL learning curve) |
| Scaling cost | High (database scaling difficult) | Low (Thanos/VM horizontal scaling) |
9.2 Scale and Cost Trends
Cost trends as monitoring scale grows:
Small scale (< 100 hosts)
Zabbix cost: Low ✓
Prometheus cost: Medium
Medium scale (100-1000 hosts)
Zabbix cost: Medium
Prometheus cost: Medium
Large scale (> 1000 hosts / cloud-native)
Zabbix cost: High (database bottleneck)
Prometheus cost: Medium ✓ (horizontal scaling)
X. Selection Decision Framework
What type is your infrastructure?
│
├── Traditional IT (mostly physical/VMs)
│ └── Do you have Kubernetes / container environments?
│ ├── Yes → Hybrid (Zabbix infrastructure + Prometheus containers)
│ └── No → Zabbix (quick to start, comprehensive features)
│
├── Cloud-native (mostly Kubernetes)
│ └── Do you have traditional network/hardware monitoring needs?
│ ├── Yes → Hybrid (Prometheus apps + Zabbix network/hardware)
│ └── No → Prometheus (cloud-native standard)
│
└── Hybrid environment
└── Team tech stack leans toward?
├── Ops background → Zabbix primary + Prometheus supplementary
└── Dev/DevOps background → Prometheus primary + Zabbix supplementary
Selection Decision Table
| Decision Factor | Zabbix Advantage | Prometheus Advantage |
|---|---|---|
| Team skills | Ops engineers | SRE / DevOps engineers |
| Infrastructure | Physical/VMs | Containers/K8s |
| Alert management | Need escalation/acknowledgment/SLA | Need grouping/inhibition |
| Scaling needs | Stable scale | Need horizontal scaling |
| Config management | Prefer Web UI | Prefer YAML + GitOps |
| Query capability | Simple queries suffice | Need complex PromQL |
| Ecosystem integration | Traditional IT ecosystem | Cloud-native ecosystem |
| Long-term storage | Not needed | Need long-term historical data |
Summary
Zabbix and Prometheus are not adversaries but complements:
- Zabbix’s core advantage lies in the completeness and ease of use of traditional infrastructure monitoring — Web UI management, template system, alert escalation, network device SNMP, hardware IPMI, SLA reporting — all highly practical in traditional IT environments
- Prometheus’s core advantage lies in its adaptability to cloud-native scenarios — Kubernetes service discovery, multi-dimensional label model, PromQL queries, horizontal scaling, rich Exporter ecosystem — irreplaceable in containerized microservice environments
- Hybrid is the mature choice: Zabbix handles “invisible infrastructure” (network/hardware/datacenter), Prometheus handles “visible applications” (microservices/API/K8s), unified visualization through Grafana, each playing to its strengths
Don’t be bound by “which is better” binary thinking when selecting. Instead, return to your actual environment: your infrastructure type, team tech stack, alerting needs, scaling needs — these factors together determine the best solution. Many teams find after deep usage that a hybrid approach is the true best practice.
References & Acknowledgments
This article referenced the following materials during writing. We thank the original authors for their contributions:
- Zabbix Official Documentation — Zabbix SIA, referenced for Zabbix Official Documentation
- Prometheus Official Documentation — Prometheus Authors, referenced for Prometheus Official Documentation