• Как в фильтрах Logstash осуществить выборку определенных полей?

    Neolithik
    @Neolithik Автор вопроса
    Системный администратор
    И по традиции отвечу сам )
    для себя выбрал такой механизм, может кому понадобится
    input {  
        file {
            codec => plain  #сначала получаем логи как они есть 
    #       codec => multiline {
    #       pattern => "T" ##создаем патерны (теги) по которым будет разбираться простыня
    #       negate => true
    #       what => "previous" ##определяет положение сшивающего тега(в данном случае в начале листа тег и инфа до следующего указаного в патерне)если ставить "next" то патерн попадает в предыдущий лист
    #       }
            path => "/home/kab/logs/*.log"
            start_position => "beginning" 
            type => "syslog"
            }
    }
    filter {
    
    ##############################WORK BLOCK#######################################
        mutate { # избавляемся от ненужных символов
            type => "syslog"
            gsub => ["message","\]|\["," "] # delete from log symbol"[]"
            gsub => ["message","\|"," "] # delete from log symbol "|"
        }
        grok { # обрабатываем поступающее сообщение (шапку) так как она +- стандартна, остальное пройдет через фильтр неизменным
            type => "syslog"
            pattern => "%{SYSLOGPROG:timing_level}   %{HOST:app_name}%{NOTSPACE:IDsession}   %{WORD:jpkg_name}   %{NOTSPACE:date} %{TIME:app_timestamp}   %{PROG:method}"
            }
       multiline { #ну а теперь сшиваем все 
            type => "syslog"
            pattern => "^(T0_)|(T1_)"
            negate => true
            what => "previous"
            }
    ###############################################################################
       mutate { # избавляемся от ненужных данных
            type => "syslog"
            remove => [tags]
            remove => [program]
            }
    }
    output { # и передаем на выход
       stdout {
            codec => "rubydebug"
            }
       elasticsearch {
            host => "localhost"
            }
    }


    Как то так
    Ответ написан
    Комментировать
  • Возможно ли в Logstash multiline codec использовать логические переменные и, или?

    Neolithik
    @Neolithik Автор вопроса
    Системный администратор
    Сам задал вопрос и сам ответил ))
    input {
       file {
    #       codec => "plain"
            codec => multiline {
            pattern => "^\b(T0_OUTPUT_XML)?|(T0_INPUT_XML)" ##создаем патерны (теги) по которым будет разбираться простыня
            negate => true
            what => "previous" ##определяет положение сшивающего тега(в данном случае в начале листа тег и инфа до следующего указаного в патерне)если ставить "next" то патерн попадает в предыдущий лист
            }
            path => "/home/logs/*.log"
            start_position => "beginning" ## определяет откуда начинать читать лист и в какой очеердности оно прилитает в вебинтерфейс в данном случае зеркалка.. надо исправить: -) 
            tags => "from_file"   
            type => xml_log
            }
    }
    Ответ написан
    Комментировать