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.
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.
The support for Oracle as a backend database has been deprecated in Zabbix 7.0 and is expected to be completely removed in future versions.
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 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 time period.
Every second the timer process checks if any maintenances must be started/stopped based on whether there are changes to the timeperiods
table after the configuration update. Thus the speed of starting/stopping maintenance periods depends on the configuration update interval (10 seconds by default).
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).
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.
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 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 data (for example, if the HTTP endpoint is busy or rate-limited), you can now configure the attempt interval - how long the connector should wait after an unsuccessful attempt to stream data.
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.
New poller processes have been added capable of executing multiple checks at the same time:
agent poller
http agent pollers
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
and 'http 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.
The maximum concurrency for asynchronous pollers (both agent and HTTP agent) is defined by MaxConcurrentChecksPerPoller.
Note that after the upgrade all agent and HTTP agent checks will be moved to asynchronous pollers.
As part of the development, the persistent connections cURL feature has been added to HTTP agent checks.
Proxy load balancing introduces proxy groups in Zabbix. Proxy groups provide such features as automatic distribution of hosts between proxies, proxy load re-balancing and high proxy availability - when a proxy goes offline, its hosts are immediately distributed among other proxies in the group.
For more information, see proxy load balancing.
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).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.
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.
The default value of the BufferSize configuration parameter for Zabbix agent 2 has been increased from 100 to 1000.
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 thi 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.
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.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.
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).
Previously each network discovery rule was processed by one discoverer process. Thus all service checks within the rule would 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, the number of available workers per each rule is now configurable in the frontend. This parameter is optional.
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.
Several aggregate functions have been updated. Now:
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.
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.
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 system.sw.packages and system.sw.packages.get agent items are now supported on Gentoo Linux.
The system.hostname item now can return a Fully Qualified Domain Name, if the new fqdn option is specified in the type parameter.
The 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.
A new options parameter has been added to the icmpping, icmppingloss, and icmppingsec 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.
The oracle.ts.discovery Zabbix agent 2 item now returns a new {#CON_NAME} LLD macro with container name.
The 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.
A new options parameter has been added to:
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.
Starting with Zabbix agent 7.0, it is now possible to execute remote commands on an 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, you must rerun the `timescaledb.sql`` script, located in database/postgresql, before starting Zabbix server. Zabbix server will log a warning, if started without running this script first.
See also: TimescaleDB setup.
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.
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.
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.
Host dashboards are now displayed as tabs under the header, replacing the previous dropdown in the upper right corner. This enables users to easily transition between various host dashboards and navigate 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.
The form for module details is now opened in a modal (pop-up) window.
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.
The old style of floating point values, previously deprecated, is no longer supported, as numeric values of extended range are used.
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.
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 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.
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.
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.
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.
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-bu-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, 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.
New functions have been added for use in trigger expressions and calculated items:
See also: String functions
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.
Multi-factor authentication (MFA) with Time-Based One-Time Password (TOTP) or Duo Universal Prompt 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 date/time display when the default (en_US) frontend theme is used.
Before | Now |
---|---|
Dashboard widgets can now connect and communicate with each other, making widgets and dashboards more dynamic.
For this, the Enable host selection widget parameter has been replaced with the Override host parameter, and multiple widgets now have the Time period parameter. These parameters can be used to configure a single data source to control the data displayed in one or multiple widgets without reconfiguring the widgets. The data source can be either a compatible widget from the same dashboard, the dashboard itself, or the widget itself (for time periods).
The Override host parameter is used to set a data source containing a host for which the widget can display data. The Time period parameter is used to set a data source containing a time period for which the widget can display data.
For more information, see Dashboard widgets.
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.
Each standard item now has a direct link from the frontend to its documentation page. The links are under the question mark icon, when opening the item helper from the item configuration form:
Timeout configuration 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.
Resources that are no longer discovered by low-level disocvery 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 info icon in the status 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.
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).
Scheduled reports now return reports with all pages for multi-paged dashboards. Each PDF page corresponds to one dashboard page.
Previously this functionality was limited to returning only the first dashboard page.
All icons in the frontend have been replaced by fonts.
Default value of the BufferSize configuration parameter for Zabbix agent 2 has been increased from 100 to 1000.
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.