В настоящее время я пытаюсь связать строки после того, как я встретил поле времени в строках журнала с этим полем времени.
Пример журнала:
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
Может ли кто-нибудь помочь мне как можно скорее?
Заранее спасибо