Ad Widget

Collapse

Как получить данные с веб страницы и записать в zabbix?

Collapse
This topic has been answered.
X
X
 
  • Time
  • Show
Clear All
new posts
  • MegaBOOBLIK
    Junior Member
    • Oct 2021
    • 2

    #1

    Как получить данные с веб страницы и записать в zabbix?

    Как получить данные с веб страницы и записать в zabbix?
    Нужен последовательный мануал.

    Дано:
    Есть простая страница в локале http://192.168.1.123/
    Как с помощью HTTP agent получить данные и записать в zabbix
    Test item - Value выдаёт

    HTML Code:
    <meta http-equiv='refresh' content='30'/><title>Zabbuino</title>DLS0: 22<br>DLS1: 19<br>DHTt: 27<br>DHTh: 15<br>DooR: 0<br>end

    curl и json использовать нет смысла. Должна же существовать простая и красивая схема?

    Логируем состояние датчиков: DLS0, DLS1, DHTt, DHTh, DooR

    Пожалуй100! Подскажите НОРМАЛНЫЙ последовательный мануал или пример, а не из серии "рисуем сову".

    Спасибо!
  • Answer selected by Kos at 09-11-2021, 12:55.
    Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    Если я вас правильно понял, то исходную HTML-страничку с данными вы уже успешно получаете (она приведена в примере), но сложности с тем, что с этим делать дальше.
    Если так, то дальше остаётся для каждого из датчиков сделать свой отдельный элемент данных, зависимый от исходного (где результатом была HTML-страничка).
    Они все будут идентичны, но отличаться выражением, указанным на шаге предобработки, где для каждого датчика будет указано своё регулярное выражение.
    Например:
    • для первого датчика (DLS0) создаём элемент данных с типом Dependent, указывая в качестве мастера исходный (который через HTTP agent возвращает всю страничку);
    • придумываем какой-то уникальный ключ (например, "zabbuino[DLS0]");
    • указываем нужный тип информации (видимо, "Numeric (unsigned)");
    • добавляем шаг препроцессинга (предобработки), с типом "Regular expression";
    • в этом шаге в качестве параметров указываем:
    pattern output
    DLS0:\s(\d+)< \1
    • для остальных датчиков делаем аналогично - меняя только имя, ключ и регулярное выражение в предобработке (заменяя там имя датчика "DLS0" на "DLS1", "DHTt" и т.д.). Можно склонировать элемент данных для первого датчика несколько раз).
    Предполагается, что такими регулярными выражениями из исходного HTML-а будут вырезаться целочисленные значения соответствующих датчиков. Если же эти значения могут быть не только положительными целочисленными (как в вашем примере), то часть регулярного выражения внутри скобок надо соответственно подкорректировать; например, если там могут присутствовать не только цифры, но и знаки плюс/минус/десятичная точка, то вместо "(\d+)" нужно будет указать: "([-+.\d]+)". Ну тип информации в этом случае нужно будет поменять с "Numeric (unsigned)" на "Numeric (float)".
    Last edited by Kos; 29-10-2021, 16:31.

    Comment

    • Kos
      Senior Member
      Zabbix Certified SpecialistZabbix Certified Professional
      • Aug 2015
      • 3404

      #2
      Если я вас правильно понял, то исходную HTML-страничку с данными вы уже успешно получаете (она приведена в примере), но сложности с тем, что с этим делать дальше.
      Если так, то дальше остаётся для каждого из датчиков сделать свой отдельный элемент данных, зависимый от исходного (где результатом была HTML-страничка).
      Они все будут идентичны, но отличаться выражением, указанным на шаге предобработки, где для каждого датчика будет указано своё регулярное выражение.
      Например:
      • для первого датчика (DLS0) создаём элемент данных с типом Dependent, указывая в качестве мастера исходный (который через HTTP agent возвращает всю страничку);
      • придумываем какой-то уникальный ключ (например, "zabbuino[DLS0]");
      • указываем нужный тип информации (видимо, "Numeric (unsigned)");
      • добавляем шаг препроцессинга (предобработки), с типом "Regular expression";
      • в этом шаге в качестве параметров указываем:
      pattern output
      DLS0:\s(\d+)< \1
      • для остальных датчиков делаем аналогично - меняя только имя, ключ и регулярное выражение в предобработке (заменяя там имя датчика "DLS0" на "DLS1", "DHTt" и т.д.). Можно склонировать элемент данных для первого датчика несколько раз).
      Предполагается, что такими регулярными выражениями из исходного HTML-а будут вырезаться целочисленные значения соответствующих датчиков. Если же эти значения могут быть не только положительными целочисленными (как в вашем примере), то часть регулярного выражения внутри скобок надо соответственно подкорректировать; например, если там могут присутствовать не только цифры, но и знаки плюс/минус/десятичная точка, то вместо "(\d+)" нужно будет указать: "([-+.\d]+)". Ну тип информации в этом случае нужно будет поменять с "Numeric (unsigned)" на "Numeric (float)".
      Last edited by Kos; 29-10-2021, 16:31.

      Comment

      • MegaBOOBLIK
        Junior Member
        • Oct 2021
        • 2

        #3
        Отчитываюсь!

        Огромное СПАСИБО, всё пока работает!

        Заработало в таком виде:
        В ардуино максимально упростил вывод, и первый итем теперь получает и логирует инфу вида

        Code:
        <meta http-equiv='refresh' content='10'/>DLS0: 25 DLS1: 21 DHTt: 27 DHTh: 13 DooR: 0 EOF
        Далее были созданы Deprndent item - Preprocessing steps

        Regular expression

        DLS0:\s(\d+) \1

        почему то с "<" не работает.

        Осталось привести это всё для Zabbuino N+1 устройств...

        Comment

        Working...