Ad Widget

Collapse

Lld, json - не могу сделать по-человечески

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Turbo
    Junior Member
    • Mar 2018
    • 1

    #1

    Lld, json - не могу сделать по-человечески

    Суть:
    Есть несколько компов на 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, может будет меньше процессора есть. Но так делать тоже не хочется ибо сути не меняет.
  • Semiadmin
    Senior Member
    • Oct 2014
    • 1625

    #2
    Originally posted by turbo
    и как сделать, чтобы макросы разворачивались в preprocessing.
    проголосовать за одно из zbxnext на эту тему. впрочем, думаю, и без этого скоро сделают, необходимость слишком очевидна.

    Comment

    Working...