Всё пытаюсь понять, что же Вы делаете, и всё не уверен, что понимаю правильно...
Начнём с конца.
Есть правило LLD, которому на вход подаётся JSON вида:
(видимо, список инстансов). ОК.
На основе этого правила генерируются айтемы (элементы данных), в прототипах которых для ключей указано:
ОК, до этого места понятно. С данным JSON-ом должно появиться два айтема (по числу инстансов) с такими ключами:
а) они появляются?
б) данные в них поступают (смотреть в Latest data, желательно отметив в фильтре "галочки" "Show items without data" и "Show details")?
Что делается дальше, уже менее понятно. Поправьте, пожалуйста, где я ошибаюсь.
Видимо, данные в указанные айтемы поступают; в частности - для айтема с ключом dbinfo[akdb --json] в качестве значение приходит такой текст:
В том же правиле обнаружения в прототипах, кроме айтема с ключом dbinfo[{#INST_NAME} --json], задан ещё и другой айтем - с ключом:
Он описан как зависимый от предыдущего, и в правилах препроцессинга указано, что получать значения надо из JSON-а, возвращаемого как значение предыдущего айтема.
Т.е. должны получиться ещё два айтема с ключами:
В частности, предполагается, что значением айтема instname[akdb] будет строка "akdb".
Они создаются?
Если да - то приходят ли в них какие-то значения?
Становятся ли эти айтему неподдерживаемыми (помеченными значком "х" в красном квадратике)? Если да - то какое сообщение "светится" при нажатии на эту пометку?
Если все мои предположения верны, то да - Вы правы:
Макрос возвращается правилом в JSON-е, по которому работает правило LLD, там он есть. Вы же в прототипе строите айтем с использованием данного макроса; единственное - я не уверен, что можно LLD-макросы использовать в правилах препроцессинга. Логично было бы написать там:
, но точно сказать не могу - у меня нет Zabbix v3.4. К сожалению, официальная документация ничего не говорит об LLD-макросах в правилах препроцессинга, поэтому, может оказаться, что они там (пока?) не поддерживаются. Но даже если так, то можно обойти эту проблему, воспользовавшись в препроцессинге регулярными выражениями вместо разбора JSON-а (по крайней мере, для такого простого JSON-а, как в Вашем примере).
Начнём с конца.
Есть правило LLD, которому на вход подаётся JSON вида:
Code:
{"data": [{"{#INST_NAME}": "ONIXDB"},{"{#INST_NAME}": "akdb"}]}
На основе этого правила генерируются айтемы (элементы данных), в прототипах которых для ключей указано:
Code:
dbinfo[{#INST_NAME} --json]
- dbinfo[ONIXDB --json]
- dbinfo[akdb --json]
а) они появляются?
б) данные в них поступают (смотреть в Latest data, желательно отметив в фильтре "галочки" "Show items without data" и "Show details")?
Что делается дальше, уже менее понятно. Поправьте, пожалуйста, где я ошибаюсь.
Видимо, данные в указанные айтемы поступают; в частности - для айтема с ключом dbinfo[akdb --json] в качестве значение приходит такой текст:
Code:
{"dbinfo[akdb]": {"instname": "akdb" }}
Code:
instname[{#INST_NAME}]
Т.е. должны получиться ещё два айтема с ключами:
- instname[ONIXDB]
- instname[akdb]
В частности, предполагается, что значением айтема instname[akdb] будет строка "akdb".
Они создаются?
Если да - то приходят ли в них какие-то значения?
Становятся ли эти айтему неподдерживаемыми (помеченными значком "х" в красном квадратике)? Если да - то какое сообщение "светится" при нажатии на эту пометку?
Если все мои предположения верны, то да - Вы правы:
Наверное, надо писать
$.dbinfo[akdb].instname,
но тогда нужно использовать макрос (он на этом этапе уже определён?)
$.dbinfo[akdb].instname,
но тогда нужно использовать макрос (он на этом этапе уже определён?)
Code:
$.dbinfo[{#INST_NAME}].instname

Comment