Ad Widget

Collapse

Подскажите как реализовать "хитрый" три

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • SolarW
    Member
    • Feb 2011
    • 41

    #1

    Подскажите как реализовать "хитрый" три

    Здравствуйте коллеги.

    Подскажите пожалуйста как реализовать "хитрый" триггер с дополнительными условиями.

    Имеется два датчика температуры:
    - улица
    - помещение

    Необходимо оповещение при следующих условиях:

    1-й триггер
    - если на календаре лето
    - если на улице температура МЕНЕЕ или равно 32 градуса
    - если в помещении температура вышла за диапазон 22 ... 25 градусов

    2-й триггер
    - если на календаре лето
    - если на улице более 32 градусов
    - если в помещении температура вышла за диапазон 24 ... 28 градусов

    Ну и там еще есть необходимость в триггерах для зимы/весны/осени - но их думаю по образу и подобию будет проще составить...
  • sadman
    Senior Member
    • Dec 2010
    • 1611

    #2
    Originally posted by solarw
    - если на календаре лето
    Лето - это что, где и когда? Думаю, что нужно определиться с данной характеристикой, всё остальное - просто.

    Comment

    • Semiadmin
      Senior Member
      • Oct 2014
      • 1625

      #3
      Можно создать айтем вроде UserParameter=date.month,date +%m с интервалом обновления раз в сутки. Дальше все несложно.

      Comment

      • SolarW
        Member
        • Feb 2011
        • 41

        #4
        Originally posted by sadman
        Лето - это что, где и когда? Думаю, что нужно определиться с данной характеристикой, всё остальное - просто.
        Лето - это календарное лето, с 1 июня по 31 августа каждого года.

        Comment

        • SolarW
          Member
          • Feb 2011
          • 41

          #5
          Originally posted by Semiadmin
          Можно создать айтем вроде UserParameter=date.month,date +%m с интервалом обновления раз в сутки. Дальше все несложно.
          Если бы было не сложно (для меня) - я бы тут этот вопрос не задавал

          Comment

          • Semiadmin
            Senior Member
            • Oct 2014
            • 1625

            #6
            Предположим, у вас есть айтемы с ключами t.indoor и t.outdoor, отвечающие за температуру в помещении и на улице. Т.к. в zabbix нет функции, возвращающей номер текущего месяца, я предложил создать айтем date.month, получающий этот номер. UserParameter можно прописать в агент на самом сервере zabbix, для этого же хоста и айтем сделать. Дальше делаете триггер вида ({date.month.last()}>5 and {date.month.last()}<9) and ({t.indoor.last()}<22 or {t.indoor.last()}>25) and {t.outdoor.last()}<=32

            Comment

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

              #7
              Ну ладно.
              Пусть имя хоста у нас будет Host, элемента данных (item) для температуры на улице (содержащий значения в градусах Цельсия) - temp.out, а для температуры в помещении - temp.in.
              Тогда первый триггер для Zabbix v3.x может иметь, например, такой вид:
              Code:
              {Host:date.month.last(0)}>5 and {Host:date.month.last(0)}<9 and
              {Host:temp.out.last(0)}<=32 and 
              ({Host:temp.in.last(0)}<22 or {Host:temp.in.last(0)}>25)
              Ну, это в первом приближении.

              Тут, правда, для вычисления понятия "сейчас лето" нужен ещё номер месяца (date.month). Но его можно взять либо, как предлагал Semiadmin, через UserParameter, либо (слегка поизвращавшись), наверное, можно сделать как вычисляемый элемент через функцию date().

              Update: Semiadmin меня опередил :-)
              Last edited by Kos; 09-08-2016, 16:30.

              Comment

              • SolarW
                Member
                • Feb 2011
                • 41

                #8
                Ок, большое спасибо, направление мысли понял - так и попробую сделать, идея с получением текущего месяца через User.Parameter понравилась.

                Comment

                • sadman
                  Senior Member
                  • Dec 2010
                  • 1611

                  #9
                  Раз с летом разобрались и понравился UserParameter, то можно через него сразу завести время года: 1 - лето, 2 - зима (ну, для некоторых районов так). Триггер будет попроще и покороче.

                  Upd: UserParameter=season,perl -e "print ((4,4,1,1,1,2,2,2,3,3,3,4)[(localtime)[4]])"

                  В массиве перечислено к какому времени года причислять тот или иной месяц. 1 - весна, 2 - лето... Ну, или другими цифрами замените по вкусу.
                  Last edited by sadman; 09-08-2016, 19:12.

                  Comment

                  Working...