Ad Widget

Collapse

Отрисовка графиков

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • id2669099
    Member
    • Mar 2016
    • 68

    #1

    Отрисовка графиков

    Здравствуйте.
    Мониторю по snmp железку, которая отсылает мне 16 разных значений (цифры от 1 до 16), по факту с 1 по 15 означает состояние "занят", а 16 означает "свободен", как отрисовать график используя не 16, а 2 значения "занят" и "свободен" соответственно? пробовал прописывать отображение значения, не помогло, в "последнем значении" пишет после преобразования данных, а график всё равно отображает все значения

    если что извините, только начал изучать заббикс
  • sadman
    Senior Member
    • Dec 2010
    • 1611

    #2
    Интересный вопрос оказался.

    Теоретически:


    Практически:
    icmppingsec = 3ms

    Formula: last("icmppingsec")<15
    Даёт 1

    Formula: last("icmppingsec")>15
    Даёт 0

    Т.е. в вашем случае вычисляемый элемент данных с формулой last("MyDeviceSNMPStatus[...]")>15 должен принимать значение 1 при 16 и 0 при 0..15. По нему и рисуйте график.

    Comment

    • id2669099
      Member
      • Mar 2016
      • 68

      #3
      то есть по сути мне надо создать 2 вычисляемых элемента?
      ещё вопрос такой, что надо указывать в поле ключ?
      Originally posted by sadman
      Интересный вопрос оказался.

      Теоретически:


      Практически:
      Icmppingsec = 3ms

      formula: Last("icmppingsec")<15
      Даёт 1

      formula: Last("icmppingsec")>15
      Даёт 0

      Т.е. в вашем случае вычисляемый элемент данных с формулой last("mydevicesnmpstatus[...]")>15 должен принимать значение 1 при 16 и 0 при 0..15. По нему и рисуйте график.

      Comment

      • sadman
        Senior Member
        • Dec 2010
        • 1611

        #4
        Originally posted by id2669099
        то есть по сути мне надо создать 2 вычисляемых элемента?
        Зачем два? ЭД будет принимать значения 1 и 0. Этого хватит для ваших нужд?

        Originally posted by id2669099
        ещё вопрос такой, что надо указывать в поле ключ?
        Что угодно - лишь бы было понятно, что этот ЭД из себя представляет.

        Comment

        • id2669099
          Member
          • Mar 2016
          • 68

          #5
          большое спасибо за помощь, всё получилось!
          Originally posted by sadman
          Зачем два? ЭД будет принимать значения 1 и 0. Этого хватит для ваших нужд?


          Что угодно - лишь бы было понятно, что этот ЭД из себя представляет.

          Comment

          • id2669099
            Member
            • Mar 2016
            • 68

            #6
            вопрос такой скорее теоретический, но если бы нужно было выделять не состояние 16, а скажем, к примеру, 3?
            пробовал составить формулу вида (last[mydevicesnmpstatus]<3)and(last[mydevicesnmpstatus]>3), но тогда итем уходит в статус "не поддерживается", возможно ли такое условие?
            Originally posted by sadman
            Зачем два? ЭД будет принимать значения 1 и 0. Этого хватит для ваших нужд?


            Что угодно - лишь бы было понятно, что этот ЭД из себя представляет.

            Comment

            • sadman
              Senior Member
              • Dec 2010
              • 1611

              #7
              Теоретически должно работать.

              Если я правильно помню - логические операторы должны быть обрамлены пробельными символами, иначе выражение не парсится. Ну и last работает с круглыми скобками, а не квадратными.

              Comment

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

                #8
                пробовал составить формулу вида (last[mydevicesnmpstatus]<3)and(last[mydevicesnmpstatus]>3)
                Ну и такое выражение всегда будет равно нулю (т.е. false), поскольку одновременно быть меньше трёх и больше трёх никак невозможно

                Comment

                • sadman
                  Senior Member
                  • Dec 2010
                  • 1611

                  #9
                  Originally posted by Kos
                  Ну и такое выражение всегда будет равно нулю (т.е. false), поскольку одновременно быть меньше трёх и больше трёх никак невозможно
                  Точно, я на логику вообще не смотрел.

                  Да и '3' выделить через '=' можно же вроде, зачем там and?

                  Comment

                  • id2669099
                    Member
                    • Mar 2016
                    • 68

                    #10
                    точно, в итоге работает такое: last(mydevicesnmpstatus)<3 or last(mydevicesnmpstatus)>3
                    Originally posted by Kos
                    Ну и такое выражение всегда будет равно нулю (т.е. false), поскольку одновременно быть меньше трёх и больше трёх никак невозможно

                    Comment

                    • glebs.ivanovskis
                      Senior Member
                      • Jul 2015
                      • 237

                      #11

                      Comment

                      Working...