В чём нужна помощь, описано в конце поста. Возможно DRVTiny сможет помочь. Постарался описать подробно и учесть рекомендации по описанию в посте разясните низкоуровневое обнаружение в zabbix (комментарий)
Кейс
Написать zabbix lld discovery для результата выполнения sql запроса.
sql запрос выводит следующие данные:
Last_Name Age Child tabel_id
Lebedev 35 2 47
Fedorov 40 3 55
Sidorova 30 1 63
Создать заббикс шаблон с discovery rule и item prototype's.
- Выбирать значения Age и Child для каждого элемента Last_Name.
- Собирать все данные, но создать item prototype только для Age и Child.
С помощью скрипта json-employer_group.py данные sql запроса преобразуются в следующий json:
{
"data": [
{
"{#PARENTITEMNAME}": "table_id",
"{#PARENTITEMVALUE}": 47,
"{#ROOTITEM}": "Lebedev"
}, {
"{#PARENTITEMNAME}": "Child",
"{#PARENTITEMVALUE}": 2,
"{#ROOTITEM}": "Lebedev"
}, {
"{#PARENTITEMNAME}": "Age",
"{#PARENTITEMVALUE}": 35,
"{#ROOTITEM}": "Lebedev"
},
{
"{#PARENTITEMNAME}": "table_id",
"{#PARENTITEMVALUE}": 55,
"{#ROOTITEM}": "Fedorov"
}, {
"{#PARENTITEMNAME}": "Child",
"{#PARENTITEMVALUE}": 3,
"{#ROOTITEM}": "Fedorov"
}, {
"{#PARENTITEMNAME}": "Age",
"{#PARENTITEMVALUE}": 63,
"{#ROOTITEM}": "Sidorova"
}, {
"{#PARENTITEMNAME}": "Child",
"{#PARENTITEMVALUE}": 1,
"{#ROOTITEM}": "Sidorova"
}, {
"{#PARENTITEMNAME}": "Age",
"{#PARENTITEMVALUE}": 40,
"{#ROOTITEM}": "Sidorova"
}
]
}
Скрипт json-employer_group.py возвращает json, если задан без параметров.
Так же скрипт може принимать 2 параметра,- {#ROOTITEM} и {#PARENTITEMNAME}. Если заданы параметры, то скрипт возвращает значение {#PARENTITEMVALUE}.
Например: json-employer_group.py Sidorova Age возвращает 40.
Далее я создаю пользовательские параметры заббикс для discovery rule и item prototype rule
UserParameter=discovery.employer, /usr/lib/zabbix/externalscripts/json-employer_group.py
UserParameter=employer.item[*], /usr/lib/zabbix/externalscripts/json-employer_group.py $1 $2
Далее я создаю шаблон заббикс:
discovery rule-discovery.employer
item-prototype Age
Name-{#ROOTITEM} parametr "Age"
type=zabbix-agent
Key=employer.item[{#ROOTITEM}, Age]
item-prototype Child
Name-{#ROOTITEM} parametr "Child"
type=zabbix-agent
Key=employer.item[{#ROOTITEM}, Child]
Вопросы|проблемы|В чём нужна помощь
Вопросы:
Если я создаю по указанному алгоритму, то discovery rule отрабатывает, но возвращает ошибку
Cannot create item, item already exist
Lebedev Age
Lebedev Age
Lebedev Age
Как поправить эту ошибку?
Как работает с возвращаемым json заббикс сервер для item-prototype Age?
Что делает заббикс по шагам? Для каждого кортежа
{
"{#PARENTITEMNAME}": "Age",
"{#PARENTITEMVALUE}": 35,
"{#ROOTITEM}": "Lebedev"
}
Создаётся item prototype Age? item prototype Age,- это число сочетаний {#ROOTITEM}, Child для каждого {#ROOTITEM}?
Может другой json нужно формировать? Какой? Может другой item prototype сделать? Какой?
item protoype key должен быть уникальным? Как его сделать уникальным, если item prototype нужно передавать параметры Lebedev Age?
Пробовал сделать его уникальным. Diskovery rule отрабатывает без ошибок, но возникает другая проблема. Не знаю, как создать итем, который выводит отдельный элеметнт, а не все
Для каждого кортежа добавил
{
"{#PARENTITEMNAME}": "Age",
"{#PARENTITEMVALUE}": 35,
"{#ROOTITEM}": "Lebedev",
"{#ROOTPARENT}": "Lebedev_Age"
}
item prototype один.
UserParameter=employer.item[*], /usr/lib/zabbix/externalscripts/json-employer_group.py $1
item prototype all
Name-{#ROOTITEM} parametr "Child"
type=zabbix-agent
Key=employer.item[{#ROOTPARENT}]