Ad Widget

Collapse

icmploss + гистерезис

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • maaksv
    Junior Member
    • Feb 2015
    • 2

    #1

    icmploss + гистерезис

    Помогите с гистерезисом: если процент потерь более 30% то ПРОБЛЕМА, если <30% то ОК.

    ({TRIGGER.VALUE}=1 and {Template ICMP Ping:icmppingloss[,10,,,].avg(15m)}>30) or ({TRIGGER.VALUE}=1 and {Template ICMP Ping:icmppingloss[,10,,,].avg(15m)}<30)

    Выдает ПРОБЛЕМУ и ОК каждую минуту, хотя результаты 0, 0, 0, 0, 0 (% потерь).
  • sadman
    Senior Member
    • Dec 2010
    • 1611

    #2
    Обратите внимание на саму сущность гистерезиса. Видите, что между переходом "туда" и "обратно" существует некий промежуток X=|-T|+T ?



    В вашем триггере такого промежутка нет, вот он и мотается около показателя 30%. Сделайте ">30%" равным 40, а "<30%" равным 25. Тогда будет гистерезис - включить триггер при потерях в 40%, выключить при потерях в 25%.

    Возьмите пример с температурой из документации, подправьте на icmploss.


    P.S. Да, и не забудьте, что кроме {TRIGGER.VALUE}=1 нужен ещё {TRIGGER.VALUE}=0

    Comment

    • Jimson
      Senior Member
      • Jan 2008
      • 1327

      #3
      Да тут с булевой логикой проблема, а не с гистерезисом и графиком. Очередной запутавшийся.
      Приведенное условие триггера автор составил по принципу
      условие_ПРОБЛЕМЫ or условие_НОРМА
      иначе говоря у него в булевом выражении да взаимоисключающих условия через or, потому и flap-flap.

      Условие триггера это всегда "условие_ПРОБЛЕМЫ" независимо от того "с гистерезисом" оно или нет, гистерезис это просто два "условие_ПРОБЛЕМЫ" объединенных через логическое ИЛИ, где каждой из этих условий содержит сравнение {TRIGGER.VALUE}.

      Короче так:
      ({TRIGGER.VALUE}=0 & условие_ПРОБЛЕМЫ_1) | ({TRIGGER.VALUE}=1 & условие_ПРОБЛЕМЫ_2)
      это условие будет "с гистерезисом" если условие_ПРОБЛЕМЫ_2 будет более "жестким" чем условие_ПРОБЛЕМЫ_1

      фуф

      Comment

      • rough-84
        Senior Member
        • Oct 2014
        • 198

        #4
        {TRIGGER.VALUE}=0 Это означает что триггер находится в состоянии ОК

        {TRIGGER.VALUE}=1 Это означает что триггер находится в состоянии ПРОБЛЕМА

        Строя логическую цепочку получаем :
        Если триггер находится в состоянии ОК ({TRIGGER.VALUE}=0) и параметр {Template ICMP Ping:icmppingloss[,10,,,].avg(15m)}>30
        тогда триггер должен сработать и перейти в состояние проблема.
        Далее идёт "или"
        Если триггер находится в состоянии ПРОБЛЕМА ({TRIGGER.VALUE}=1) и
        (а вот тут надо подобрать такое условие при котором триггер должен перейти назад в состояние ОК). В примерах достаточно удачно описано, я бы сделал что то типа {Template ICMP Ping:icmppingloss[,10,,,].avg(15m)}>10. То есть, если элемент данных станет меньше 10% и не удовлетворит условию, триггер вернётся в состояние ОК

        ({TRIGGER.VALUE}=0 and {Template ICMP Ping:icmppingloss[,10,,,].avg(15m)}>30) or ({TRIGGER.VALUE}=1 and {Template ICMP Ping:icmppingloss[,10,,,].avg(15m)}>10)

        Comment

        • maaksv
          Junior Member
          • Feb 2015
          • 2

          #5
          rough-84 спасибо все работает!
          я непонимал, что если условие выполняется и триггер =1, то триггер станет равным 0: ({TRIGGER.VALUE}=0 and {Template ICMP Ping:icmppingloss[,10,,,].avg(15m)}>30)
          я думал что тригер станет =1 если выполнится условие.

          Comment

          Working...