Zabbix 4.2 Is Out Now

We’re happy to inform you about the release of Zabbix 4.2, a free open source monitoring system.

Zabbix 4.2 Is Out Now
Zabbix 4.2 Is Out Now

Let’s find out whether Zabbix 4.2 is the answer to the crucial question of life, universe, and monitoring in general!

Zabbix is a versatile system for monitoring the performance and availability of servers, IoT and network equipment, apps, databases, cloud resources, containers, IT services, and web services.

Zabbix performs data collection and processing, problem and anomaly detection, visualization, and much more. On top of that, the system provides flexible features for extending data collection and alerting methods, as well as automation via API. A single web interface performs a centralized management of monitoring configurations and distributes access rights among different groups of users.

Zabbix 4.2 is a new non-LTS version with a shortened maintenance period. If you’re planning to use your software for a long time, we recommend LTS versions (3.0 and 4.0).

Let’s take a look at what features have been added to Zabbix 4.2.

More supported platforms

Zabbix 4.2 Is Out Now
Zabbix 4.2 Is Out Now

In addition to the existing official packages, Zabbix now supports a series of new platforms:

  • RaspberryPi, Mac OS/X, SUSE Enterprise Linux Server 12
  • MSI for Windows agent
  • Docker images

Built-in Prometheus support for app monitoring
Zabbix can use different methods (push/pull) to collect data from a number of data sources like JMX, SNMP, WMI, HTTP/HTTPS, RestAPI, XML Soap, SSH, Telnet, agents and scripts, etc. The new Zabbix now features the Prometheus support!

In fact, data retrieval from Prometheus exporters was already available thanks to HTTP/HTTPS checks using regular expressions.

However, through in-built PromQL language support, Zabbix 4.2 allows to maximize the benefits of Prometheus integration. Plus, using dependent metrics allows us to collect and process data in a more efficient way: you only need to request the data once and then distribute those among corresponding depending metrics.

Obtaining a single metric value
Obtaining a single metric value

It’s worth noting that low-level discovery can use collected data to automatically create metrics. Zabbix converts received data into the easy-to-use JSON format.

Finding a set of metrics using a PromQL filter
Finding a set of metrics using a PromQL filter

Currently, there are more than 300 integrations for monitoring services and apps with Zabbix. Prometheus support will allow to add a set of apps with official or community-supported Prometheus exporters. Here we are talking about the monitoring of popular services, containers, and cloud resources.

Efficient high-frequency monitoring

Do we want to detect problems as fast as possible? Of course, we do! For the most part, to achieve that we have to perform frequent checks, which results in overloading the monitoring system. How can we avoid that?

We implemented a throttling mechanism for preprocessing. In short, throttling allows us to skip recurrent values.

Suppose, we are monitoring the state of a critical app. Every second, we’re checking whether the app is running or not. Zabbix receives a continuous data flow consisting of ones (running) and zeroes (not running). Here is an example: 1111111111110001111111111111…

When the app is functioning well, Zabbix receives a series only consisting of ones. Do we need to process all that data? In fact, no, we don’t because we are only interested in how the app state is changing. We don’t want to collect and store too much data. Throttling allows us to skip a value if it’s the same as the previous one. As a result, we only get data when the app state is changing, e.g., 01010101… It’s more than enough for a timely problem detection!

Zabbix simply ignores skipped values. They are not stored and have no effect on triggers. Zabbix thinks that skipped values have never existed.

Ignoring recurrent values
Ignoring recurrent values

Wow, great! Now we can detect problems in time without having to store excessive information.

But what about graphs? With scarce data, they’ll be empty! And how can a user understand whether or not Zabbix is collecting data when most data are skipped anyway?

We’ve thought about that! Zabbix offers another type of throttling which is called “throttling with heartbeat.”

Checking whether a metric is alive every minute
Checking whether a metric is alive every minute

In this case, despite a recurrent data flow, Zabbix will save as least one value within a specified time interval. If data are collected every second and time interval (heartbeat period) is set at 1 minute, Zabbix will only keep every 60th value.

Now we know that the data are being collected, trigger function nodata() is operational, and the graphs are fine!

Data validation and error handling

No one wants to collect erroneous or inaccurate data. For instance, we know that a temperature sensor reads data in the 0°-100°C range, and any different value is considered erroneous and/or ignored.

Now this is possible thanks to in-built preprocessing rules that validate data by fitting or not fitting regular expression using JSONPath or XMLPath.

Now we define the reaction to any preprocessing-related problem. If the temperature is outside the range, we can simply ignore this value, set a default value (e.g, 0°C ), or define our own error message, e.g. “Sensor is damaged” or “Change battery.”

Temperature must range from 0 to 100. Ignore all other values.
Temperature must range from 0 to 100. Ignore all other values.

Now we also can extract error messages from collected data. This is a very useful functionality when receiving data from external APIs.

Preprocessing data using JavaScript

If built-in data pre-processing rules are not enough, now you can have compete for freedom of data preprocessing by using user-defined scripts written in JavaScript!

One line of code for converting Fahrenheit into Celsius
One line of code for converting Fahrenheit into Celsius

This opens up endless opportunities for processing incoming data. The practical use of this functionality is that now we don’t need external scripts any more. Now we can do all that using JavaScript.

Data transformation, aggregation, filtering, arithmetical and logical operations – all this and more is available now!

Extracting useful information from Apache mod_status with JavaScript
Extracting useful information from Apache mod_status with JavaScript

Test preprocessing

Now we don’t need a tool to verify complex preprocessing scenarios. Now we can test preprocessing rules straight from the Web UI.

Zabbix 4.2 Is Out Now
Zabbix 4.2 Is Out Now

Processing millions of metrics per second!  

