-
Change Request
-
Resolution: Unresolved
-
Medium
-
None
-
None
-
None
Current implementation of host prototype inherits 'Monitored by' field from parent host. The proposal is to make this field editable in host prototype with possibility to set the value which is different from parent host. We expect to set 'monitored by' field value with LLD macros.
Our zabbix setup consist of many zabbix proxy groups. We use LLD to discover hosts. Our discovered hosts are located world wide and we have strict mapping between host location and zabbix proxy. As an example - hosts that must be monitored by zabbix proxy are located in 3 regions, each region consist of 3 data centers. We have zabbix proxy group for each data center, so totally we have 9 zabbix proxy groups. During discovery phase we must assign zabbix proxy to discovered host based on host physical location (by data center). For now, we have created 9 hosts for each zabbix proxy group (let it be parent hosts) - those hosts are monitored by its zabbix proxy group. We use those hosts to create host prototypes, so each discovered host inherit the zabbix proxy group from parent host. To split discovered host between correct parent hosts we use LLD filter, each parent host has specific LLD filter. The JSON data used by discovery rule, has field {#LOCATION} with value of data center. We use this LLD macros in LLD filter and this is our solution to split discovered host between parent hosts.
This approach has some disadvantages:
- when we get new data center, we must update LLD filters in each of 9 parent hosts. This action is required human, so it adds additional operational expenses.
- We must place script that provides JSON for low lever discovery on each zabbix proxy. It add more operational expenses as we must keep zabbix proxy IPs in whitelist on API side, also we make 9x more requests to API.
We want to define zabbix proxy group for host prototype with LLD macros. It helps us to simplify discovery architecture and operational activities. With such feature we expect to place low level discovery script on zabbix server rather then proxies, and set zabbix proxy for host prototype with LLD macros which we add in JSON output (we just move the logic of choosing correct zabbix proxy on script side).