Для начала попытаюсь внятно обрисовать хотелку, и саму ситуацию - хочу создать LLD правило при котором создавался бы один набор данных Item, но к нему создавались бы множественные триггеры которые потом будут срабатывать в зависимости от информации полученной на созданный ранее Item.
К примеру - я создаю правило обнаружения в котором использую тип - Zabbix trapper и следующий фильтр:

Далее создаю прототип объекта данных с именем "manual_{#MY_ITEM_NAME}" и ключём "manual_[{#MY_ITEM_NAME}]". Тип, также, Zabbix trapper, тип информации - "текст".
Затем создаю прототип триггера с именем "manual_[{#MY_ITEM_NAME}]" и выражением - '{Test_template:manual_[{#MY_ITEM_NAME}].regexp("{#MY_TRIGGER_NAME}_DOWN")}=1'.
Далее я посылаю серверу, при помощи zabbix_sender сообщение в котором содержатся следующие данные - '{"data":[{"{#MY_ITEM_NAME}":"ITEM", "{#MY_TRIGGER_NAME}":"NAME_1"}, {"{#MY_ITEM_NAME}":"ITEM", "{#MY_TRIGGER_NAME}":"NAME_2"}]}'
После этого на сервере, у нужного мне хоста создаётся объект данных с именем "manual_[ITEM]" и с таким же ключом - пока всё как и ожидалось. А вот с триггером - не всё как ожидалось - создаётся _один_ триггер с именем "manual_NAME_1" и содержимым соответствующим указанному выражению. Если послать то же сообщение ещё раз - предыдущий триггер удаляется, а вместо него создаётся новый с именем "manual_NAME_2", с соответствующим выражением. Все последующие попытки послать сообщение ничего визуально не меняют и у на сервере остаётся только один триггер с именем "manual_NAME_2".
Теперь вопрос - можно ли вообще реализовать подобную хотелку? И если да то как? Если нет - куда писать "feature request", чтобы прикрутили подобный функционал?
И ответы на вопросы ко мне, которые непременно возникнут - да я пробовал создавать отдельные прототипы данных, каждый со своим триггером. Да, это работает и есть не просит. Но мне не хочется иметь у хоста тысячи динамических объектов данных. Ведь вручную я могу это сделать - вручную, без проблем, создаётся _один_ объект данных, и его можно использовать в произвольном кол-ве триггеров, где каждый будет срабатывать на своё выражение.
Это мне нужно для сетевого оборудования к которому, в теории, может быть подключено до 24 тысяч клиентских устройств. И это сетевое оборудование шлёт одинаковые trap'ы о состоянии этих устройств, разница только в содержимом, которое я и хочу отлавливать.
К примеру - я создаю правило обнаружения в котором использую тип - Zabbix trapper и следующий фильтр:
Далее создаю прототип объекта данных с именем "manual_{#MY_ITEM_NAME}" и ключём "manual_[{#MY_ITEM_NAME}]". Тип, также, Zabbix trapper, тип информации - "текст".
Затем создаю прототип триггера с именем "manual_[{#MY_ITEM_NAME}]" и выражением - '{Test_template:manual_[{#MY_ITEM_NAME}].regexp("{#MY_TRIGGER_NAME}_DOWN")}=1'.
Далее я посылаю серверу, при помощи zabbix_sender сообщение в котором содержатся следующие данные - '{"data":[{"{#MY_ITEM_NAME}":"ITEM", "{#MY_TRIGGER_NAME}":"NAME_1"}, {"{#MY_ITEM_NAME}":"ITEM", "{#MY_TRIGGER_NAME}":"NAME_2"}]}'
После этого на сервере, у нужного мне хоста создаётся объект данных с именем "manual_[ITEM]" и с таким же ключом - пока всё как и ожидалось. А вот с триггером - не всё как ожидалось - создаётся _один_ триггер с именем "manual_NAME_1" и содержимым соответствующим указанному выражению. Если послать то же сообщение ещё раз - предыдущий триггер удаляется, а вместо него создаётся новый с именем "manual_NAME_2", с соответствующим выражением. Все последующие попытки послать сообщение ничего визуально не меняют и у на сервере остаётся только один триггер с именем "manual_NAME_2".
Теперь вопрос - можно ли вообще реализовать подобную хотелку? И если да то как? Если нет - куда писать "feature request", чтобы прикрутили подобный функционал?
И ответы на вопросы ко мне, которые непременно возникнут - да я пробовал создавать отдельные прототипы данных, каждый со своим триггером. Да, это работает и есть не просит. Но мне не хочется иметь у хоста тысячи динамических объектов данных. Ведь вручную я могу это сделать - вручную, без проблем, создаётся _один_ объект данных, и его можно использовать в произвольном кол-ве триггеров, где каждый будет срабатывать на своё выражение.
Это мне нужно для сетевого оборудования к которому, в теории, может быть подключено до 24 тысяч клиентских устройств. И это сетевое оборудование шлёт одинаковые trap'ы о состоянии этих устройств, разница только в содержимом, которое я и хочу отлавливать.
Comment