Ad Widget

Collapse

preprocessing with Unsupported item

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • teddy
    Senior Member
    • Dec 2017
    • 234

    #1

    preprocessing with Unsupported item

    Коллеги!
    Пытаюсь сделать следующую задачу:
    есть item типа numeric. он периодически получает значение типа string ( точнее сообщение про ошибку на источнике ). Нужно в таком случае в item положить 0.
    логично взять preprocessing
    Click image for larger version

Name:	image.png
Views:	132
Size:	16.1 KB
ID:	468467
    но не работает. что я делаю неправильно?
    zabbix 6.4.5​
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Вроде, всё правильно. А что показывает, если нажать на линк "Test all steps" и потестировать, указывая разные входные значения (как корректные, так и некорректные, в том числе текст и пустую строку)?

    Comment

    • teddy
      Senior Member
      • Dec 2017
      • 234

      #3
      Originally posted by Kos
      Вроде, всё правильно. А что показывает, если нажать на линк "Test all steps" и потестировать, указывая разные входные значения (как корректные, так и некорректные, в том числе текст и пустую строку)?
      в том то и дело что я в режиме Test all steps задаю строку "hgsdjgsjhgfsj fghsdjsgfjhg" и получаю результат "hgsdjgsjhgfsj fghsdjsgfjhg". И только поставив галку "Not supported" - получаю в Result 0.
      С пустой строкой - аналогично.
      Click image for larger version

Name:	image.png
Views:	106
Size:	24.2 KB
ID:	468474

      Comment

      • Hamardaban
        Senior Member
        Zabbix Certified SpecialistZabbix Certified Professional
        • May 2019
        • 2713

        #4
        Использую такую конструкцию часто - работает.
        Думаю тут дело в том как устроено "тестирование" - нужно четко указать что значение кривое.
        Попробуйте в реальной работе - например сендером передавать значения и смотреть как оно отрабатывет.

        up
        написанному НЕ верить - чушь
        Last edited by Hamardaban; 08-08-2023, 12:56.

        Comment

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

          #5
          Кажется, я понял. Оно становится неподдерживаемым уже после этого шага предобработки, когда пытается исходную текстовую строку преобразовать в число.
          Поэтому данный шаг не выдаёт то, что ожидалось (элемент данных ещё не является неподдерживаемым на данном этапе).
          Я бы заменил этот шаг предобработки на другой - например, валидация по регулярному выражению. Для целых чисел регулярное выражение будет элементарным:
          Code:
          ^\d+$
          Для дробных чуть сложнее, но тоже не ахти как. Если не учитывать научное представление чисел, то можно обойтись, например, таким:
          Code:
          ^[-+]?\d+(\.\d+)?$
          ​Соответственно, "Custom on fail" -> "Set value to" -> 0.

          Comment

          • Semiadmin
            Senior Member
            • Oct 2014
            • 1625

            #6
            Так оно в момент этой проверки вполне себе поддерживаемое, это потом у него тип не совпадает с желаемым. Можно валидировать, например, на совпадение с регуляркой \d+
            Сорри, пока писал, коллега Kos уже ответил

            Comment

            • Hamardaban
              Senior Member
              Zabbix Certified SpecialistZabbix Certified Professional
              • May 2019
              • 2713

              #7
              Проверил у себя - точно! тоже валидирую на \d+ т.к. по другому не работало..
              Память подводит ужо....

              Comment

              • teddy
                Senior Member
                • Dec 2017
                • 234

                #8
                Спасибо, действительно при матчинге по ^\d+$ работает. Достаточно неочевидно. стоит наверно в документации упомянуть. Или чинить в системе.

                Comment

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

                  #9
                  Originally posted by Hamardaban
                  Проверил у себя - точно! тоже валидирую на \d+ т.к. по другому не работало..
                  Память подводит ужо....
                  Боюсь, что выражения \d+ может оказаться недостаточно. Такое выражение будет проверять, есть ли в исходном значении (хотя бы какие-либо) цифры. А для валидации надо убедиться, что там нет ничего, кроме цифр. Т.е. можно пропустить, например, такие строки как "Error [21048]: could not connect" или "Timeout after 15 seconds".

                  Comment

                  • Hamardaban
                    Senior Member
                    Zabbix Certified SpecialistZabbix Certified Professional
                    • May 2019
                    • 2713

                    #10
                    Выражение валидации я использую конечно не просто «\d+» - это скорее «намек» на совершенно правильный ход мысли!
                    Учитываем и разделитель целой и дробной и то что ничего лишнего нет и формат данных как нужно (например с лидирующими нулями)
                    Постараюсь выражаться более конкретно.

                    Comment

                    Working...