See breaking changes for this version.
Zabbix software is now is written and distributed under the AGPL-3.0 license (previously GPL v2.0 license).
A software update check is now added by default to new and existing installations - Zabbix frontend will communicate to the public Zabbix endpoint to check for updates.
The news about available Zabbix software updates are displayed in Reports -> System information and (optionally) in the System Information dashboard widget.
You can disable the software update check by setting AllowSoftwareUpdateCheck=0 in server configuration.
New poller processes have been added capable of executing multiple checks at the same time:
agent poller
http agent poller
snmp poller
(for walk[OID]
and get[OID]
items)These pollers are asynchronous - they are capable of starting new checks without the need to wait for a response, with concurrency that is configurable up to 1000 concurrent checks.
Asynchronous pollers have been developed because, in comparison, the synchronous poller processes can execute only one check at the same time and most of their time is spent on waiting for the response. Thus the efficiency could be increased by starting new parallel checks while waiting for network response, and the new pollers do that.
You can start asynchronous agent pollers by modifying the value of StartAgentPollers - a new server/proxy parameter. HTTP agent pollers can be started by modifying StartHTTPAgentPollers respectively. SNMP pollers can be started by modifying StartSNMPPollers respectively.
The maximum concurrency for asynchronous pollers (agent, HTTP agent and SNMP) is defined by MaxConcurrentChecksPerPoller.
Note that after the upgrade all agent, HTTP agent and SNMP walk[OID]
checks will be moved to asynchronous pollers.
As part of the development, the persistent connections cURL feature has been added to HTTP agent checks.
A new item type - Browser item - has been added to Zabbix, enabling the monitoring of complex websites and web applications using a browser. Browser items allow the execution of user-defined JavaScript code to simulate browser-related actions such as clicking, entering text, navigating through web pages, etc.
This item collects data over HTTP/HTTPS and partially implements the W3C WebDriver standard with Selenium Server or a plain WebDriver (for example, ChromeDriver) as a testing endpoint.
Note that the support of Browser items is currently experimental.
Additionally, this feature adds the Website by Browser template and new elements to configuration export/import, Zabbix server/proxy configuration files, timeouts, and the zabbix_js
command-line utility. For more information, see Upgrade notes to 7.0.0.
Proxy load balancing is implemented by introducing proxy groups in Zabbix. Proxy groups provide automatic distribution of hosts between proxies, proxy load re-balancing and high availability - when a proxy goes offline, its hosts are immediately distributed among other proxies in the group.
For more information, see proxy load balancing and high availability.
A memory buffer has been developed for Zabbix proxy. The memory buffer allows to store new data (item values, network discovery, host autoregistration) in the buffer and upload to Zabbix server without accessing the database.
In installations before Zabbix 7.0 the collected data was stored in the database before uploading to Zabbix server. For these installations this remains the default behavior after the upgrade.
For optimized performance, it is recommended to configure the use of memory buffer on the proxy. This is possible by modifying the value of ProxyBufferMode from "disk" (hardcoded default for existing installations) to "hybrid" (recommended) or "memory". It is also required to set the memory buffer size (ProxyMemoryBufferSize parameter).
In hybrid mode the buffer is protected from data loss by flushing unsent data to the database if the proxy is stopped, the buffer is full or data too old. When all values have been flushed into database, the proxy goes back to using memory buffer.
In memory mode, the memory buffer will be used, however, there is no protection against data loss. If the proxy is stopped, or the memory gets overfilled, the unsent data will be dropped.
The hybrid mode (ProxyBufferMode=hybrid) is applied to all new installations since Zabbix 7.0.
Additional parameters such as ProxyMemoryBufferSize and ProxyMemoryBufferAge define the memory buffer size and the maximum age of data in the buffer, respectively.
New internal items have been added to monitor the proxy memory buffer.
Previously provisioned users were limited only to the media created during provisioning without the flexibility of editing such properties as working hours or severities.
Now more flexibility is available for provisioned users in Zabbix:
Additionally, when configuring user media mapping for provisioning such fields as When active, Use if severity and Enabled are now available. Note that changes to user media type mapping form will take effect only for new media created during provisioning.
Timeout configuration per item is now available for more item types (see supported item types). In addition to setting the timeout values on the item level, it is possible to define global and proxy timeouts for various item types.
Timeouts configured on the item level have the highest priority. By default, global timeouts are applied to all items; however, if proxy timeouts are set, they will override the global ones.
The support for Oracle as a backend database has been deprecated and is expected to be completely removed in future versions.
A JSON-based protocol for passive agent checks has been implemented.
For compatibility with older agents, a failover to the old plaintext protocol has been added. If the agent returns "ZBX_NOTSUPPORTED", Zabbix will cache the interface as old protocol and retry the check by sending only the plaintext item key.
Zabbix get can now be run with a new option -P --protocol <value>
where "value" is either:
Zabbix agent and agent 2 protocols have been unified by switching Zabbix agent to Zabbix agent 2 protocol. The difference between Zabbix agent and Zabbix agent 2 requests/responses is expressed by the "variant" tag value ("1" - Zabbix agent, "2" - Zabbix agent 2).
See also: Passive and active agent checks.
Flexible/scheduling intervals are now supported in active checks by both Zabbix agent and Zabbix agent 2 (previously only Zabbix agent 2).
Resources that are no longer discovered by low-level discovery now can be disabled automatically. They can be disabled immediately, after a specified time period or never (see the new Disable lost resources parameter in the discovery rule configuration).
Lost resources (hosts, items, triggers) are marked by an icon in the info column. The tooltip text provides details on their status.
Within the same development the Keep lost resources period parameter was renamed to Delete lost resources with options to delete immediately, after a specified time period or never.
Manual user input for frontend scripts allows to supply a custom parameter on each execution of the script. This saves the necessity to create multiple similar user scripts with only a single parameter difference.
For example, you may want to supply a different integer or a different URL address to the script during execution.
To enable manual user input:
With user input enabled, before script execution, a Manual input popup will appear to the user asking to supply a custom value. The supplied value will replace {MANUALINPUT} in the script.
Depending on the configuration, the user will be asked to enter a string value or select the value from a dropdown of pre-determined options.
Previously sending specific data to Zabbix server was possible using the Zabbix sender utility or by implementing a custom JSON-based communication protocol similar to that used in Zabbix sender.
Now it is also possible to send data to Zabbix server via HTTP protocol using the history.push
API method. Note that receiving sent data requires a configured trapper item or an HTTP agent item (with trapping enabled).
In addition, correct history.push
operations are recorded in Reports → Audit log that has additional filtering options (a new Push action and History resource), and the history.push
API method is also available in the Allow/Deny list of API methods when configuring a user role.
Previously maintenances were recalculated only every minute causing a possible latency of up to 60 seconds for starting or stopping a maintenance period.
Now maintenances are still recalculated every minute or as soon as the configuration cache is reloaded if there are changes to the maintenance period.
Every second the timer process checks if any maintenances must be started/stopped based on whether there are changes to the maintenance periods after the configuration update. Thus the speed of starting/stopping maintenance periods depends on the configuration update interval (10 seconds by default). Note that maintenance period changes do not include Active since/Active till settings. Also, if a host/host group is added to an existing active maintenance period, the changes will only be activated by the timer process at the start of next minute.
Permission checks have been made much faster by introducing several intermediary tables for checking non-privileged user permissions.
These tables keep hashes (SHA-256) of user group sets and host group sets for each user/host respectively. Additionally, there is a permission table storing only the accessible combinations of users and hosts, specified by the hash IDs.
This improvement makes the loading of permission-heavy frontend pages (i.e. hosts, problems) much faster. Note that hashes and permissions are not calculated for Super-admin users.
Trigger action operation, recovery operation and update operation execution on Zabbix server now occurs immediately (less than 100 milliseconds) after a trigger status change, whereas previously users could experience up to 4 seconds of latency.
The reduction in latency is made possible by implementing interprocess communication (IPC) mechanisms between multiple processes (escalator and escalation initiator, escalator and alerter, preprocessing manager and history syncer).
Several new widgets have been added in the new version, while the available functionality in others has been enhanced. Additionally, dashboard widgets can now connect and communicate with each other, making widgets and dashboards more dynamic.
A Gauge widget has been added to dashboard widgets, allowing to display the value of a single item as a gauge. For more information, see Gauge.
A Pie chart widget has been added to dashboard widgets, allowing to display values of selected items as:
Pie chart. |
Doughnut chart. |
For more information, see Pie chart.
As part of this development, a Show aggregation function checkbox has been added to the graph widget configuration (in Legend tab).
A Honeycomb widget has been added to dashboard widgets, which offers a dynamic and vibrant overview of the monitored network infrastructure and resources, where host groups, such as virtual machines and network devices, along with their respective items, are visually represented as interactive hexagonal cells. For more information, see Honeycomb.
A Top triggers widget has been added to dashboard widgets, which allows viewing the triggers with the highest number of problems.
For more information, see: Top triggers.
The new Item history dashboard widget has replaced the Plain text widget, offering several improvements.
Unlike the Plain Text widget, which only displayed the latest item data in plain text, the Item History widget supports various display options for multiple item types (numeric, character, log, text, and binary). For example, it can show progress bars or indicators, images for binary data types (useful for browser items), and highlight text values (useful for log file monitoring).
For more information, see Item history. For details about the replacement of the Plain text widget, see Upgrade notes for 7.0.0.
Host navigator and Item navigator widgets have been added to dashboard widgets. These widgets display hosts or items, respectively, based on various filtering and grouping options, and allow to control the information displayed in other widgets based on the selected host or item. For more information, see Host navigator and Item navigator.
Dashboard widgets can now connect and communicate with each other, making widgets and dashboards more dynamic. Multiple widgets have parameters that enable them to share configuration data between compatible widgets or the dashboard.
This feature introduces the following changes:
Depending on the widget and its parameters, the data source can be either a compatible widget from the same dashboard or the dashboard itself. For more information, see Dashboard widgets.
For changes to stock templates that are shipped with Zabbix, see Template changes.
Time periods now can be configured in the Item value and Top hosts widgets.
It is also now possible to display an aggregated value in the item value widget for the chosen period. The aggregated value can be displayed as:
These added features are useful for creating data comparison widgets. For example, in one widget you may display the latest value, while in another the average value for a longer period. Or several widgets can be used for side-by-side comparison of aggregated values from various periods in the past.
Previously, on a template dashboard, you could create only the following widgets: Clock, Graph (classic), Graph prototype, Item value, Plain text, URL.
Now template dashboards support the creation of all widgets.
Now, besides sorting by Item value, it is also possible to set Host name or Text column as the order column in Top hosts widget.
Host availability widget now allows displaying the hosts with Zabbix agent (active checks) interface. One more availability status has been added, i.e., Mixed, which corresponds to the situation when at least one interface is unavailable and at least one is either available or unknown. Moreover, the possibility to see only the total of hosts, without breakdown by interfaces, has been introduced.
The Graph widget now supports configuring a variable number of legend rows determined by the number of configured items.
New functions have been added for use in trigger expressions and calculated items:
See also: String functions
Several functions have been updated:
The default period for keeping item history has been made consistent at 31 days in the frontend and in the database. This change affects item, template item and item prototype configuration forms as well as the history storage period override in low-level discovery.
Now, if a floating point value is received for an unsigned integer item, the value will be trimmed from the decimal part and saved as an integer. Previously a floating point value would make an integer item unsupported.
A new eventlog.count
item has been added to Zabbix agent/agent 2 on Windows. This item returns an integer value with the count of lines in the Windows event log based on the specified parameters.
A new get[OID]
SNMP item has been added allowing to query for a single OID value asynchronously.
Internal items have been added to monitor the proxy memory buffer:
zabbix[proxy_buffer,buffer,<mode>]
- returns the proxy memory buffer usage statistics;zabbix[proxy_buffer,state,changes]
- returns the number of state changes between disk/memory buffer modes since start;zabbix[proxy_buffer,state,current]
- returns the current working state where the new data are being stored.The following internal items have also been added:
zabbix[discovery_queue]
- allows to monitor the number of discovery checks in the queue;zabbix[vps,written]
- allows to monitor the total number of history values written to database.New items have been added to Zabbix agent/agent 2:
net.dns.perf
item returns the number of seconds spent waiting for a response from a service, timing the net.dns
item execution.net.dns.get
Zabbix agent 2 item returns detailed DNS record information.The following Zabbix agent/agent 2 items have been updated:
net.dns
and net.dns.record
items now accept the DNS name in reversed and non-reversed format when performing reverse DNS lookups;proc.get
items in "process" and "summary" mode now also return the PSS (proportional set size) memory on Linux;system.sw.packages
and system.sw.packages.get
items are now supported on Gentoo Linux;system.hostname
item can now return a Fully Qualified Domain Name, if the new fqdn option is specified in the type parameter;wmi.get
and wmi.getall
items used with Zabbix agent 2 now return JSON with boolean values represented as strings (for example, "RealTimeProtectionEnabled": "True"
instead of "RealTimeProtectionEnabled": true
returned previously) to match the output format of these items on Zabbix agent;oracle.ts.discovery
Zabbix agent 2 item now returns a new {#CON_NAME} LLD macro with container name;oracle.ts.stats
Zabbix agent 2 item has a new conname parameter to specify the target container name. The JSON format of the returned data has been updated. When no tablespace, type, or conname is specified in the key parameters, the returned data will include an additional JSON level with the container name, allowing differentiation between containers.The vmware.eventlog
item now supports optional filtering by severity in the third parameter.
The vmware.vm.discovery
item now also returns data on virtual machine network interfaces. This data can be used to configure custom host interfaces.
The vmware.vm.net.if.discovery
item now also returns an array of network interface addresses.
A new options parameter has been added to the following items:
This parameter can be used to specify whether redirected responses should be treated as target host up or target host down. See simple checks for more details.
Engine IDs in SNMPv3 are used as unique identifiers of the device. Sometimes Engine IDs are the same in several devices because of misconfiguration or factory settings. As SNMP standards require Engine IDs to be unique, items sharing the same Engine ID become unsupported in Zabbix leading to availability issues with these devices.
To help troubleshoot such issues, information about SNMPv3 devices sharing the same Engine ID will now be logged periodically by Zabbix server. Note that duplicate Engine ID detection works in each SNMP poller separately.
Each standard item now has a direct link from the frontend to its documentation page.
The links are placed under the question mark icon, when opening the item helper window from the item configuration form (click on Select next to the item key field).
Error handling in case of a failure to retrieve an item value (and thus it becoming unsupported) previously lacked the ability to distinguish the reason or runtime stage where the process failed. All errors had to be handled using one and the same option for error handling - either to discard the value, set a specified value or set a specified error message.
It is now possible to match the error message to a regular expression. If the error matches (or does not match) it is possible to specify how the error case should be processed. For example, a specific error message can be "mapped" to a more general case to be matched for and handled by a further preprocessing step, or some intermittent (e.g., network connectivity) issue can be handled differently to a definite failure to acquire the item value.
Multiple Check for not supported value preprocessing steps can now be added. Note that there can be only one "any error" matching step at the end of the pipeline probing for unsupported state of the item. If present, it is activated if none of the specific checks (mis)matched the according pattern, or a (modified) error message was carried over - i.e., no "Discard value" or "Set value to" override came into effect.
See also: Check for not supported value
The previous design of the item mass update form was not sufficiently clear if the preprocessing step update would add or replace preprocessing steps. In the new design Replace and Remove all radio buttons have been added, making it clear for users what to expect as the result of preprocessing step mass update:
User macros are now supported in item names and item prototype names.
Note that user macro support was removed from item/item prototype names in Zabbix 6.0. Now it has been restored. It is also now supported to search for item name with the macros resolved, which previously was not supported.
The item name with resolved macros is stored in a separate database table (item_rtname
), which is an extension of the items table. For each record in the items table, a corresponding item_rtname
record is created (except for item prototypes, discovery rule items and template items). The name with resolved macros is limited to 2048 characters.
The item name with resolved macros is displayed in all frontend locations except the Data collection section.
A new configuration syncer worker
server process has been added that is responsible for resolving and synchronizing the user macro values in item names.
Macro functions are now supported with all types of macros:
Macro functions can be used in all locations supporting the listed macros. This applies unless explicitly stated that only a macro is expected (for example, when configuring host macros or low-level discovery rule filters).
The scheduled reports functionality is no longer experimental.
For multi-paged dashboards, reports are now returned with all the pages of the dashboard, with each PDF page corresponding to one dashboard page. Previously this functionality was limited to returning only the first dashboard page.
It is now possible to execute remote commands on a version 7.0 agent that is operating in active mode. Once the execution of a remote command is triggered by an action operation or manual script execution, the command will be included in the active checks configuration and executed once the active agent receives it. Note that older active agents will ignore any remote commands included in the active checks configuration. For more information, see Passive and active agent checks.
The processing of tags returned by the webhook script is now also supported for internal events.
Also, {EVENT.TAGS.<tag name>}, {EVENT.TAGS}, {EVENT.TAGSJSON}, {EVENT.RECOVERY.TAGS}, {EVENT.RECOVERY.TAGSJSON} macros are now supported for internal event notifications.
These changes allow to use webhooks for updating or closing an external issue/support ticket by internal event recovery notification.
The auditlog
table has been converted to hypertable on TimescaleDB in new installations to benefit from automatic partitioning on time (7 days by default) and better performance.
To successfully upgrade existing installations, see Upgrading TimescaleDB schema.
See also: Supported TimescaleDB versions
Proxy records have been moved out of the hosts
table and are now stored in the new proxy
table.
Also, operational data of proxies (such as last access, version, compatibility) have been moved out of the host_rtdata
table and is now stored in the new proxy_rtdata
table.
Several changes have been made as part of transitioning to a multithreaded architecture:
--with-stacksize
. This parameter allows to override the default thread stack size used by the system (in kilobytes).It is now possible to restrict some Zabbix functions to harden the security of the server environment:
$ALLOW_HTTP_AUTH=false
in the frontend configuration file (zabbix.conf.php).The possibility of configuration file validation has been added to the maintenance commands of Zabbix server, proxy, agent, agent 2, and web service. The validation can be done using the -T --test-config option. In case of successful validation, the exit code will be "0"; otherwise, the component will exit with non-zero exit code and a corresponding error message. Warnings (e.g., in case of a deprecated parameter) will not affect successful exit code.
Previously cURL library features were detected at build time of Zabbix server, proxy or agent. If cURL features were upgraded, to make use of them the respective Zabbix component had to be recompiled.
Now only a restart is required for upgraded cURL library features to become available in Zabbix. Recompilation is no longer required. This is true for Zabbix server, proxy or agent.
See also the upgrade notes.
Buffer size
The default value of the BufferSize configuration parameter for Zabbix agent 2 has been increased from 100 to 1000.
Empty values allowed
Empty values are now allowed in plugin-related configuration parameters on Zabbix agent 2.
The option to set the startup type of the Zabbix agent/agent 2 Windows service (-S --startup-type
) has been added. This option allows configuring the agent/agent 2 service to start automatically at Windows startup (automatic
), after the automatically started services have completed startup (delayed
), when started manually by a user or application (manual
) or to disable the service entirely (disabled
).
When performing Windows agent installation from MSI, the default startup type on Windows Server 2008/Vista and later versions is now delayed
if not specified otherwise in the STARTUPTYPE
command-line parameter. This improves the reliability and performance of the Zabbix agent/agent 2 Windows service, particularly during system restarts.
The old style of floating point values, previously deprecated, is no longer supported, as numeric values of extended range are used.
The configuration files zabbix_server.conf and zabbix_proxy.conf have been supplemented with a new, optional parameter Vault Prefix
; zabbix.conf.php has been supplemented with the optional $DB['VAULT_PREFIX']
, and setup.php has been updated accordingly.
The vault paths for CyberArk and HashiCorp are therefore no longer hardcoded to allow for vault deployments with non-standard paths.
Previously each network discovery rule was processed by one discoverer process. Thus all service checks within the rule could only be performed sequentially.
In the new version the network discovery process has been reworked to allow concurrency between service checks. A new discovery manager process has been added along with a configurable number of discovery workers (or threads).
The discovery manager processes discovery rules and creates a discovery job per each rule with tasks (service checks). The service checks are picked up and performed by the discovery workers. Only those checks that have the same IP and port are scheduled sequentially because some devices may not allow concurrent connections on the same port.
A new zabbix[discovery_queue]
internal item allows to monitor the number of discovery checks in the queue.
The StartDiscoverers parameter now determines the total number of available discovery workers for discovery. The default number of StartDiscoverers has been upped from 1 to 5, and the range from 0-250 to 0-1000. The discoverer
processes from previous Zabbix versions have been dropped.
Additionally:
Additional operations are now available for discovery and autoregistration events:
Low-level discovery rules can now link already discovered and existing host groups to hosts created by the same low-level discovery rules. This affects host groups previously discovered and created by other low-level discovery rules based on the specified group prototypes.
The data streaming functionality is no longer experimental.
When streaming item values from Zabbix to external systems, you can now configure which item values the connector should stream based on their type of information (numeric (unsigned), numeric (float), character, etc.).
In addition, to avoid unsuccessful attempts to stream item values or events (for example, if the HTTP endpoint is busy or rate-limited), you can now also configure the attempt interval - how long the connector should wait after an unsuccessful attempt to stream data.
201, 202, 203, and 204 HTTP response codes are now also accepted by connectors as success (previously only 200).
A new tool for streaming data to external systems - the Kafka connector for Zabbix server - is now available. The Kafka connector is a lightweight server written in Go, designed to forward item values and events from a Zabbix server to a Kafka broker.
For new templates and changes to existing templates, see Template changes.
Multi-factor authentication (MFA) with Time-Based One-Time Password (TOTP) or Duo Universal Prompt authentication method can now be used to sign in to Zabbix, providing an additional layer of security beyond just a username and password.
Time and date displays in the frontend now conform to the US standard time/date display when the default (en_US) frontend language is used.
Before | Now |
---|---|
Previously it was possible to Clone and Full clone hosts, templates and maps.
Now the option Clone has been removed, and the option Full clone has been renamed to Clone while still preserving all of the previous functionality of Full clone.
All icons in the frontend have been switched from icon image sheets to fonts.
Several frontend forms are now opened in modal (pop-up) windows:
The Advanced configuration checkboxes, responsible for displaying advanced configuration options, have been replaced with collapsible blocks (see, for example, Connector configuration, Service configuration, Clock widget configuration, etc.). This improves user experience, as collapsing these blocks and saving the configuration will no longer reset the configured advanced options to their default values.
The menu section for viewing the top triggers is now named Top 100 triggers. The possibility to filter triggers by problem name and tags has been added. Also, the number of detected problems instead of the number of status changes is now displayed for each trigger.
URL fields
The character limit for all URL fields is now 2048 characters. This now includes: Tile URL for settings related to geographical maps, Frontend URL for configuring miscellaneous frontend parameters, URLs for network maps and network map elements, URL A-C for host inventory fields, and URL for the URL dashboard widget.
Authentication fields
The character limit for authentication fields User/User name and Password is now 255 characters. This applies to configuring HTTP authentication for HTTP agent items, web scenarios, and connectors, as well as configuring authentication for simple checks, ODBC monitoring, SSH checks, Telnet checks, and JMX monitoring.
When testing items or testing preprocessing steps, values retrieved from a host and test results are now truncated to a maximum size of 512KB when sent to the frontend. Note that data larger than 512KB is still processed fully by Zabbix server.
All of the configured host dashboards for the selected host are now displayed as tabs under the host dashboards page header, replacing the previous dropdown in the upper right corner. This allows easy transition between various host dashboards and improves navigation through monitoring data.
In Administration → Audit log, you can now enable/disable audit logging of low-level discovery, network discovery and autoregistration activities performed by the server (System user).
The default period of storing audit log records before those are deleted by the housekeeper has been changed from 365 days to 31 days.
In Monitoring → Latest data, the subfilter and data are no longer displayed by default if the filter is not set.
If upgrading from previous Zabbix versions, see also: Upgrade notes for 7.0.0.
The minimum required PHP version has been raised from 7.4.0 to 8.0.0.
A new plugin for direct monitoring of Ember+ by Zabbix agent 2 has been added.
For more information, see:
Dedicated installation packages are available for versions 8 and 9 of AlmaLinux, CentOS Stream, Oracle Linux, and Rocky Linux. Earlier, single installation packages were provided for RHEL and RHEL-based distributions. Now separate packages are used for RHEL and each of its above-mentioned derivatives to avoid potential problems with binary incompatibility.
ARM64/AArch64 installation packages are now available for Debian, RHEL 8, 9 and its derivatives, as well as SLES/OpenSUSE Leap 15.