Ad Widget

Collapse

Предобработка информации перед записью в базу данных Zabbix.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Wadim_Sch
    Member
    • Feb 2022
    • 83

    #1

    Предобработка информации перед записью в базу данных Zabbix.

    Добрый день!

    Проблема (вернее сказать проблемка)
    Каждые 5 минут Zabbix считывает значения потребляемого тока с контроллеров. К сожалению 1 раз в 1-3 дня один или второй контроллер выдают неправильное значение по какой-нибудь из фаз. Обычно это значение 0 или -0,001.
    Это происходит без какой-либо закономерности. Это не так уж и критично, но если просматривать графики потребляемого тока, то можно заметить что Zabbix меняет масштаб для того чтобы график с неправильным значением "поместился на странице".
    На рисунке верхний график "нормальный", второй - смасштабированный и на нем фактически ничего не видно.
    Click image for larger version

Name:	1.png
Views:	71
Size:	117.6 KB
ID:	506836
    Так выглядят данные:
    Click image for larger version

Name:	2.png
Views:	49
Size:	5.8 KB
ID:	506837
    Собственно вопрос.
    Можно ли какой-либо отфильтровать или предобработать информацию перед записью в базу данных Zabbix?
    Например: если два значения "0" подряд, тогда сохранять эту информацию, если это одиночный ноль - то сохранять предыдушее или последующее значение.
    Может быть доступна и какая-то другая "предобработка"?​

    ​​
  • Lurker-beta
    Junior Member
    • Sep 2025
    • 2

    #2
    Я бы попробовал предобработку "In range" + триггер на nodata.

    Comment

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

      #3
      Предобработка в Zabbix'e работает только с текущим значением - которое получено, но ещё не записано в базу. К сожалению, нет простой возможности свериться с историей и сравнить это поступающее значение с каким-либо из предыдущих. Теоретически, можно (например, через JavaScript) делать запрос к Zabbix'у и через API извлекать какое-то из предыдущих значений, но это будет, во-первых, не так чтобы просто, а во-вторых - достаточно громоздко и, как следствие, не очень эффективно.
      Что можно делать через предобработку - так это проверять поступающее значение на корректность: если оно не вписывается в заданный диапазон (например, если оно отрицательное) - то просто его игнорировать (отбрасывать).
      Ещё можно (если проблема только в этом) в настройках графика явно задать минимальное и максимальное значения для оси Y.

      Comment

      • ysus
        Senior Member
        • Mar 2016
        • 100

        #4
        Я бы посмотрел повнимательней на источник данных. Судя по европейскому языку интерфейса это не дешманский китайский Power Distribution Unit, а сертифицированное устройство с поддержкой Modbus. Возможно в одном из регистров есть предыдущее значение тока по фазе или диагностика самого контроллера.

        Можно связаться с производителем и обновить firmware.

        Кстати вы как получаете данные? Zabbix Agent 2 + Modbus plugin? Или самописное решение типа bash script + modpoll binary? Возможно проблема не в контроллере, а в доставке данных?

        Comment

        • Wadim_Sch
          Member
          • Feb 2022
          • 83

          #5
          Добрый день!

          @Kos
          Присмотрелся внимательнее к "неправильным" данным. Каждый раз значение потребляемого тока равно "-0.001". Чего впринципе быть не может.
          Поэтому применил к данным дополнительный фильтр "In range", c минимальным значением "0".
          Click image for larger version

Name:	1.png
Views:	51
Size:	16.0 KB
ID:	506971
          Click image for larger version

Name:	2.png
Views:	30
Size:	19.4 KB
ID:	506972
          Данные собираются, но нужно подождать несколько дней чтобы дождаться "сбоя".
          Я только не понял (не нашел), что теперь запишется в базу пори получении Zabbix-ом отрицательного значения?
          Если ноль, то этот вариант мне тоже не подходит. .



          @ysus
          Язык - немецкий, устройство шведско-швейцарский "ABB QA S3.64.1". Только как вы это друг с другом связали?
          Этот Template я слелал сам и мог бы его создать условно на русском, испанском или французском хоть для китайского хоть для мексиканского устройства.

          К теме: Я специальст по сетям (Routers, Switches и тд), а не электрик.
          Дополнительно немного мониторингом своего оборудования занимаюсь. Всё мое оборудование мониторится по SNMP. Теперь правда уже могу сказать, что очень много
          электрического оборудования можно тоже по SNMP мониторить. Всякие большие UPS, блоки розеток для серверных шкафов, счетчики электроэнергии с анализом параметров тока.
          К сожалению есть ещё устройства которые работают только с Modbus. . Наши электрики попросили попробовать мониторить некоторые устройства по Modbus.
          Попробовали - получилось, им понравилось. Тепеть мониторим и по Modbus. Мониторим через Zabbix Agent 2 + Modbus plugin. Параметры регистров дают мне сами электрики.
          Принцип протокола Modbus я понял, но подробно в нем не разбираюсь.
          Наши ABB QA S3.64.1 имеют последнюю версию Firmware, я сам помогал электрикам обновиться. У нас за примерно 2 года сдохло два (собственно оба) ABB QA S3.64.1. Электрики связывались с ABB, пытались оживить,
          но оба раза купили в итоге новые. Они говорять, что от ABB они такого не ожидали. ​

          Comment

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

            #6
            Originally posted by Wadim_Sch
            Я только не понял (не нашел), что теперь запишется в базу пори получении Zabbix-ом отрицательного значения?
            Если ноль, то этот вариант мне тоже не подходит. .
            Ничего в базу не запишется, при этом элемент данных на какое-то время перейдёт в неподдерживаемое состояние.
            Чтобы не переходил, можно в тех же настройках предобработки отметить флажок "Custom on fail" и оставить действие "Discard value" - тогда такое значение будет просто игнорироваться.

            Comment

            Working...