многострочная ассоциация logstash для отметки времени в файле журнала - PullRequest
0 голосов
/ 30 августа 2018

В настоящее время я пытаюсь связать строки после того, как я встретил поле времени в строках журнала с этим полем времени.

Пример журнала:

06-26-18 03:58:51 вверх - 03:58:51 до 84 дней, 2:05, 0 пользователей, средняя загрузка: 0,01, 0,08, 0,12 Задачи: всего 835, 1 работает, 833 спит, 0 остановлен, 1 зомби Процессор (ы): 1,3% США, 0,4% sy, 0,0% ni, 98,3% id, 0,0% wa, 0,0% hi, 0,0% si, 0,0% st Память: всего 65695260k, использовано 54419828k, 11275432k свободно, 286076k буферов Обмен: всего 6143996 КБ, использовано 0 КБ, 6143996 КБ бесплатно, кэшировано 39933352 КБ

PID ПОЛЬЗОВАТЕЛЬ PR NI VIRT RES SHR S% CPU% MEM TIME + КОМАНДА 15213 avendato 20 0 19,9 г 670 м 19 м S 3,6 1,0 2902: 06 / usr / java / default / bin / java -Djava.util.logging.config.file = / var / avenda / tomcat / backend / co 6889 appuser 20 0 13,7 г 911 м 33 м S 2,6 1,4 2942: 16 / usr / local / avenda / tips / sbin / policy_server

26-26-18 11:57:48 вечера 6711 корень 20 0 109 м 1252 1040 S 0,0 0,0 5: 48,79 awk / top - / {print strftime ("% m-% d-% y% r")} 1 6712 root 20 0 27020 1204 916 S 0,0 0,0 0: 24,81 / usr / sbin / rotatelogs /var/avenda/platform/log/system-load-monitor//system-load.%Y-%m-%d. 7183 root 20 0 0 0 0 S 0,0 0,0 0: 00,00 [kworker / 1: 2] 8408 postgres 20 0 16.4g 17m 8160 S 0.0 0.0 0: 00.05 postgres: appuser tipsdb [local] idle

26-26-18 11:57:48 вечера вверх - 23:57:48 до 84 дней, 22:04, 0 пользователей, средняя загрузка: 0,33, 0,23, 0,23 Задачи: всего 833, 1 работает, 831 спит, 0 остановлен, 1 зомби ЦП: 1,4% США, 0,4% sy, 0,0% ni, 98,1% id, 0,0% wa, 0,0% hi, 0,0% si, 0,0% st Mem: всего 65695260k, использовано 55910064k, 9785196k свободно, 286240k буферов Обмен: всего 6143996 КБ, использовано 0 КБ, бесплатно 6143996 КБ, кэшировано 41379668 К

PID ПОЛЬЗОВАТЕЛЬ PR NI VIRT RES SHR S% CPU% MEM TIME + КОМАНДА 8216 postgres 20 0 16,3 г 50 м 32 м S 4,4 0,1 0: 14,68 postgres: appsuperuser tipsdb 127.0.0.1 (36820) в режиме ожидания 15213 avendato 20 0 19,9 г 671 м 19 м S 4,0 1,0 2943: 49 / usr / java / default / bin / java -

Я хочу, чтобы каждая строка была связана с отметкой времени, которую я нашел выше. Может кто-нибудь помочь мне, как создать ассоциацию?

Вот что я опробовал:

Введите:

file{
    sincedb_path => "/dev/null"
    path => ["///xyz-2018-12-25.log"]
    start_position => "beginning"
    type => "log-top"
    tags => ["top"]
    codec => multiline{
    patterns_dir => ["//etc/logstash/conf.d/patterns/patterns.conf"]
    pattern => "^%{DATETIME}"
    negate => true
    what => previous
    }
}

Фильтр:

