Ad Widget

Collapse

Триггер по значению неподдерживаемого более элементу данных

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • frostwar
    Junior Member
    • Oct 2019
    • 7

    #1

    Триггер по значению неподдерживаемого более элементу данных

    Всем привет.
    При LLD обнаруживается элемент данных в момент чтения лог файла и получает значение.
    Когда приходит новая строка лог-файла, то предыдущий элемент данных становится неактивным.

    Как стриггерить по значению последнего успешного полученного значения элемента данных, если он уже неактивен и сделать это с задержкой в 5 минут?
    Функция last(,300) не работает. Связка с nodata не помогает...​
  • Alex_UUU
    Senior Member
    • Dec 2018
    • 541

    #2
    "Ничего не понятно"
    Но, вроде "nodata" с неподдерживаемыми работает.
    Но оптимальный вариант - избавиться от неподдерживаемых. Например через предобработку.

    Comment

    • frostwar
      Junior Member
      • Oct 2019
      • 7

      #3
      Originally posted by Alex_UUU
      "Ничего не понятно"
      Но, вроде "nodata" с неподдерживаемыми работает.
      Но оптимальный вариант - избавиться от неподдерживаемых. Например через предобработку.
      Элемент обнаружился через LLD методом чтения строки лога и получил своё значение. С поступлением новой строки в лог-файл - предыдущий задискаверенный элемент со значением становятся неактивными. Как сделать через предобработку так, чтобы элемент не терял свою активность?

      Comment

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

        #4
        Почему предыдущий становится неактивным? Если тут становится - зачем он вообще нужен и зачем его сохранять?
        Как-то неясно, что у вас есть и чего вы хотите добиться. Опишите вашу ситуацию подробнее, пожалуйста.

        Comment

        • Alex_UUU
          Senior Member
          • Dec 2018
          • 541

          #5
          Originally posted by frostwar

          Элемент обнаружился через LLD методом чтения строки лога и получил своё значение. С поступлением новой строки в лог-файл - предыдущий задискаверенный элемент со значением становятся неактивными. Как сделать через предобработку так, чтобы элемент не терял свою активность?
          Он становится неактивным, и больше не обслуживается? Так зачем, действительно он нужен?
          У неактивного элемента справа есть восклицательный знак. Если на него навести курсор он подскажет причину неактивности

          Comment

          • frostwar
            Junior Member
            • Oct 2019
            • 7

            #6
            Originally posted by Kos
            Почему предыдущий становится неактивным? Если тут становится - зачем он вообще нужен и зачем его сохранять?
            Как-то неясно, что у вас есть и чего вы хотите добиться. Опишите вашу ситуацию подробнее, пожалуйста.
            Есть мониторинг лог-файла. Файл ротируется каждые 10 минут.
            В логе статусы состояния работы датчиков.
            Датчики разных типов (старшие, средние, младшие). Отличаются датчики индексами (ххх - старший, хххх - средний, ххххх - младший). Названия всех датчиков заранее известны.
            Главный элемент данным - элемент активного агента, который зачитывает лог файл построчно.

            Дальше запускаются 3 LLD.
            Каждый LLD вычитывает список датчиков и в прототипе элемента данных получает статус датчика согласно JSONPath главного элемента (строки лог файла, преобразованную через препроцессинг в JSON).
            Когда статус элемента данных получен (значение) и не приходит новая строка, то всё норм, но строки в логфайл приходят пачкой рандомно по 10-20-30 строк.
            После того как парсится каждый новый элемент, предыдущий элемент становится unsupported​

            Comment

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

              #7
              Если я правильно понял вашу ситуацию, то в разных строках лога могут приходить данные по разным датчикам, а конкретные значения парсятся с помощью препроцессинга, и если значения для конкретного датчика в данной строке нет, то препроцессинг выдаёт ошибку, что приводит к тому, что соответствующий элемент данных переходит в состояние "not supported". Так?
              Если так, то:
              • во-первых, это не так страшно: проблема по бОльшей части косметическая; как нужное значение придёт - оно будет корректно обработано соответствующим образом;
              • во-вторых, элементарно лечится добавлением ещё одного шага препроцессинга: если элемент данных не подерживаемый - то пришедшее значение выкинуть (Validation -> Check for not supported value​ -> custom on fail: discard value). Только не говорите, что у вас версия сервера Zabbix старше, чем 5.2.0.

              Comment

              • frostwar
                Junior Member
                • Oct 2019
                • 7

                #8
                Originally posted by Kos
                Если я правильно понял вашу ситуацию, то в разных строках лога могут приходить данные по разным датчикам, а конкретные значения парсятся с помощью препроцессинга, и если значения для конкретного датчика в данной строке нет, то препроцессинг выдаёт ошибку, что приводит к тому, что соответствующий элемент данных переходит в состояние "not supported". Так?
                Если так, то:
                • во-первых, это не так страшно: проблема по бОльшей части косметическая; как нужное значение придёт - оно будет корректно обработано соответствующим образом;
                • во-вторых, элементарно лечится добавлением ещё одного шага препроцессинга: если элемент данных не подерживаемый - то пришедшее значение выкинуть (Validation -> Check for not supported value​ -> custom on fail: discard value). Только не говорите, что у вас версия сервера Zabbix старше, чем 5.2.0.
                Версия 5.2.7.
                Check for not supported value​ не помогает: элемент данных становится недоступным. Сделал на java препроцессинг, который в случае неудачи подставляет текстовое значение, но мне бы хотелось возвращать/подставлять предыдущее значение

                Comment

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

                  #9
                  Originally posted by frostwar
                  Версия 5.2.7.
                  Check for not supported value​ не помогает: элемент данных становится недоступным. Сделал на java препроцессинг, который в случае неудачи подставляет текстовое значение, но мне бы хотелось возвращать/подставлять предыдущее значение
                  В препроцессинге нет возможности добраться до истории, в частности - до предыдущего значения элемента данных (если не считать откровенных извращений с вызовом API прямо из JavaScript-а во время препроцессинга).
                  То, что нужно вам в такой ситуации, - это проверять каким-то образом, доступно ли значение для конкретно этого элемента данных, и если нет - то просто делать "discard value".
                  Я не знаю, какие там у вас предыдущие шаги обработки - но, например, вы упоминали про преобразование в JSON. Имея такой JSON, можно, например, извлекать значение через JSONPath, отметив галочку "Custom on fail​" если извлечь не удалось.

                  Comment

                  • frostwar
                    Junior Member
                    • Oct 2019
                    • 7

                    #10
                    Originally posted by Kos
                    В препроцессинге нет возможности добраться до истории, в частности - до предыдущего значения элемента данных (если не считать откровенных извращений с вызовом API прямо из JavaScript-а во время препроцессинга).
                    То, что нужно вам в такой ситуации, - это проверять каким-то образом, доступно ли значение для конкретно этого элемента данных, и если нет - то просто делать "discard value".
                    Я не знаю, какие там у вас предыдущие шаги обработки - но, например, вы упоминали про преобразование в JSON. Имея такой JSON, можно, например, извлекать значение через JSONPath, отметив галочку "Custom on fail​" если извлечь не удалось.
                    Спасибо огромное! Шалость с Custom on fail удалась!

                    Comment

                    Working...