Ad Widget

Collapse

Возможности препроцессинга и javascript

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Alex001
    Junior Member
    • Jun 2018
    • 27

    #1

    Возможности препроцессинга и javascript

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

    Где-то более детально описано как, к примеру, получить значение итема на определенное время? Синтаксис?
  • Hamardaban
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2019
    • 2713

    #2
    сделайте через вычисляемый элемент срабатывающий по расписанию 1 раз для «хранения» данных эд на начало дня

    Comment

    • Alex001
      Junior Member
      • Jun 2018
      • 27

      #3
      Да, вычислимый очевидно подойдет.
      Сделал, только он почему-то не срабатывает. Выставляю -
      Update interval - 0m
      Custom intervals - sheduling, и к примеру - h17m10
      Но в 17ч 10м он не срабатывает.. ? и вообще не срабатывает. Если же поставить просто update interval - 1m, то все нормально.
      Время проверял по часам в web клиенте.

      Comment

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

        #4
        update interval - в ноль (без минут)
        возможно на момент срабатывания таймера конфигурация не применилась?

        Comment

        • Alex001
          Junior Member
          • Jun 2018
          • 27

          #5
          э-мм, сработало когда выставил по времени сервера. Он в utc, а в веб-клиенте +3.

          Comment


          • Hamardaban
            Hamardaban commented
            Editing a comment
            обработкой вычисляемых элементов занимается сервер так что вполне предсказуемо что расписание по его времени должно быть...
        • Alex001
          Junior Member
          • Jun 2018
          • 27

          #6
          В тему препроцессинга и calculated items - можно вытащить из строки представляющей hex-величину - конкретный бит?
          Поиск нашел это -

          но ставить триггера кажется как-то "тяжеловесно" и некрасиво.

          Comment

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

            #7
            [QUOTE=Alex001;n424443]В тему препроцессинга и calculated items - можно вытащить из строки представляющей hex-величину - конкретный бит?
            Для чего вытащить? Если исключительно для сравнения в триггерном выражении, то с версии 2.2.0 существует триггерная функция band(), позволяющая проверить конкретный бит (или набор битов) у целого значения. Ну а преобразовать "строку, представляющую hex-величину," в целое можно штатными средствами препроцессинга.

            Comment

            • Alex001
              Junior Member
              • Jun 2018
              • 27

              #8
              Триггер как раз не нужен.
              А штатные средства - в данном случае это какие?

              Comment

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

                #9
                Originally posted by Alex001
                А штатные средства - в данном случае это какие?
                Штатные средства препроцессинга для преобразования Hex to decimal ("Шестнадцатеричное в десятичное") - см. тут.
                Триггерную функцию можно использовать в calculated items (вычисляемых элементах данных).

                Comment

                • Alex001
                  Junior Member
                  • Jun 2018
                  • 27

                  #10
                  Я правильно понимаю, что javascript препроцессинга может брать только value своего итема, в котором выполняется? Взять значение другого не получится.

                  Comment

                  • Alex001
                    Junior Member
                    • Jun 2018
                    • 27

                    #11
                    А условное выполние через IF это только в javascript ?

                    Comment

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

                      #12
                      Originally posted by Alex001
                      Я правильно понимаю, что javascript препроцессинга может брать только value своего итема, в котором выполняется? Взять значение другого не получится.
                      В препроцессинге - да, поскольку препроцессинг обрабатывает конкретный элемент данных. Его задача - преобразовать исходные данные в нужный вид.
                      Если нужно обрабатывать данные из разных айтемов - на это есть вычисляемые элементы данных.

                      Кстати, в новой версии (недавно вышедшей 5.4), насколько я понял, в функциях (триггерных, агрегируемых, вычисляемых - они теперь исползуют общий синтаксис) можно задать не только относительные периоды ("за последний час"), но и абсолютные ("за сегодня, начиная с полуночи" или "с 1 числа текущего месяца"). Если я понял правильно, то там ваша задача решается штатными средствами через вычисляемый элемент данных, в формулу которого просто прописывается суммирование значений нужного элемента данных "с 1 числа".

                      Comment

                      • Semiadmin
                        Senior Member
                        • Oct 2014
                        • 1625

                        #13
                        Originally posted by Alex001
                        А условное выполние через IF это только в javascript ?
                        В чистом виде IF - да, только в JS, но кое-какую логику можно реализовать и в вычисляемых

                        Comment

                        • Alex001
                          Junior Member
                          • Jun 2018
                          • 27

                          #14
                          Originally posted by Kos
                          Если я понял правильно, то там ваша задача решается штатными средствами через вычисляемый элемент данных, в формулу которого просто прописывается суммирование значений нужного элемента данных "с 1 числа".
                          ту задачу я решил через javascript,
                          сейчас другая - есть пара счетчиков и надо запоминать в какой-то 3-й переменной значение 2-го счетчика, когда 1-й счетчик увеличивается "+1". И тут бы IF и хранение промежуточных переменных, но увы..

                          Comment

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

                            #15
                            Originally posted by Alex001
                            ту задачу я решил через javascript,
                            сейчас другая - есть пара счетчиков и надо запоминать в какой-то 3-й переменной значение 2-го счетчика, когда 1-й счетчик увеличивается "+1". И тут бы IF и хранение промежуточных переменных, но увы..
                            Полагаю, что эту логику можно реализовать с помощью вычисляемых элементов данных, если опишете задачу подробнее. Например, что нужно присваивать этой третьей переменной в случае, когда первый счётчик не меняется либо увеличивается более на единицу.

                            Comment

                            Working...