if ( "PID USER" in [message] or [message]==""){
    drop{}
}
else if([message]=~/( AM)/ or [message]=~ /( PM)/){
      grok{
               patterns_dir => ["//etc/logstash/conf.d/patterns/patterns.conf"]
               match=>["message","%{DATETIME:logtime}"]
       }
      date{
               match=> ["message","MM-dd-yy hh:mm:ss aa"]
               target=> "@timestamp"
               locale => "en"
       }
}
else if([message]=~ /(top -.*)/){
        grok{
                patterns_dir => ["//etc/logstash/conf.d/patterns/patterns.conf"]
                match => ["message","%{NOTSPACE:junk} +%{NOTSPACE:junk} %{HOUR:hour}:%{MINUTE:minute}:%{SECOND:seconds} +%{NOTSPACE:state} +%{SINCE:since}, +%{NUMBER:num-of-users:int} +%{NOTSPACE:junk} +%{NOTSPACE:junk} +%{NOTSPACE:junk} +%{NUMBER:load-avg-5min:float}, +%{NUMBER:load-avg-10min:float}, +%{NUMBER:load-avg-15min:float}"]
        }
}
else if([message]=~ /(Tasks:.*)/){
        grok{
                match => ["message","%{NOTSPACE:junk} %{NUMBER:total-task:int} +%{NOTSPACE:junk}, +%{NUMBER:running-task:int} +%{NOTSPACE:junk}, +%{NUMBER:sleeping:int} +%{NOTSPACE:junk}, +%{NUMBER:stopped:int} +%{NOTSPACE:junk}, +%{NUMBER:zombie:int} +%{NOTSPACE:junk}"]
        }
}
else if([message]=~ /(Cpu\(s\):.*)/){
        grok{
                match => ["message","%{NOTSPACE:junk} +%{NUMBER:user-cpu-percent:float}%+%{NOTSPACE:junk}, +%{NUMBER:sys-cpu-percent:float}%+%{NOTSPACE:junk}, +%{NUMBER:nice-cpu-percent:float}%+%{NOTSPACE:junk}, +%{NUMBER:idle-cpu-percent:float}%+%{NOTSPACE:junk}, +%{NUMBER:wait-cpu-percent:float}%+%{NOTSPACE:junk}, +%{NUMBER:hi-cpu-percent:float}%+%{NOTSPACE:junk}, +%{NUMBER:si-cpu-percent:float}%+%{NOTSPACE:junk}, +%{NUMBER:st-cpu-percent:float}%+%{NOTSPACE:junk}"]
       }
}

 else if([message]=~ /(Mem:.*)/){
        grok{
                match => ["message","%{NOTSPACE:junk} +%{NUMBER:total-mem:int}+%{NOTSPACE:total-mem-unit} +%{NOTSPACE:junk} +%{NUMBER:used-mem:int}+%{NOTSPACE:used-mem-unit} +%{NOTSPACE:junk} +%{NUMBER:free-mem:int}+%{NOTSPACE:free-mem-unit} +%{NOTSPACE:junk} +%{NUMBER:buf-mem:int}+%{NOTSPACE:buf-mem-unit} +%{NOTSPACE:junk}"]
        }
}
else if([message]=~ /(Swap:.*)/){
        grok{
                match => ["message","%{NOTSPACE:junk} +%{NUMBER:total-swap:int}+%{NOTSPACE:total-swap-unit} +%{NOTSPACE:junk} +%{NUMBER:used-swap:int}+%{NOTSPACE:used-swap-unit} +%{NOTSPACE:junk} +%{NUMBER:free-swap:int}+%{NOTSPACE:free-swap-unit} +%{NOTSPACE:junk} +%{NUMBER:cache-swap:int}+%{NOTSPACE:cache-swap-unit} +%{NOTSPACE:junk}"]
        }
}

else {
        grok{
                match=>["message","%{NUMBER:process-id:int} +%{NOTSPACE:user} +%{NOTSPACE:priority} +%{NUMBER:nice} +%{NOTSPACE:virt-mem-size} +%{NOTSPACE:reside-mem-size} +%{NOTSPACE:shared-mem-size} +%{NOTSPACE:process-status} +%{NUMBER:proc-cpu-use-percent:float} +%{NUMBER:proc-mem-use-percent:float} +%{NOTSPACE:cpu-time} +%{GREEDYDATA:command}"] 
        }
}
mutate {
        remove_field => ["@version","path","host","junk_perc","junk"]
}

Я определил шаблон DATETIME как: DATETIME% {DATE} +% {HOUR}:% {MINUTE}:% {SECOND} +% {WORD} в файле шаблонов.

У меня проблема с подключением к многострочному кодеку. Вывод по-прежнему отображается с отметкой времени выполнения logstash для строки без отметки времени, которая выделена жирным шрифтом во входных данных примера.

Я не получил ответа на то же сообщение, упомянутое 12 дней назад @ https://discuss.elastic.co/t/associating-log-lines-with-timestamp-in-log-line/144979

Может ли кто-нибудь помочь мне как можно скорее? Заранее спасибо

...