Ad Widget

Collapse

Объединение нескольких триггеров

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Schenck
    Junior Member
    • Feb 2022
    • 5

    #1

    Объединение нескольких триггеров

    Добрый день.

    Обращаюсь за помощью, предыстория такова:

    Имеется несколько ряд в несколько стоек, оборудованных устройствами NetPing для контроля датчиков открытия дверей. Имеется две видеокамеры, установленные с передней и задней сторон ряда стоек. Тревожные интерфейсы камер подключены к реле NetPing-ов.
    При открытии передних дверей стоек включается одна камера, при открытии задних дверей – вторая камера. С включением и выключением реле вопросов нет – все работает штатно.
    Проблема заключается в том, что требуется организовать выключение камер только при условии закрытия всех дверей в стойках. Средствами NetPing-ов это сделать нельзя, потому было решено обратиться к Zabbix.

    Что сделано:
    • Открываем дверь
    • NetPing при срабатывании датчика отправляет трап в сторону Zabbix
    • Zabbix получает трап, срабатывает триггер
    • Триггер запускает действие на срабатывание скрипта
    • Скрипт содержит в себе команду SNMPSet для включения реле NetPing-а
    • Закрываем дверь, последовательность действий та же, но с условием, что действие должно запускаться только при условии срабатывания нескольких триггеров от разных устройств.
    • Вот с этим проблема – Zabbix выдает ошибку – “Сравнение нескольких триггеров с условием “И” запрещено”



    Суть моего вопроса такова – как объединить несколько триггеров с разных хостов, так, чтобы действие запускалось только при срабатывании их всех?
  • wins
    Senior Member
    • Sep 2014
    • 307

    #2
    Таки да, запрещено.
    Попробуйте сделать через теги, например: Value of tag door equals open

    офф\2: а зачем такое извращение? Камера не умеет motion detect?

    Comment

    • Schenck
      Junior Member
      • Feb 2022
      • 5

      #3
      Спасибо. Попробовал с тегами - увы, с условием "И" тоже не работает, действие не запускается, ошибок не показывает. Работает только с условием "ИЛИ", значит настраиваю правильно.

      Click image for larger version

Name:	Снимок экрана от 2022-02-10 12-00-05.png
Views:	499
Size:	250.9 KB
ID:	439397 Click image for larger version

Name:	Снимок экрана от 2022-02-10 12-00-08.png
Views:	506
Size:	275.3 KB
ID:	439398 Click image for larger version

