Zabbix was created by Alexei Vladishev, and currently is actively developed and supported by Zabbix SIA.
Zabbix is an enterprise-class open source distributed monitoring solution.
Zabbix is a software that monitors numerous parameters of a network and the health and integrity of servers, virtual machines, applications, services, databases, websites, the cloud and more. Zabbix uses a flexible notification mechanism that allows users to configure email-based alerts for virtually any event. This allows a fast reaction to server problems. Zabbix offers excellent reporting and data visualization features based on the stored data. This makes Zabbix ideal for capacity planning.
Zabbix supports both polling and trapping. All Zabbix reports and statistics, as well as configuration parameters, are accessed through a web-based frontend. A web-based frontend ensures that the status of your network and the health of your servers can be assessed from any location. Properly configured, Zabbix can play an important role in monitoring IT infrastructure. This is equally true for small organizations with a few servers and for large companies with a multitude of servers.
Zabbix is free of cost. Zabbix is written and distributed under the AGPL-3.0 license. It means that its source code is freely distributed and available for the general public.
Commercial support is available and provided by Zabbix Company and its partners around the world.
Learn more about Zabbix features.
Many organizations of different size around the world rely on Zabbix as a primary monitoring platform.
Zabbix consists of several major software components. Their responsibilities are outlined below.
Zabbix server is the central component to which agents report availability and integrity information and statistics. The server is the central repository in which all configuration, statistical and operational data are stored.
All configuration information as well as the data gathered by Zabbix is stored in a database.
For an easy access to Zabbix from anywhere and from any platform, the web-based interface is provided. The interface is part of Zabbix server, and usually (but not necessarily) runs on the same physical machine as the one running the server.
Zabbix proxy can collect performance and availability data on behalf of Zabbix server. A proxy is an optional part of Zabbix deployment; however, it may be very beneficial to distribute the load of a single Zabbix server.
Zabbix agents are deployed on monitoring targets to actively monitor local resources and applications and report the gathered data to Zabbix server. Since Zabbix 4.4, there are two types of agents available: the Zabbix agent (lightweight, supported on many platforms, written in C) and the Zabbix agent 2 (extra-flexible, easily extendable with plugins, written in Go).
In addition it is important to take a step back and have a look at the overall data flow within Zabbix. In order to create an item that gathers data you must first create a host. Moving to the other end of the Zabbix spectrum you must first have an item to create a trigger. You must have a trigger to create an action. Thus if you want to receive an alert that your CPU load is too high on Server X you must first create a host entry for Server X followed by an item for monitoring its CPU, then a trigger which activates if the CPU is too high, followed by an action which sends you an email. While that may seem like a lot of steps, with the use of templating it really isn't. However, due to this design it is possible to create a very flexible setup.
Zabbix is a highly integrated network monitoring solution, offering a multiplicity of features in a single package.
Flexible threshold definitions
Extensive visualization options
Full featured and easily extensible agent
Ready for complex environments
In this section you can learn the meaning of some terms commonly used in Zabbix.
- any physical or virtual device, application, service, or any other logically-related collection of monitored parameters.
- a logical grouping of hosts. Host groups are used when assigning access rights to hosts for different user groups.
- a particular piece of data that you want to receive from a host, a metric of data.
- a transformation of received metric value before saving it to the database.
- a logical expression that defines a problem threshold and is used to "evaluate" data received in items.
When received data are above the threshold, triggers go from 'Ok' into a 'Problem' state. When received data are below the threshold, triggers stay in/return to an 'Ok' state.
- a set of entities (items, triggers, graphs, low-level discovery rules, web scenarios) ready to be applied to one or several hosts.
The job of templates is to speed up the deployment of monitoring tasks on a host; also to make it easier to apply mass changes to monitoring tasks. Templates are linked directly to individual hosts.
- a logical grouping of templates. Template groups are used when assigning access rights to templates for different user groups.
- a single occurrence of something that deserves attention such as a trigger changing state or a discovery/agent autoregistration taking place.
- a pre-defined marker for the event. It may be used in event correlation, permission granulation, etc.
- a method of correlating problems to their resolution flexibly and precisely.
For example, you may define that a problem reported by one trigger may be resolved by another trigger, which may even use a different data collection method.
- a trigger that is in "Problem" state.
- problem management options provided by Zabbix, such as adding comment, acknowledging, changing severity or closing manually.
- a predefined means of reacting to an event.
An action consists of operations (e.g. sending a notification) and conditions (when the operation is carried out)
- a custom scenario for executing operations within an action; a sequence of sending notifications/executing remote commands.
- a means of delivering notifications; delivery channel.
- a message about some event sent to a user via the chosen media channel.
- a pre-defined command that is automatically executed on a monitored host upon some condition.
- one or several HTTP requests to check the availability of a web site.
- the web interface provided with Zabbix.
- customizable section of the web interface displaying summaries and visualizations of important information in visual units called widgets.
- visual unit displaying information of a certain kind and source (a summary, a map, a graph, the clock, etc.), used in the dashboard.
- Zabbix API allows you to use the JSON RPC protocol to create, update and fetch Zabbix objects (like hosts, items, graphs and others) or perform any other custom tasks.
- a central process of Zabbix software that performs monitoring, interacts with Zabbix proxies and agents, calculates triggers, sends notifications; a central repository of data.
- a process that may collect data on behalf of Zabbix server, taking some processing load from the server.
- a process deployed on monitoring targets to actively monitor local resources and applications.
- a new generation of Zabbix agent to actively monitor local resources and applications, allowing to use custom plugins for monitoring.
Because Zabbix agent 2 shares much functionality with Zabbix agent, the term "Zabbix agent" in documentation stands for both - Zabbix agent and Zabbix agent 2, if the functional behavior is the same. Zabbix agent 2 is only specifically named where its functionality differs.
- support of encrypted communications between Zabbix components (server, proxy, agent, zabbix_sender and zabbix_get utilities) using Transport Layer Security (TLS) protocol.
- automated process whereby a Zabbix agent itself is registered as a host and started to monitor.
- automated discovery of network devices.
- automated discovery of low-level entities on a particular device (e.g. file systems, network interfaces, etc).
- set of definitions for automated discovery of low-level entities on a device.
- a metric with certain parameters as variables, ready for low-level discovery. After low-level discovery the variables are automatically substituted with the real discovered parameters and the metric automatically starts gathering data.
- a trigger with certain parameters as variables, ready for low-level discovery. After low-level discovery the variables are automatically substituted with the real discovered parameters and the trigger automatically starts evaluating data.
Prototypes of some other Zabbix entities are also in use in low-level discovery - graph prototypes, host prototypes, host group prototypes.