Упражняюсь с Zabbix LLD. Что-то затык в понимании, что дальше делать. Попробовал по примерам, только запутался. Что делаю по шагам…
- Написал скрипт sensors.sh, который возвращает JSON, вроде как правильный для LLD. У скрипта есть параметр - ip или dns хоста, его бы тоже надо задавать динамически, но если он не задан, то берется отладочный(1 хост известен). Итак, возвращается список сенсоров с запрошенного хоста.
{
"data": [
{
"{#SENSOR}": "Core_1_CPU1",
"{#VALUE}": 42
},
{
"{#SENSOR}": "Core_2_CPU1",
"{#VALUE}": 41
},
{
"{#SENSOR}": "Core_3_CPU1",
"{#VALUE}": 41
},
{
"{#SENSOR}": "Core_4_CPU1",
"{#VALUE}": 42
},
{
"{#SENSOR}": "Core_5_CPU1",
"{#VALUE}": 43
},
{
"{#SENSOR}": "Core_6_CPU1",
"{#VALUE}": 41
},
{
"{#SENSOR}": "DIMM_A1_CPU1",
"{#VALUE}": 34
},
{
"{#SENSOR}": "DTS_CPU1",
"{#VALUE}": 43.094
},
{
"{#SENSOR}": "Die_CPU1",
"{#VALUE}": 43.063
}
]
}
-
поместил скрипт в директорию /usr/lib/zabbix/externalscripts на сервере заббикса.
-
Создал новую группу шаблонов и новый шаблон в группе
-
В созданном шаблоне создал правило обнаружения
Имя = Get_Sensors
Тип = внешняя проверка
Ключ = sensors.sh
-
Сохранил, перезашел в шаблон и в правило обнаружения и протестировал - кнопка «тест». В диалоговом окне получил тот-же JSON в виде текстовой строки.
-
Создал узел, указал ему ip, связал его с шаблоном, но чуда не случилось. Всё активировано, узел доступен, скрипт с него данные забирает, но данные через LLD не поступают в Zabbix.
Всё. В шаблоне, кроме правила обнаружения, больше ничего нет. JSON в тесте читается, значит правильный. Интервал обновления задан. Ключи в формате макросов заданы, значит должны автоматически подхватываться. Пробовал и без них, потом парсить предобработкой JSONPath и макросы создавать, только еще более запутался и удалил , и предобработку и макросы. Парсить вроде бы нечего, макросы уже заданы.
Не понятно, надо ли создавать UserParameter, да и зачем, ведь это совсем другой механизм, отличный от LLD. Там опять скрипт запускать надо, а он уже итак работает в шаблоне.
Не понятно, надо ли создавать прототип элемента данных и что он из себя представляет… там опять требуется запускать скрипт, который вроде как уже и так отработал. И нельзя создать зависимый элемент от правила обнаружения, чтобы его результат распарсить или повторно использовать, без новых запросов, можно только от основного элемента - опять масло масленое. Зачем тогда правило обнаружения нужно…
Сейчас еще раз внимательно прошелся по всем вкладкам в шаблоне и в правиле обнаружения, почитал доки, не нашел и не понял где и что надо сделать. Список сенсоров может меняться, имена могут меняться, количество сенсоров может быть произвольным, поэтому создавать и определять элементы данных вручную неправильно, как мне кажется.
Вопрос.
-
Как дальше автоматизировать создание элементов данных с именами из {#SENSOR} и значениями из {#VALUE} ? Пусть значения будут типа float. Как и где ему это «сказать»?
-
Как передать в скрипт ip или dns узла? В правиле обнаружения, правильно?
Ключ = sensors.sh[{$HOST.IP}]
{$HOST.IP} - такая встроенная переменная существует?
Что дальше делать, чтобы данные получить?