These notes are for upgrading from Áú»¢¶Ä²© 3.4.x to Áú»¢¶Ä²© 4.0.0. All notes are grouped into:
Critical
- the most critical information related to the upgrade process and the changes in Áú»¢¶Ä²© functionalityInformational
- all remaining information describing the changes in Áú»¢¶Ä²© functionalityIt is possible to upgrade to Áú»¢¶Ä²© 4.0.0 from versions before Áú»¢¶Ä²© 3.4.0. See the upgrade procedure section for all relevant information about upgrading from previous Áú»¢¶Ä²© versions.
Communication between Áú»¢¶Ä²© server and Áú»¢¶Ä²© proxies is now using compression to reduce network load and increase performance on low bandwidth network links.
Note that the header of Áú»¢¶Ä²© requests/responses has been changed as part of this development.
If you are using network security devices like or in your network and you are using Áú»¢¶Ä²© proxies, please make sure your application definitions are up to date for the new Áú»¢¶Ä²© proxy protocol prior to upgrading to 4.0.x as there have been reports on these devices dropping the traffic when encountering the compression in the network stream. Please contact your security vendor for more information on how to obtain updated definitions or possible workarounds if you run into this problem.
The Server parameter in passive proxy configuration, which previously was ignored, is now mandatory. The passive proxy will reject an address that is not listed in the Server parameter.
Support for the plain text protocol has been dropped and a header is now mandatory. A header has been added to Áú»¢¶Ä²© get requests, Áú»¢¶Ä²© server/proxy passive check requests and frontend requests to Áú»¢¶Ä²© server.
As a consequence, Áú»¢¶Ä²© agents that are older than version 1.4 are no longer supported. Also, messages from self-written senders will be rejected if the header is absent. Whereas previously Áú»¢¶Ä²© trappers would accept messages without headers as well as messages with headers, now they will only accept messages with protocol header.
Requests from an older Áú»¢¶Ä²© get version to the new agent will fail. Note that in this case the following error message is displayed:
History export via module is no longer supported by Áú»¢¶Ä²© proxy.
Monitoring ¡ú Triggers section is now removed. Related global parameters "Show events not older than" and "Max count of events per trigger to show" are removed as well respectively.
The following item key parameter syntax is no longer supported:
[a,[b,[c,d]],e]
[a][b]
Note that this syntax was never used by official Áú»¢¶Ä²© item keys, nor was it ever officially documented as supported. It only existed for backward compatibility with such solutions as .
Note that this change does not affect single-level parameters. See aggregate items for information about supported syntax.
To be able to add support of MySQL 8.0 in this version, two database changes have been made:
During the upgrade, parameter values of the logsource trigger function will be converted to work with added support of regular expressions and global regular expressions. There can be cases when existing parameters contain an extensive amount of regular expression special characters or their length is close to the maximum allowed limit and during conversion will exceed that maximum allowed length limit which is 255 characters. In such cases no changes will be made to those parameters and details about all these cases will be added to the log file. If there are issues with trigger performance because of this, the parameters that were not changed have to be edited manually.
When default system authentication was previously set to 'HTTP authentication' during the upgrade it will be changed to 'Internal' with 'HTTP Authentication' enabled by default. For such configuration it is required to clear existing user default password values in the database executing the following query:
HTTP basic-authentication specific code was removed from API, therefore the password
field is now mandatory for the API user.login
action.
Upgrading Áú»¢¶Ä²© may fail if database tables were created with MariaDB 10.2.1 and before, because in those versions the default row format is compact. This can be fixed by changing the row format to dynamic (see also ).
See the list of API changes in Áú»¢¶Ä²© 4.0.0.
Using positional ($1, $2, ...$9) and user macros in item and item prototype names is now deprecated. As a consequence, positional macros have been removed from item names and item prototype names in the standard templates shipped with Áú»¢¶Ä²© 4.0.
If you keep using positional macros, you will encounter the following difficulties when using the new graph widget:
CPU $2 time
individually to the graph, using its resolved name (like CPU user time
)CPU $2 time
to the graph (e.g. CPU user time
, CPU system time
, CPU idle time
, etc.)If you are using positional macros in item prototype names, it is suggested to update discovery rules manually by replacing the positional macro with the respective low-level discovery macro, for example, replace:
in the old item prototype naming with:
in the new item prototype naming. It will be possible to use items generated this way in the graph widget with no limitations.
Áú»¢¶Ä²© server will no longer adjust value timestamps in cases when Áú»¢¶Ä²© proxy/active agent/sender time differs from Áú»¢¶Ä²© server time.
The processing of time-based trigger functions such as nodata
(), date()
, dayofmonth()
, dayofweek()
, time()
and now()
has been moved from timer processes to history syncers.
While previously all time-based triggers were recalculated at the same time, creating peak loads every 30 seconds, now the time-based trigger processing is evenly spread within those 30 seconds.
With this change, the required number of timer processes may have to be recalculated, especially if previously multiple timers were configured to share the time-based trigger calculation load. Even though the time-based trigger calculations do not affect timer load anymore, maintenance calculations may require more resources and thus multiple timers can be configured to share the maintenance processing load.
When a host enters maintenance, Áú»¢¶Ä²© server timer processes will now read all open problems to check if it is required to suppress those. This may have a performance impact if there are many open problems. Áú»¢¶Ä²© server will also read all open problems upon startup, even if there are no maintenances configured at the time.
If maintenance period, hosts, groups or tags are changed by user, the changes will only take effect after configuration cache synchronization.
Auto-registration behavior has been changed in the following way:
As before, if auto-registration for the same host comes from a new Áú»¢¶Ä²© proxy, then auto-registration will be re-run.
Problem and event names are now stored directly in the event and problem tables upon event generation, instead of being generated in runtime as previously. A database patch will populate the new problem name and event name fields without macros expanded. Note that these changes will require more storage space.
Database upgrade during the initial server startup may take a long time if there are a lot of old events and {ITEM.VALUE}, {ITEM.LASTVALUE} macros are used in trigger names.
The values for the populated event and problem name fields are:
Since problem names are no longer generated in runtime based on the current trigger name, and instead are being generated at the time of event, there are corresponding macro changes:
See also: known issues
Several changes have been made for working with problems, including changed macros. For more details, see the what's new entry.
?problem.get
? and ?event.get
? methods have been changed in such a way that input parameter search/?filter with object {'?name':? '?...'?} as value is used to find matching results (by field "?name"?) in the corresponding table ("?problem"? or "?events"?).
?problem.get
? and ?event.get
? methods have been extended by adding a response parameter called "?name"?. For both methods, the new parameter contains a value from the newly added "?name"? field in the database table "?problem"? or "?events"?.
The server configuration cache has been modified to keep all host inventory information in it. If you are using the inventory functionality with hosts, increase the dedicated configuration cache memory for the server accordingly.
Upon completion of an external check script, arguments are wrapped to single quotes '
instead of double quotes "
. This change allows Áú»¢¶Ä²© to accept more signs in an external check parameter's name. For example, the $
sign is no longer ignored.
From now on Áú»¢¶Ä²© Java gateway availability status will not change to red each time any of the items become not supported. The JMX availability badge will only become red on network errors - when Java gateway is not available or when there are some communication problems between Áú»¢¶Ä²© server and Áú»¢¶Ä²© Java gateway.
If you monitor Java gateway logs, keep in mind that exception stack trace is no longer available in warning and error level logging of Java gateway.
Expression (Example) | Evaluation result | |
---|---|---|
Before | After | |
1.000001 > 1 | 1 | 0 |
1.000001 <= 1 | 0 | 1 |
0 >= 0.000001 | 0 | 1 |
0.000001 <> 0 | 1 | 0 |
0.000001 = 0 | 0 | 1 |
0 or (1/1000000) | 1 | 0 |
not (1/1000000) | 0 | 1 |
1 and 1/1000000 | 1 | 0 |
The following elements have been renamed:
Previously | In Áú»¢¶Ä²© 4.0 |
System status | Problems by severity |
Host status | Problem hosts |
Status of Áú»¢¶Ä²© | System information |
Dashboard API is also affected: some of Dashboard widget property types are now renamed.
The host column is now always displayed even if only one host is selected in:
This results in a wider page than previously with one host data. For more information, see the What's new section.
As Áú»¢¶Ä²© Java gateway now supports working with custom MBeans returning non-primitive data types, which override the toString() method, the possible error message has been changed the following way:
Previously: | data object type is not primitive: xxx |
In Áú»¢¶Ä²© 4.0: | Data object type cannot be converted to string. |
The message printed to the log files about a full history cache has been changed the following way:
Previously: | History buffer is full. Sleeping for 1 second. |
In Áú»¢¶Ä²© 4.0: | History cache is full. Sleeping for 1 second. |