9 Upgrade notes for 4.2.0
These notes are for upgrading from Zabbix 4.0.x to Zabbix 4.2.0. All notes are grouped into:
Critical- the most critical information related to the upgrade process and the changes in Zabbix functionalityInformational- all remaining information describing the changes in Zabbix functionality
It is possible to upgrade to Zabbix 4.2.0 from versions before Zabbix 4.0.0. See the upgrade procedure section for all relevant information about upgrading from previous Zabbix versions.
Critical
Preprocessing support on Zabbix proxy
For hosts monitored by proxies, all item (including low-level discovery rules, dependent items) value preprocessing will now be done on the proxy.
Given new preprocessing options such as Javascript, extensive validation and throttling options, preprocessing may become a server bottleneck thus preprocessing by proxies offers the necessary scalability. Note that since this is not a configurable setting the affected proxies will require more resources after the upgrade, especially if heavier preprocessing is involved.
Because of this change, keeping proxies running
during the server upgrade process will bring no benefit as during proxy
upgrade their old data will be discarded and no new data will be
gathered until proxy configuration is synced with server.
It is also no longer possible to use the officially unsupported
possibility to start the upgraded server and have older, yet unupgraded
proxies report data to a newer server. This approach now is officially
disabled when upgrading to 4.2 (or later) from any version before 4.2,
as the server will ignore data from unupgraded proxies.
Low-level discovery rules
In order to support discovery item value preprocessing and custom paths to low-level discovery (LLD) macro values in a JSON document, the format of the JSON returned by low-level discovery rules has been changed: it is no longer expected that the JSON will contain the "data" object. Instead, low-level discovery will now accept a normal JSON containing an array.
While the "data" element has been removed from all native items related
to discovery, for backward compatibility Zabbix will still accept the
JSON notation with a "data" element, though its use is discouraged. If
the JSON contains an object with only one "data" array element, then it
will automatically extract the content of the element using JSONPath
$.data.
As a result of the changes above, newer agents no longer will be able to work with an older Zabbix server.
Requirement changes
PHP GD library minimum version has been upped from 2.0 to 2.0.28 to support animated GIFs in maps.
Informational
Low-level discovery processing
Processing low-level discovery has been split from data gathering processes into its own processing. Due to this, depending on how heavy low-level discovery is in your environment, you may:
- Need to increase the default number of the new LLD processors (StartLLDProcessors server parameter, 2 by default)
- Consider decreasing the number of pollers, trappers and proxypollers (if they were heavily loaded with LLD processing before)
The new zabbix[lld_queue] internal
item can be used to monitor
if the default number of StartLLDProcessors is enough.
Deprecated API features removed
Several API features that have been deprecated since Zabbix 3.4, are now completely removed:
httptest.create,httptest.updatemethods: support of string format for 'headers' and 'variables' fields in both web scenario and web scenario step objects has been dropped;map.create,map.updatemethods: support of 'elementid' in map element object has been dropped.
Changed URL for global search
As the global search page has been moved to MVC, its URL has changed
from https://localhost/zabbix/search.php?search=Zabbix to
https://localhost/zabbix/zabbix.php?action=search&search=Zabbix.
Host sorting in host group map element
Host sorting if the 'Host group' map option is selected, is now done non-casesensitively.
Zabbix sender messages
Zabbix sender response messages have been changed from:
info from server: "processed: 100; failed: 0; total: 100; seconds spent: 0.013683"
sent:100; skipped: 0; total: 100
to:
Response from "127.0.0.1:10051": "processed: 100; failed: 0; total: 100; seconds spent: 0.000247"
sent: 100; skipped: 0; total: 100
or, when sent to multiple servers:
Response from "127.0.0.1:10051": "processed: 100; failed: 0; total: 100; seconds spent: 0.000247"
Response from "192.168.0.1:10052": "processed: 100; failed: 0; total: 100; seconds spent: 0.000391"
Response from "localhost:10053": "processed: 100; failed: 0; total: 100; seconds spent: 0.000086"
sent: 100; skipped: 0; total: 100