[ZBX-10016] No need to store host connection details in server configuration cache if the host is monitored by proxy Created: 2015 Oct 28  Updated: 2019 Dec 10

Status: Open
Project: ZABBIX BUGS AND ISSUES
Component/s: Server (S)
Affects Version/s: None
Fix Version/s: None

Type: Incident report Priority: Trivial
Reporter: Glebs Ivanovskis (Inactive) Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: cache, cachesize, memory, proxy
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

Seems like we can save up some space in server configuration cache by not loading there some of the information about hosts monitored by proxies. Since server does not connect directly to these hosts there is no need to store respective host interfaces and encryption settings in server configuration cache.

This is related to (78) of ZBXNEXT-1263.



 Comments   
Comment by Andris Mednis [ 2015 Oct 28 ]

Server escalator process may connect directly to hosts monitored via proxies if remote commands are configured to run on hosts agents. But in this case connection details for host are fetched from DB, not from server configuration cache. (There is ZBXNEXT-936 to support remote commands through proxies).

Comment by Oleksii Zagorskyi [ 2015 Oct 29 ]

Take a look to https://www.zabbix.com/documentation/3.0/manual/introduction/whatsnew300#performance_improvements1

When an active proxy connects to Zabbix server information about this proxy is retrieved from server configuration cache (in earlier versions it was retrieved directly from database). This improves performance and reduces database load. On the other hand, active proxy configuration change now has not instant effect. It has to wait until server configuration cache is synchronized with database (can be enforced from commandline).

It we will not include the connection data to configuration cache - it will break the improvement.

Comment by Marc [ 2015 Oct 29 ]

ZBXNEXT-1285 might need to remain that information on Zabbix server too.

Comment by Glebs Ivanovskis (Inactive) [ 2015 Oct 29 ]

Thank you all for the comments! Of course, more thorough investigation is needed before we proceed with this idea and maybe it is not a good idea at all.

Regarding active proxy configuration... Here are two places where configuration data is sent to proxies (I would imagine one is for active and the other is for passive proxies):

$ grep -r "sending configuration data to proxy"
src/zabbix_server/trapper/proxyconfig.c:	zabbix_log(LOG_LEVEL_WARNING, "sending configuration data to proxy \"%s\" at \"%s\", datalen " ZBX_FS_SIZE_T,
src/zabbix_server/proxypoller/proxypoller.c:				zabbix_log(LOG_LEVEL_WARNING, "sending configuration data to proxy \"%s\" at \"%s\","

Same function is called in both cases:

$ grep -r "get_proxyconfig_data"
src/libs/zbxdbhigh/proxy.c:int	get_proxyconfig_data(zbx_uint64_t proxy_hostid, struct zbx_json *j, char **error)
src/zabbix_server/trapper/proxyconfig.c:	if (SUCCEED != get_proxyconfig_data(proxy_hostid, &j, &error))
src/zabbix_server/proxypoller/proxypoller.c:			if (SUCCEED != (ret = get_proxyconfig_data(proxy.hostid, &j, &error)))
include/proxy.h:int	get_proxyconfig_data(zbx_uint64_t proxy_hostid, struct zbx_json *j, char **error);

Function get_proxyconfig_data() then calls get_proxy_monitored_hosts() which in turn calls DBselect().

Apparently, large part of this issue is out of my scope. Much more time needed to grasp all the details.

Generated at Fri Apr 26 00:54:51 EEST 2024 using Jira 9.12.4#9120004-sha1:625303b708afdb767e17cb2838290c41888e9ff0.