Name:	Снимок экрана от 2022-02-10 12-00-19.png
Views:	501
Size:	263.2 KB
ID:	439396
      Attached Files

      Comment

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

        #4
        Я бы делал один триггер, который срабатывал бы в случае, когда открыта хоть одна дверь в ряде стоек. Точнее, один - на все передние двери, и ещё один - на все задние двери. И так для каждого ряда стоек.

        Comment

        • Schenck
          Junior Member
          • Feb 2022
          • 5

          #5
          Да, но как сделать триггер, который бы срабатывал при поступлении трапов с нескольких NetPing?
          UPD: пробовал так сделать, триггер создается, но при срабатывании действия получаю ошибку - "Too many hosts in a trigger expression"

          Включить все датчики, например передних дверей, в один порт одного устройства нельзя по условию ТЗ.
          Attached Files
          Last edited by Schenck; 10-02-2022, 12:09.

          Comment

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

            #6
            Ну у вас же есть какие-то элементы данных, которые меняют свои значения при получении трапов? Наверное, они относятся к различным хостам (каждый NetPing, присылающий трапы, - отдельный хост)? А как сейчас выглядят эти элементы данных и привязанные к ним триггеры?

            Comment

            • Schenck
              Junior Member
              • Feb 2022
              • 5

              #7

              Сейчас у меня тестовая схема такая:

              Сделан один родительский элемент данных - SNMP Trap
              с ключем snmptrap["General event"]
              Все трапы, приходящие от нетпингов, в него попадают.

              Далее сделан триггер IO ALL CLOSE c выражением
              {Netping 1:snmptrap["General event"].str(0 FRONT)}=1 and
              {Netping 2:snmptrap["General event"].str(0 FRONT)}=1 and
              {Netping 3:snmptrap["General event"].str(0 FRONT)}=1
              который срабатывает при закрытии всех передних дверей


              Далее сделано действие Relay OFF c условием
              Триггер равно Netping 1: IO ALL CLOSE
              который запускает скрипт


              Сделан скрипт, с командой SNMPSET для управления реле нетпинга.


              При срабатывании действия получаю ошибку - "Too many hosts in a trigger expression"
              Attached Files
              Last edited by Schenck; 10-02-2022, 13:21.

              Comment

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

                #8
                Сделан один родительский элемент данных - SNMP Trap
                с ключем snmptrap["General event"]
                Все трапы, приходящие от нетпингов, в него попадают.
                Я не совсем понял: трапы на открытие и закрытие передней и задней двери каждого шкафа прилетают на один хост или на разные?
                Если каждая дверь - отдельный хост, то ОК. Если же передняя и задняя дверь - это один хост (NetPing этого шкафа), то надо разнести трапы от разных дверей по разным элементам данных, чтобы можно было проверять элемент данных, соответствующий конкретной двери. Тогда можно создавать условие триггера вида:
                Code:
                задняя дверь шкафа 1 ряда 1 открыта
                  ИЛИ
                задняя дверь шкафа 2 ряда 1 открыта
                ...
                  ИЛИ
                задняя дверь шкафа N ряда 1 открыта
                - он будет срабатывать, когда открыта хотя бы одна задняя дверь в первом раду шкафов; соответственно - закрываться, когда ВСЕ задние двери этого ряда закрыты.
                Аналогично для передних дверей, и для остальных рядов.
                А на каждый подобный триггер навешивать действие, включающее соответствующую камеру.
                Можно промаркировать эти триггеры тегом, значением которого будет ссылка на нужную камеру (например, её DNS-имя или IP-адрес); тогда можно будет обойтись одним действием, в котором использовать значение этого тега.
                Originally posted by Schenck
                Далее сделано действие Relay OFF c условием
                Триггер равно Netping 1: IO ALL CLOSE
                который запускает скрипт

                Сделан скрипт, с командой SNMPSET для управления реле нетпинга.

                При срабатывании действия получаю ошибку - "Too many hosts in a trigger expression"
                Есть такой зарегистрированный баг (ссылка).
                А что указано в настройках действия - где вы пытаетесь запустить это скрипт? На сервере Zabbix или же "на текущем хосте"?

                Comment

                • Schenck
                  Junior Member
                  • Feb 2022
                  • 5

                  #9
                  Спасибо! Похоже заработало.

                  Пока сделано так:
                  - тестовая схема из трех нетпингов, на каждом по одному датчику в первом порту (допустим это FRONT DOOR)

                  - отказался от трапов, это необязательное условие

                  - загрузил шаблон для заббикса с сайта нетпинга, там уже есть готовые элементы данных для каждого порта
                  Для первого порта ключ npIoLevelIn[1], сделал интервал обновления в 3 секунды

                  - для каждого элемента данных сделано два триггера:
                  На открывание выражение такое:
                  {Netping 1:npIoLevelIn[1].last()}=1 or
                  {Netping 2:npIoLevelIn[1].last()}=1 or
                  {Netping 3:npIoLevelIn[1].last()}=1
                  На закрывание выражение такое:
                  {Netping 1:npIoLevelIn[1].last()}=0 and
                  {Netping 2:npIoLevelIn[1].last()}=0 and
                  {Netping 3:npIoLevelIn[1].last()}=0

                  - в настройках действий указал "Выполнить удаленные команды на узлах сети: Zabbix server"
                  Таким образом, при открытии любой двери через ~5 сек включается реле(камера), а выключается только при закрытии всех дверей

                  Comment

                  Working...