Size: a a a

Zabbix Russian Community

2020 April 15

IA

Ilya Ableev in Zabbix Russian Community
Alexey Zakharov
покорения новых горизонтов и кода без багов
Пасиб
источник

SZ

Serge Zwyagintsev in Zabbix Russian Community
кто может внести ясность:
есть wmi.getall запрос, на базе которого зависимое LLD.
сам JSON, возвращаемый wmi.getall здоровый и, по идее, нефиг его хранить в базе.
частота опроса элемента 1m
Если я в препроцессинге для wmi.getall поставлю Discard unchanged, а в LLD препроцессинге поставлю Discard unchanged with heartbeat 1h оно вообще будет мне дискаверить, при учете, что JSON из запроса базового элемента меняется очень редко?
источник

SZ

Serge Zwyagintsev in Zabbix Russian Community
Или зависимое LLD отрабатывает только если данные по основному элементу в базу пишутся, и для этого нужно еще хертбит ставить и на основной элемент от которого оно зависит?
источник

OK

Oleg Kostikov in Zabbix Russian Community
wmi.getall может возвращать не только редко изменяемые сущности для LLD, но и значения метрик. Можно сказать ему Do not keep history, а в зависимом LLD первым шагом препроцесссинга вытащить через JSONPath требуемый массив (если, конечно, он не верхнеуровневый), а вторым добавить Discard unchanged with heartbeat
источник

SZ

Serge Zwyagintsev in Zabbix Russian Community
Oleg Kostikov
wmi.getall может возвращать не только редко изменяемые сущности для LLD, но и значения метрик. Можно сказать ему Do not keep history, а в зависимом LLD первым шагом препроцесссинга вытащить через JSONPath требуемый массив (если, конечно, он не верхнеуровневый), а вторым добавить Discard unchanged with heartbeat
ну я так составил запрос wmi, что он мне не возвращает данные (потому что, оказалось, что wmi.getall криво работает местами, и мне пришлось скрестить в LLD wmi.getall и wmi.get).
и теперь цель - чтобы эти портянки JSON от wmi.getall не хранились в базе, но при этом весь фунцкионал по LLD работал (включая фильтры).
и в доке я не смог найти информации, которая бы пояснила мне, в какой момент зависимое LLD начинает работать - каждый раз при поступлении данных в основной элемент, независимо от того, пишутся эти данные для основного элемента в базу, или только в тот момент, когда данные по основному элементу пишутся в базу..

И второй вопрос, вытекающий из первого - на что тогда, по-сути, влияет хертбит в препроцессинге LLD? ЕСли хетрбит стоит 1h, то значит ли это, что LLD будет пересчитываться раз в час гарантированно, независимо от поступивших данных и фильтры по макросам применять (независимо от того, что входные данные не меняются)?
источник

OK

Oleg Kostikov in Zabbix Russian Community
По первому вопросу - в БД данные мастер-айтема писать не надо. По второму - LLD будет пересчитываться раз в час, но при этом должны приходить данные от мастер-айтема (неважно, неизменные или нет), иначе не будет повода для пересчета
источник

OK

Oleg Kostikov in Zabbix Russian Community
но если мастер-айтем только для LLD, то можно и не делать зависимое LLD, сразу сделать LLD с ключом wmi.getall
источник

SZ

Serge Zwyagintsev in Zabbix Russian Community
Oleg Kostikov
По первому вопросу - в БД данные мастер-айтема писать не надо. По второму - LLD будет пересчитываться раз в час, но при этом должны приходить данные от мастер-айтема (неважно, неизменные или нет), иначе не будет повода для пересчета
По первому вопросу ведь есть два варианта решения: не писать данные в базу, как ты подсказал - "Do not keep history" или можно их "дискардить при поступлении". С твоим вариантом - понятно, он у тебя, подозреваю, успешно работает. А вот с моим вариантом - не понятно. И тут плавно вытекает второй вопрос по второму вопросу: "LLD будет пересчитываться раз в час, но при этом должны приходить данные от мастер-айтема (неважно, неизменные или нет)" надо расценивать, как то, что эти данные должны попасть в базу? Ну, тоесть, если я хертбит основному элементу поставлю 1ч, то у меня данные будут в LLD поступать раз в час (при их неизменности)? А при discard unchanged данные в LLD вообще не будут поступать, так?
источник

OK

Oleg Kostikov in Zabbix Russian Community
если дискардить мастер-айтем - зависимый ничего не получит, ибо он имеет дело с данными мастер-айтема после препроцессинга, частью которого является дискардинг
источник

OK

Oleg Kostikov in Zabbix Russian Community
а вот пишется ли мастер-айтем в БД - это пофиг
источник

SZ

Serge Zwyagintsev in Zabbix Russian Community
Oleg Kostikov
но если мастер-айтем только для LLD, то можно и не делать зависимое LLD, сразу сделать LLD с ключом wmi.getall
в корень зришь. В моем случае - мастер айтем только для LLD. И действительно, можно тогда прям в LLD указать в ключе wmi.getall, собрать нужные мне макросы и уже в прототипах элемента использовать wmi.get на базе этих макросов. И тогда здесь заработает тот самый хертбит из LLD препроцессинга.. А сами данные JSON из ключа LLD при этом не сохранятся нигда, так?
что-то я даже не подумал про такое.. а есть ли тут подводные камни?
источник

OK

Oleg Kostikov in Zabbix Russian Community
Да нет, норм. Зависимое LLD нужно, когда у тебя и прототипы айтемов из того же мастер-айтема будут данные дергать
источник

SZ

Serge Zwyagintsev in Zabbix Russian Community
Oleg Kostikov
если дискардить мастер-айтем - зависимый ничего не получит, ибо он имеет дело с данными мастер-айтема после препроцессинга, частью которого является дискардинг
вот этого понимания у меня и не было. теперь понял, благодарю!
источник

SZ

Serge Zwyagintsev in Zabbix Russian Community
Oleg Kostikov
Да нет, норм. Зависимое LLD нужно, когда у тебя и прототипы айтемов из того же мастер-айтема будут данные дергать
Получается, в этом случае я решаю проблему с "нехранением" JSON, который получаю из ключа wmi.getall, который в LLD используется? Он после обсчета LLD просто выкидывается из памяти и все?
источник

OK

Oleg Kostikov in Zabbix Russian Community
Ну да, только собирай пореже. Или собирай часто, но в LLD сделай дискардинг с хартбитом, чтобы LLD rule не пересчитывалось, если JSON не изменился
источник

SZ

Serge Zwyagintsev in Zabbix Russian Community
Oleg Kostikov
Ну да, только собирай пореже. Или собирай часто, но в LLD сделай дискардинг с хартбитом, чтобы LLD rule не пересчитывалось, если JSON не изменился
а что такое "LLD rule"? Пересоздание прототипов элементов (триггеров и пр.)?
источник

OK

Oleg Kostikov in Zabbix Russian Community
ну да, затратный процесс
источник

SZ

Serge Zwyagintsev in Zabbix Russian Community
Oleg Kostikov
ну да, затратный процесс
даже если он ничего не создает при этом (ничего не поменялось в JSON)?
источник

OK

Oleg Kostikov in Zabbix Russian Community
да, правило все равно пересчитывается
источник

OK

Oleg Kostikov in Zabbix Russian Community
поэтому традиционные LLD так редко запускаются
источник