Суть:
Есть несколько компов на win, на которых надо мониторить параметры, которые отображаются только через HWInfo.
Как сделано сейчас:
1. Настроен UserParameter, который запускает скрипт, который забирает данные с RemoteSensorMonitor (RSM) и подправляет немного JSON от RSM чтобы Zabbix его понял. (ohm.discovery)
2. В discovery list создан item prototype, на основе которого создаются item's.
Ключ его вот такой: ohm.get[{#SENSORAPP},{#SENSORCLASS},{#SENSORNAME}]
соответственно есть UserParameter ohm.get[*], который получает данные с RSM, фильтрует и отправляет результат.
В таком виде работает, но жрет 20% CPU если снимать показания раз в 30 сек.
Как хотелось бы:
Отправлять JSON на Zabbix один раз в 30 секунд, а на Zabbix уже его и парсить.
Попробовал сделать так:
Создал item prototype в LLD, который будет получать JSON 1 раз в 30 сек
LLD сразу пытается создать кучу элементов с одинаковым ключом, поэтому сделал пока ключ ohm.get2[{#SENSORAPP},{#SENSORCLASS},{#SENSORNAME}]
отличается от ohm.get, что получает немного другой json, а так же не фильтрует в зависимости от параметров.
Далее создал зависимый от него элемент с ключом ohm[{#SENSORAPP},{#SENSORCLASS},{#SENSORNAME}] (такого UserParameter нет, как я понял, в качестве значения будет подставляться ohm.get2[{#SENSORAPP},{#SENSORCLASS},{#SENSORNAME}] )
и в preprocessing написал вот такую регулярку: "SensorApp":\s"{#SENSORAPP}",\s*"SensorClass":\s"{ #SENSORCLASS}",\s*\s*"SensorName":\s"{#SENSORNAME} ",\s*"SensorValue":\s"(.*)",
оказалось, что макросы не разворачиваются в созданных item's
Собственно вот и 2 основных вопроса...
Ну вот тут я и сломался даже не начав решать вопрос - как сделать, чтобы в результате LLD создавался один item и куча от него зависимых.
И как сделать, чтобы макросы разворачивались в preprocessing.
Неужели вручную все делать, без LLD.
формат вывода ohm.discovery:
{
"{#SENSORAPP}": "HWiNFO",
"{#SENSORCLASS}": "FB-DIMM Internal",
"{#SENSORNAME}": "CH#1 FBD#0",
"{#SENSORVALUE}": "67,5",
"{#SENSORUNIT}": "‚øC",
"{#SENSORUPDATETIME}": 1521622129
},
пример вывода ohm.get2:
{
"SensorApp": "HWiNFO",
"SensorClass": "FB-DIMM Internal",
"SensorName": "CH#1 FBD#0",
"SensorValue": "65",
"SensorUnit": "‚шC",
"SensorUpdateTime": 1521631444
},
Да, есть ещё дополнительный, бонус - вопрос: как сделать чтобы zabbix воспринимал знак градуса?
Есть ещё запасной вариант: с помощью планировщика скидывать значения в файл и от туда парсить по запросу UserParameter, может будет меньше процессора есть. Но так делать тоже не хочется ибо сути не меняет.
Есть несколько компов на win, на которых надо мониторить параметры, которые отображаются только через HWInfo.
Как сделано сейчас:
1. Настроен UserParameter, который запускает скрипт, который забирает данные с RemoteSensorMonitor (RSM) и подправляет немного JSON от RSM чтобы Zabbix его понял. (ohm.discovery)
2. В discovery list создан item prototype, на основе которого создаются item's.
Ключ его вот такой: ohm.get[{#SENSORAPP},{#SENSORCLASS},{#SENSORNAME}]
соответственно есть UserParameter ohm.get[*], который получает данные с RSM, фильтрует и отправляет результат.
В таком виде работает, но жрет 20% CPU если снимать показания раз в 30 сек.
Как хотелось бы:
Отправлять JSON на Zabbix один раз в 30 секунд, а на Zabbix уже его и парсить.
Попробовал сделать так:
Создал item prototype в LLD, который будет получать JSON 1 раз в 30 сек
LLD сразу пытается создать кучу элементов с одинаковым ключом, поэтому сделал пока ключ ohm.get2[{#SENSORAPP},{#SENSORCLASS},{#SENSORNAME}]
отличается от ohm.get, что получает немного другой json, а так же не фильтрует в зависимости от параметров.
Далее создал зависимый от него элемент с ключом ohm[{#SENSORAPP},{#SENSORCLASS},{#SENSORNAME}] (такого UserParameter нет, как я понял, в качестве значения будет подставляться ohm.get2[{#SENSORAPP},{#SENSORCLASS},{#SENSORNAME}] )
и в preprocessing написал вот такую регулярку: "SensorApp":\s"{#SENSORAPP}",\s*"SensorClass":\s"{ #SENSORCLASS}",\s*\s*"SensorName":\s"{#SENSORNAME} ",\s*"SensorValue":\s"(.*)",
оказалось, что макросы не разворачиваются в созданных item's
Собственно вот и 2 основных вопроса...
Ну вот тут я и сломался даже не начав решать вопрос - как сделать, чтобы в результате LLD создавался один item и куча от него зависимых.
И как сделать, чтобы макросы разворачивались в preprocessing.
Неужели вручную все делать, без LLD.
формат вывода ohm.discovery:
{
"{#SENSORAPP}": "HWiNFO",
"{#SENSORCLASS}": "FB-DIMM Internal",
"{#SENSORNAME}": "CH#1 FBD#0",
"{#SENSORVALUE}": "67,5",
"{#SENSORUNIT}": "‚øC",
"{#SENSORUPDATETIME}": 1521622129
},
пример вывода ohm.get2:
{
"SensorApp": "HWiNFO",
"SensorClass": "FB-DIMM Internal",
"SensorName": "CH#1 FBD#0",
"SensorValue": "65",
"SensorUnit": "‚шC",
"SensorUpdateTime": 1521631444
},
Да, есть ещё дополнительный, бонус - вопрос: как сделать чтобы zabbix воспринимал знак градуса?
Есть ещё запасной вариант: с помощью планировщика скидывать значения в файл и от туда парсить по запросу UserParameter, может будет меньше процессора есть. Но так делать тоже не хочется ибо сути не меняет.
Comment