10 Upgrade notes for 5.0.0

These notes are for upgrading from Zabbix 4.4.x to Zabbix 5.0.0. All notes are grouped into:

  • Critical - the most critical information related to the upgrade process and the changes in Zabbix functionality
  • Informational - all remaining information describing the changes in Zabbix functionality

It is possible to upgrade to Zabbix 5.0.0 from versions before Zabbix 4.4.0. See the upgrade procedure section for all relevant information about upgrading from previous Zabbix versions.

Critical

Minimum required PHP version

The minimum required PHP version has been upped to 7.2.0 from 5.4.0.

This change also affects the ability to install Zabbix frontend from packages in some distributions. See detailed instructions for installing Zabbix frontend from packages on RHEL/CentOS 7 and the affected Debian/Ubuntu versions.

Support of IBM DB2 dropped

The IBM DB2 database can no longer be used as a back-end database for Zabbix.

Support of Internet Explorer 11 dropped

Microsoft Internet Explorer 11 is no longer supported by Zabbix.

Support of mbedTLS (PolarSSL) crypto library dropped

mbedTLS (PolarSSL) crypto library is no longer supported by Zabbix. Supported crypto libraries are GnuTLS and OpenSSL.

Minimum required database versions

Minimum database versions required for Zabbix 5.0.0 have been upped to:

  • MySQL 5.7 (For older MySQL versions DB upgrade may fail due to the InnoDB key prefix limit set at 767 bytes. The issue is fixed by increasing the limit to 3072 bytes in MySQL 5.7 and newer.)
  • MariaDB 10.0.37
  • PostgreSQL 9.2.24
  • Oracle 11.2

Upgrade with MySQL below 5.7.0 or MariaDB below 10.2.2

Upgrading Zabbix may fail if database tables were created with older DB versions (MySQL versions prior to 5.7 or MariaDB versions prior to 10.2.2), because in those versions the default row format is compact.

This can be fixed by changing the row format to dynamic. See also ZBX-17690 (MariaDB) and ZBX-20165 (MySQL).

Enabling extended range of numeric (float) values

Numeric (float) data type now supports precision of approximately 15 digits and range from approximately -1.79E+308 to 1.79E+308 (with exception of PostgreSQL 11 and earlier versions). This is by default for new installations. However, when upgrading existing installations, a manual database upgrade patch must be applied.

If you do not apply the patch, System information in the frontend will display: "Database history tables upgraded: No".

The patch will alter data columns of history and trends tables, which usually contain lots of data, therefore it is expected to take some time to complete. Since the exact estimate depends on server performance, database management system configuration and version, and it cannot be predicted, it is recommended to first test the patch outside the production environment, even though with MySQL 8.0 and MariaDB 10.5 configured by default the patch is known to be executed instantly for large tables due to efficient algorithm and the fact that previously the same double type was used but with limited precision, meaning that data itself does not need to be modified.

Please execute the appropriate patch (SQL file) for your database; you may find these scripts in the Zabbix Git repository for:

Important!
* Run these scripts for the server database only.
* Make sure Zabbix server is stopped before running these scripts. Start the server afterwards.

Note that with TimescaleDB the compression support must only be turned on after applying this patch.

After upgrading database tables, please also set or update $DB['DOUBLE_IEEE754'] value to true in /ui/conf/zabbix.conf.php.

Non-root permissions implemented for Docker images

Zabbix Docker images have been updated to implement non-root container best practices. Due to the change:

  • All directories have been restricted for the container user, except directories which are required for the container. For example, /etc/zabbix/ with Zabbix component configuration files.
  • Ports 80 and 443 have been changed to 8080 and 8443, because usage of all ports <1024 is restricted for non-privileged users. Zabbix web interface images have been updated to use non-privileged ports 8080, 8443; Zabbix snmptrap images port 1162.
  • All Zabbix images are updated to use a non-privileged user. By default, 'zabbix' with UID 1997.

A known issue: Nginx based images do not run under root. Will be fixed soon.

API changes

See the list of API changes in Zabbix 5.0.0.

Informational

SNMP credentials at host interface level

Setting SNMP interface credentials has been moved from item level to host interface level. There is an automatic upgrade procedure that moves existing SNMP items to their appropriate interfaces. So, for example, if before upgrade there was:

1 SNMP interface with 1 SNMP v1 item and 1 SNMP v2 item

after the upgrade there will be 2 SNMP interfaces:

1 SNMPv1 interface with 1 SNMP v1 item
       1 SNMPv2 interface with 1 SNMP v2 item

If there were 2 identical SNMPv3 items with different passwords before the upgrade:

1 SNMP interface with 1 SNMP v3 item with password="alpha" and 1 SNMP v3 item with password="beta"

after the upgrade there will be 2 SNMP interfaces:

1 SNMPv3 interface with 1 SNMP v3 item with password="alpha"
       1 SNMPv3 interface with 1 SNMP v3 item with password="beta"

Changed Zabbix PHP file directory

The downloaded Zabbix frontend PHP files are now located in the ui directory instead of frontends/php. This is relevant when using Zabbix sources for the installation.

Changed acknowledgment screen URL

URL parameters of the problem update (acknowledgment) screen have changed. For example, if previously the page parameters were:

?action=acknowledge.edit&eventids[]=100

in the new version they are:

?action=popup&popup_action=acknowledge.edit&eventids[]=100

In a related development, when successfully updating a problem from a dashboard widget, only the widget gets reloaded, not the whole page. So the content of another widget displaying the same problem will remain unchanged until the next scheduled widget refresh or complete page refresh.

No data triggers sensitive to proxy availability

No data triggers are now, by default, sensitive to proxy availability.

Fullscreen mode replaced by hiding menu

The fullscreen mode has been removed from the Monitoring sections of the frontend. Frontend URLs containing 'fullscreen' will work no more. The same effect (showing only page title and content) now can be achieved by hiding the new vertical menu. The kiosk mode (page content only, no page title at all) remains.

Option for dropdown first entry removed

The screen for configuring frontend defaults no longer has a Dropdown first entry option, because dropdowns for host group and host selection have been replaced with multiselect fields in the frontend.

Configuration parameters

EnableRemoteCommands agent parameter is still supported (it may get deprecated and removed in the future) alongside the new DenyKey/AllowKey parameters. When upgrading existing agents, remote commands will not be allowed unless you:

  • Set EnableRemoteCommands=1
  • Remove or comment out DenyKey=system.run[*]

In this case remote commands will be allowed without restrictions. To create restrictions, use a combination of AllowKey and DenyKey parameters.

Item key limit

The maximum allowed length of an item key has been raised from 256 to 2048 characters.

Minimum Net-SNMP version

It is now possible to manually clear the SNMP cache on Zabbix server and proxy. Due to adding a new runtime control option, Net-SNMP version 5.3.0 or higher is now required for SNMP support.

Redis plugin update

Configuration parameter Plugins.Redis.Password was removed and an opportunity to pass a password as a key parameter has now been added. See Redis plugin for details.

Supported Elasticsearch versions changed

Elasticsearch version 7.X is now supported. Support of the older versions has been dropped.