[ZBXNEXT-4004] offload LLD data processing from trappers and proxy pollers (critical for monitoring by proxies) Created: 2017 Feb 07  Updated: 2024 Apr 10  Resolved: 2019 Jun 17

Status: Closed
Project: ZABBIX FEATURE REQUESTS
Component/s: Server (S)
Affects Version/s: None
Fix Version/s: None

Type: Change Request Priority: Critical
Reporter: Oleksii Zagorskyi Assignee: Zabbix Development Team
Resolution: Duplicate Votes: 18
Labels: lld, proxy, synchronization
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: PDF File Oleg_Ivanivskyi-Zabbix_Internals.pdf     File zabbix_server.log.debug.1.7z     PNG File zabdebug3.png    
Issue Links:
Causes
Duplicate
duplicates ZBXNEXT-4087 Allow preprocessing in LLD rules Closed
Sub-task
part of ZBXNEXT-4087 Allow preprocessing in LLD rules Closed
part of ZBXNEXT-3205 Add support for wildcards and / or gl... Closed
Team: Team A
Sprint: Sprint 53 (Jun 2019)
Story Points: 6

 Description   

Active proxy:
If zabbix server gets LLD data from active proxy - it processes the data in the same time, TCP connection stays opened, proxy's data sender is waiting a reply from server.
All this time history is not synchronized during a few minutes and many nodata() triggers on server gets PROBLEMS.
For example 3 LLD rules send ~300KB json data in one (or in a few consecutive) connection(s). Proxy's data sender is 100% for 3-4 minutes, while usually the data sender is just 4% busy.

Passive proxy:
A 1 hour maintenance of DB server is performed (backup), but it does not not affect zabbix server in general meaning, except of:
server's proxy poller gets 1000 (=ZBX_MAX_HRECORDS) values (2MB data, multiple LLD rules data), and spends 7 seconds to process it. Without exiting from a loop, it ask more history again (ZBX_PROTO_VALUE_HISTORY_DATA) and again gets 1000 vales (10MB data this time) and processes it 30+ seconds (how much exactly - unknown) and so on.
As we know there is an internal queue for proxy pollers (info from wiper), so only one proxy poller will be working with the proxy.
Discovered issue: history sync will be delayed AND configuration synchronization of the proxy is not performed at all during the period!

To resolve all the issues - LLD data processing should be offloaded from current proxy<->server communication.



 Comments   
Comment by zhang [ 2017 Aug 25 ]

I like this idea.

Comment by Backoffice Team [ 2019 Apr 16 ]

As per Oleg presentation, LLD rules are processed directly into DB (attached, also here: https://assets.zabbix.com/files/zabsummit2018/Oleg_Ivanivskyi-Zabbix_Internals.pdf).

It would be even better than initial request if LLD rules were processed into `configuration cache`, and then `configuration syncer` would write changes only it into the database. This way we can easy off some of the DB pressure and also speed up the LLD update process, since proxies would (depending on sync times) have items sooner.

The MVP is indeed what the ticket asks: we need is to sync LLD data in a asynchronous way (without blocking the whole proxy<=>server communication until it ends).

Comment by Vladislavs Sokurenko [ 2019 Jun 12 ]

I am sorry but it might be implemented already under ZBXNEXT-4087 is the feature still actual ?

https://www.zabbix.com/documentation/4.2/manual/introduction/whatsnew420#preprocessing_and_custom_macros_in_low-level_discovery

Separate processing for low-level discovery

Processing low-level discovery rules has been split from data gathering processes into its own processing, consisting of a configurable number of low-level discovery workers and a low-level discovery manager. This change greatly reduces low-level discovery impact on data gathering (poller, trapper processes) and proxy communications (trapper, proxypoller processes). Before data gathering could be delayed because the corresponding data gathering processes were busy with low-level discovery.

Comment by Vladislavs Sokurenko [ 2019 Jun 13 ]

LLD worker and LLD manager process was introduced and it will handle LLD in background, to simplify, for example Zabbix proxy sends data to server and disconnects, then LLD worker on Zabbix server performs discovery.

Comment by Vladislavs Sokurenko [ 2019 Jun 17 ]

This feature request was implemented as part of ZBXNEXT-4087 in pre-4.2.0alpha4, closing as duplicate

Generated at Tue Jun 17 08:31:45 EEST 2025 using Jira 9.12.4#9120004-sha1:625303b708afdb767e17cb2838290c41888e9ff0.