Before Zabbix 4.2, preprocessing was the exclusive responsibility of the Zabbix server, which limited the possibilities of using a proxy for load distribution.

Starting from Zabbix 4.2, we can benefit from greater scalability because all preprocessing functions are performed by proxies.

Combined with throttling, such an approach allows to perform high-frequency monitoring and collect millions of values per second without overloading the central Zabbix server. Proxies can process huge amounts of data. Thanks to throttling, only a small part of those data reaches the Zabbix server.
Combined with throttling, such an approach allows to perform high-frequency monitoring and collect millions of values per second without overloading the central Zabbix server. Proxies can process huge amounts of data. Thanks to throttling, only a small part of those data reaches the Zabbix server.

Easy low-level discovery

Low-level discovery (LLD) is a highly powerful mechanism for automatically detecting any kind of monitoring resources (file systems, processes, apps, services, etc.) and using those to create data elements, triggers, network nodes, and other objects. LLD saves lots of time, simplifies configuration, and allows to use a single template for hosts with different monitoring resources.

Earlier, LLD required a special JSON to work correctly. But not anymore.

Zabbix 4.2 allows LLD to use arbitrary input in JSON format. Why is it important? It gives you the opportunity to communicate with, say, external APIs and use the received information to automatically create hosts, data elements, and triggers.

Together with JavaScript support, this offers fantastic possibilities for creating templates with various data sources, such as cloud APIs, app APIs, data in XML/CSV formats, etc.

Connecting JSON to process data with LLD
Connecting JSON to process data with LLD

As you can see, the possibilities are endless!

TimescaleDB support

Zabbix 4.2 Is Out Now
Zabbix 4.2 Is Out Now

What is TimescaleDB? It’s a standard PostgreSQL, plus an extension module from the TimescaleDB team. TimescaleDB offers a better performance through using smarter algorithms and data structures.

Another beautiful thing about TimescaleDB is automatic table partitioning which enhances performance. TimescaleDB stands for speed and simplicity. However, I must say that our team has not yet compared TimescaleDB’s performance with that of PostgreSQL.

TimescaleDB is currently a rather young and fast-growing product. So be sure to use it carefully!

Easy tag management

While earlier you could only set tags for individual triggers, now tag management has become way more flexible. Zabbix now supports tags for templates and hosts!

All detected problems get the tags from the trigger and the host, as well as from the corresponding templates.

Defining tags for a host
Defining tags for a host

More flexible auto-registration

Zabbix 4.2 allows you to filter host names by using regular expressions. This enables you to create different auto-registration scenarios for detecting different sets of hosts. This feature comes in especially handy when complex rules for device naming are used.

Control host names for auto-discovery

Another improvement has to do with the naming of hosts. Now you can assign metric data to a host name and visible name.

This is a very useful functionality, especially if we are using SNMP and Zabbix agent.

Configure discovery to automatically assign visible host name to local hostname
Configure discovery to automatically assign visible host name to local hostname

Test media type from Web UI

Now you can send a test message to yourself from the web interface to see whether the alerting method is working. This feature is especially useful for checking the scripts used for integration with different alerting systems, task systems, and other external programs and APIs.

Zabbix 4.2 Is Out Now
Zabbix 4.2 Is Out Now

Remote monitoring of Zabbix infrastructure components

The new Zabbix offers the functionality of remote monitoring of internal metrics of the Zabbix server and proxy (performance and availability metrics).

Why do we need that? This feature allows you to discover internal metrics of servers and proxies and timely detect the problems even if the components are overloaded or the proxy has a large volume of data stored.

HTML support for emails

Thanks to HTML support, you now can create eye-pleasing and effective email messages. Seems like it’s time to learn HTML + CSS!

Even minor HTML formatting makes emails visually appealing and easier to perceive
Even minor HTML formatting makes emails visually appealing and easier to perceive

Accessing external systems from network maps

Now Zabbix supports an entire set of new macros in user-defined URLs pointing to external systems. This allows to open, say, a ticket in a tasks system in just a few clicks.

Opening a ticket in Jira in one click
Opening a ticket in Jira in one click

LLD rule as a dependent metric

“Why do I need this?”, you might be thinking. This functionality allows to use received values of a master metric for both discovery and collection of data. For example, when collecting data from the Prometheus exporter, Zabbix will make one HTTP request and use the received information for all dependent metrics (metric values and LLD rules).

New animations for maps

Another addition is the support of animated GIF images on maps to make problems more noticeable.

Problem devices have become easier to notice
Problem devices have become easier to notice

Extracting data from HTTP headers in web monitoring

You can now extract data from HTTP headers in web monitoring.

This allows to create multi-step scenarios of web monitoring or external APIs by using the authentication token obtained in one of the steps.

Extracting AuthID from HTTP header
Extracting AuthID from HTTP header

Zabbix Sender uses all IP addresses

Zabbix Sender now sends data to all IP addresses defined in the ServerActive parameter of the Agent’s configuration file.

Zabbix 4.2 Is Out Now
Zabbix 4.2 Is Out Now

New filter for trigger configuration  

Trigger configuration page now features an extended filter for a fast and convenient trigger selection by specified criteria.

Selecting K8S-related triggers
Selecting K8S-related triggers

Showing exact time

Now, when you point a cursor at the chart, Zabbix shows you the exact time.

Zabbix 4.2 Is Out Now
Zabbix 4.2 Is Out Now

Other additions

  • Non-destructive resizing and reordering of dashboard widgets
  • Mass update for item prototypes
  • IPv6 support for DNS checks (“dns” and “new.dns.record”)
  • New “skip” parameter for “eventlog” checks
  • Extended preprocessing error messages include intermediate step results

Source post: https://blog.zabbix.com/zabbix-4-2-out-now/6791/#more-6791