Ad Widget

Collapse

Регулярное выражение - Модификатор "s" не срабатывает

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #16
    Originally posted by vebmasterHtml
    я может где то не так описал, вместо 20 будет любое число, поэтому я его и вытаскиваю, т.к. оно неизвестно.
    Для триггера это не подходит. Реагировать-то вы будете на конкретное значение, а не на любое.

    Comment

    • vebmasterHtml
      Junior Member
      • Apr 2019
      • 15

      #17
      Тригер на любое значение перед key2, т.к. наличие key1 + key2 это уже найденная проблема.

      Comment

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

        #18
        Ну тогда как-то так:
        Code:
        {host:logrt[/tmp/logerror4.txt,"key1|key2"].regexp("\d+ key2")}=1 and {host:logrt[/tmp/logerror4.txt,"key1|key2"].str("key1",2)}=1
        Ищем (по регулярному выражению) число перед "key2" в последнем полученном значении, при этом "key1" дожно быть в предпоследнем значении.
        Реально, правда, последнее выражение ищет строку "key1" в двух значениях (последнем и предпоследнем), если последняя строка может содержать как "key1", так и "key2" одновременно - то будет ложное срабатывание; если такое возможно - нужно более аккуратно делать.

        Comment

        • vebmasterHtml
          Junior Member
          • Apr 2019
          • 15

          #19

          а в выражении str("key1",2)
          2 - это 2 секунды?

          str (шаблон,<сек|#кол-во>)

          Comment

          • vebmasterHtml
            Junior Member
            • Apr 2019
            • 15

            #20
            Спасибо большое за подсказки, но вот такой пример и будет не правильное срабатывание

            Code:
            2019-04-16 14:47:12 Текст после даты key1: 101
            вторая строка с текстом
            и последняя третья строка 21 [COLOR=#FF0000]key333  [/COLOR]
            
            2019-04-16 14:48:12 Текст после даты key1: 102
            вторая строка с текстом
            и последняя третья строка 22 [COLOR=#FF0000]key444  [/COLOR]
            
            2019-04-16 14:49:12 Текст после даты [COLOR=#FF0000]key555[/COLOR]: 103
            вторая строка с текстом
            и последняя третья строка 23 key2
            
            2019-04-16 14:50:12 Текст после даты key1: 104
            вторая строка с текстом
            и последняя третья строка 24 key2
            Code:
            2019-04-16 14:47:12 Текст после даты key1: 101
            2019-04-16 14:48:12 Текст после даты key1: 102
            и последняя третья строка 23 key2
            2019-04-16 14:50:12 Текст после даты key1: 104
            и последняя третья строка 24 key2

            Comment

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

              #21
              Originally posted by vebmasterHtml
              а в выражении str("key1",2)
              2 - это 2 секунды?

              str (шаблон,<сек|#кол-во>)
              Извините, опечатка: должна была быть решётка:
              Code:
              str("key1",#2)
              но вот такой пример и будет не правильное срабатывание
              При таких данных будет срабатывание после получения каждой из строк с "key2": и с числом 23, и с числом 24. Точно так же, как срабатывало бы, используя ваше изначальное регулярное выражение, если бы оно работало для многострочных конструкций.

              Comment

              • vebmasterHtml
                Junior Member
                • Apr 2019
                • 15

                #22
                Спасибо большое за помощь!
                значит не решаема задача я понял

                Comment

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

                  #23
                  Извините, я не совсем понял, что вы хотели получить в последнем примере - должно же срабатывать?

                  Comment

                  • vebmasterHtml
                    Junior Member
                    • Apr 2019
                    • 15

                    #24
                    Если взять вот такой лог

                    PHP Code:
                    2019-04-16 14:47:12 Текст после даты key1101
                    вторая строка с текстом
                    и последняя третья строка 21 key333  

                    2019
                    -04-16 14:48:12 Текст после даты key1102
                    вторая строка с текстом
                    и последняя третья строка 22 key444  

                    2019
                    -04-16 14:49:12 Текст после даты key555103
                    вторая строка с текстом
                    и последняя третья строка 23 key2

                    2019
                    -04-16 14:50:12 Текст после даты key1104
                    вторая строка с текстом
                    и последняя третья строка 24 key2 

                    То в Последние данные будет вот так
                    PHP Code:
                    2019-04-16 14:47:12 Текст после даты key1101
                    2019
                    -04-16 14:48:12 Текст после даты key1102
                    и последняя третья строка 23 key2
                    2019
                    -04-16 14:50:12 Текст после даты key1104
                    и последняя третья строка 24 key2 

                    Следовательно тригер сработает не правильно, посмотрите внимательно последовательность строк

                    Он посчитает
                    2019-04-16 14:48:12 Текст после даты key1: 102
                    и последняя третья строка 23 key2

                    за пару, а это 2 разные записи в лог
                    Last edited by vebmasterHtml; 18-04-2019, 16:42.

                    Comment

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

                      #25
                      ...ну вот и попытайтесь сформулировать поточнее, чего бы вы хотели.
                      Можно, например, в выражении для айтема указать, чтобы он пересылал на сервер все строки, где встречается "key" (а не только "key1" или "key2"):
                      Code:
                      logrt[/tmp/logerror4.txt,"key"]
                      Соответственно, выражение триггера получится:
                      Code:
                      {host:logrt[/tmp/logerror4.txt,"key"].regexp("\d+ key2")}=1 and {host:logrt[/tmp/logerror4.txt,"key"].str("key1",#2)}=1
                      Это будет выполнять то, что вам нужно?

                      Comment


                      • vebmasterHtml
                        vebmasterHtml commented
                        Editing a comment
                        Похоже это решение, щас попробую. Спасибо огромное
                    • vebmasterHtml
                      Junior Member
                      • Apr 2019
                      • 15

                      #26
                      В рамках приведённого примера с key1 и key2, это действительно сработало, это 100% решение Ещё раз спасибо!
                      Но т.к. key1 и key2 полностью разные названия, то опять же получается ложное срабатывание.

                      Если key1 оставить как есть, а key2 заменить на name2 (чтобы были совсем разные)


                      Code:
                      2019-04-16 14:47:12 Текст после даты key1: 101
                      вторая строка с текстом
                      и последняя третья строка 21 key333  
                      
                      2019-04-16 14:48:12 Текст после даты key1: 102
                      вторая строка с текстом
                      и последняя третья строка 22 key444  
                      
                      2019-04-16 14:49:12 Текст после даты key555: 103
                      вторая строка с текстом
                      и последняя третья строка 23 name2
                      
                      2019-04-16 14:50:12 Текст после даты key1: 104
                      вторая строка с текстом
                      и последняя третья строка 24 name2
                      То в "Последние данные" будут вот такие строки:
                      Code:
                      2019-04-16 14:47:12 Текст после даты key1: 101
                      2019-04-16 14:48:12 Текст после даты key1: 102
                      и последняя третья строка 23 name2
                      2019-04-16 14:50:12 Текст после даты key1: 104
                      и последняя третья строка 24 name2
                      И в этом случае, будет ложное срабатывание на
                      Code:
                      2019-04-16 14:48:12 Текст после даты key1: 102
                      и последняя третья строка 23 name2
                      В качестве решения решили воспользоваться Graylog для обработки подобных логов с мультистрочностью. Но зато я узнал кое что новое по заббиксу)
                      Last edited by vebmasterHtml; 23-04-2019, 12:40.

                      Comment

                      Working...