Ad Widget

Collapse

триггеры и пользовательский {macro} помогите понять

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Denis Shestakov
    Junior Member
    • Jun 2018
    • 9

    #1

    триггеры и пользовательский {macro} помогите понять

    добрый день.
    помогите понять как это должно работать.
    есть узел в нем прописан {macro} - {$working_hours} вида 1-7,09:00-21:00
    к узлу прицеплен шаблон доступности по icmp
    в шаблоне указан тригерр о недоступности.

    как заставить триггер не срабатывать в нерабочее время.
    условие рабочее время у хостов разное.
  • Semiadmin
    Senior Member
    • Oct 2014
    • 1625

    #2
    К сожалению, этот макрос годится только для Flexible Custom intervals айтемов, для триггеров не подойдет. В триггере придется использовать функции dayofweek и time.

    Comment

    • Denis Shestakov
      Junior Member
      • Jun 2018
      • 9

      #3
      Ок, Я понимаю как сделать конструкцию типа icmpping.max < 1 & dayofweek < 6 & time > 80000 & time < 200000
      Но как в данную конструкцию включить не статические элементы 80000 и 200000 а {$WORK_ON}=80000 и {$WORK_OFF}=200000

      Я чего только не перепробовал, не принимает конструкцию. Есть какие либо примеры использования, чтобы триггер срабатывал только во время работы хоста, но при этом у каждого хоста может быть свое время работы.
      либо через конструкцию regsub()
      {{ITEM.VALUE}.regsub(pattern, output)} но как ее применить к {$working_hours} вида 1-7,09:00-21:00 пока тоже понять не могу.
      Last edited by Denis Shestakov; 18-06-2018, 11:35.

      Comment

      • kernbug
        Senior Member
        • Feb 2013
        • 330

        #4
        Originally posted by Denis Shestakov
        Ок, Я понимаю как сделать конструкцию типа icmpping.max < 1 & dayofweek < 6 & time > 80000 & time < 200000
        Но как в данную конструкцию включить не статические элементы 80000 и 200000 а {$WORK_ON}=80000 и {$WORK_OFF}=200000

        Я чего только не перепробовал, не принимает конструкцию. Есть какие либо примеры использования, чтобы триггер срабатывал только во время работы хоста, но при этом у каждого хоста может быть свое время работы.
        либо через конструкцию regsub()
        {{ITEM.VALUE}.regsub(pattern, output)} но как ее применить к {$working_hours} вида 1-7,09:00-21:00 пока тоже понять не могу.
        Здравствуйте,

        Какую конструкцию Вы задаете с использованием макроса?

        Comment

        • Semiadmin
          Senior Member
          • Oct 2014
          • 1625

          #5
          Создаются макросы, напр., {$WORK_ON}, {$WORK_OFF}, {$DAY_OF_WEEK} на уровне шаблона, к которому относится триггер, с наиболее типичными значениями. Там, где нужно, они переопределяются на уровне хоста.
          В триггере что-то вроде
          icmppng.max(#n) < 1 and icmpping.dayofweek < {$DAY_OF_WEEK} and icmpping.time > {$WORK_ON} and icmpping.time < {$WORK_OFF}

          Comment

          • Denis Shestakov
            Junior Member
            • Jun 2018
            • 9

            #6
            Я изначально хотел что то типа вот такой конструкции, но что то он ее не воспринимает никак
            icmpping.max < 1 and time > {$WORKING_HOURS}.regsub("^.*\,([0-9]+)\[0-9]+)\-([0-9]+)[0-9]+)$",\1\200) & time < {$WORKING_HOURS}.regsub("^.*\,([0-9]+)\[0-9]+)\-([0-9]+)[0-9]+)$",\3\400)

            Comment

            • Denis Shestakov
              Junior Member
              • Jun 2018
              • 9

              #7
              Там где рожи это : и (
              В выражении

              Comment

              • Semiadmin
                Senior Member
                • Oct 2014
                • 1625

                #8
                В мануале пишут, что macro functions применимы только к макросам {ITEM.VALUE} и {ITEM.LASTVALUE}

                Comment

                • Denis Shestakov
                  Junior Member
                  • Jun 2018
                  • 9

                  #9
                  Все было бы гораздо проще, если в триггере было поле, в которое можно при помощи макроса занести значение время работы триггера. виде 1-7,09:00-21:00.
                  Ок буду через несколько макросов идти.

                  А что если в шаблоне создать макрос {$Macro1}=111 и потом у хоста создать {$Macro1}=222, то при срабатывании шаблона к хосту значение макроса измениться на то что указано в макросе хоста?

                  Comment

                  • Semiadmin
                    Senior Member
                    • Oct 2014
                    • 1625

                    #10
                    Originally posted by Denis Shestakov

                    А что если в шаблоне создать макрос {$Macro1}=111 и потом у хоста создать {$Macro1}=222, то при срабатывании шаблона к хосту значение макроса измениться на то что указано в макросе хоста?
                    Макрос хоста имеет приоритет над макросом шаблона, макрос шаблона - над глобальным макросом.

                    Comment

                    • Denis Shestakov
                      Junior Member
                      • Jun 2018
                      • 9

                      #11
                      Добрый день всем.
                      Еще один вопрос назрел

                      Есть триггеры в шаблоне:
                      {GW_Monitorings:icmpping[{$GW_WAN1}].max(#3)}=0
                      {GW_Monitorings:icmpping[{$GW_WAN2}].max(#3)}=0

                      Адреса прописаны макросами в самих узлах, у каждого свои.

                      Проблема:
                      Если у узла один интерфейс, то второй триггер мониторит адрес из данных узла. Что не правильно.

                      Как сделать проверку на отсутствие значения макроса, либо проверку какого то определенного значения.
                      К примеру {$GW_WAN2}.last() not empty или {$GW_WAN2}=0

                      И соответственно если нет значения выводить предупреждение в мониторинг, и соответственно сделать зависимым триггер обозначенный выше.
                      Спасибо.

                      Comment

                      • kernbug
                        Senior Member
                        • Feb 2013
                        • 330

                        #12
                        Originally posted by Denis Shestakov
                        Добрый день всем.
                        Как сделать проверку на отсутствие значения макроса, либо проверку какого то определенного значения.
                        К примеру {$GW_WAN2}.last() not empty или {$GW_WAN2}=0

                        И соответственно если нет значения выводить предупреждение в мониторинг, и соответственно сделать зависимым триггер обозначенный выше.
                        Спасибо.
                        Здравствуйте,

                        Есть функция .nodata в сочетании с выражениями триггеров можете попробовать собрать, что описали.

                        Comment

                        • Denis Shestakov
                          Junior Member
                          • Jun 2018
                          • 9

                          #13
                          Спасибо за ваш ответ.

                          Согласно описания данную функцию можно использовать только к данным по ключу. Макрос к данным не относится.{<сервер>:<ключ>.<функция>(<параметр>)}< оператор><константа>

                          Если вы имели ввиду другую конструкцию использования данной функции, можно пример?

                          Comment

                          • Semiadmin
                            Senior Member
                            • Oct 2014
                            • 1625

                            #14
                            Не уверен, что правильно понял вашу задачу, но что-то мне подсказывает, что стоило бы посмотреть в сторону такой редко используемой штуки, как LLD интерфейсов хоста Zabbix

                            Comment

                            • Denis Shestakov
                              Junior Member
                              • Jun 2018
                              • 9

                              #15
                              Спасибо, за ваш ответ.
                              Да немного не то. Это низкоуровневое определение интерфейсов. Самое интересное что его можно использовать для других целей. Можно попробовать кстати по другому подойти к данному вопросу. Натолкнуло на мысль.
                              Но мой вопрос был в другом, как проверить юзер макрос на наличие в нем данных внутри проверки триггера.

                              Comment

                              Working...