Как удалить дату из события LogStash

У меня есть следующее сообщение в моем файле журнала...

2015-05-08 12:00:00,648064070: INFO  : [pool-4-thread-1] com.jobs.AutomatedJob: Found 0 suggested order events

Это то, что я вижу в Logstash/Kibana (с выбранными датой и сообщением)...

May 8th 2015, 12:16:19.691  2015-05-08 12:00:00,648064070: INFO : [pool-4-thread-1] com.pcmsgroup.v21.star2.application.maintenance.jobs.AutomatedSuggestedOrderingScheduledJob: Found 0 suggested order events

Дата слева в Кибане - дата вставки. (8 мая 2015 г., 12:16:19,691)

Следующая дата из выписки из журнала (2015-05-08 12:00:00,648064070)

Далее идет уровень ведения журнала INFO.

Тогда наконец сообщение.

Я хотел бы разделить их на эти компоненты, чтобы уровень ведения журнала соответствовал собственному ПОЛЕ в kibana, и чтобы либо удалить дату в разделе сообщений, либо сделать ее фактической датой (вместо даты вставки).

Может кто-нибудь помочь мне, пожалуйста. Я полагаю, мне нужен фильтр Грок?

Это то, что я до сих пор...

input
{
    file {
        debug => true
        path => "C:/office-log*"
        sincedb_path => "c:/tools/logstash-1.4.2/.sincedb"
        sincedb_write_interval => 1
        start_position => "beginning"
        tags =>  ["product_qa"]
        type => "log4j"
    }
}
filter {
  grok {
    match => [ "message", "%{TIMESTAMP_ISO8601}: %{LOGLEVEL}" ]
  }
}

output {
  elasticsearch {          
    protocol => "http"
    host => "0.0.0.x"
  }
}

Этот фильтр grok, похоже, не меняет события, показанные в Kibana. Я все еще вижу только хост / путь / тип и т. Д.

Я использовал http://grokdebug.herokuapp.com/ чтобы выработать синтаксис grok

1 ответ

Решение

Вам нужно будет назвать результат, который вы получите от grok, а затем использовать фильтр даты, чтобы установить @timestamp так что зарегистрированное время будет использоваться вместо времени вставки.

Исходя из того, что у вас есть, вы сделаете это:

filter {
  grok {
    match => [ "message", "%{TIMESTAMP_ISO8601:logdate}: %{LOGLEVEL:loglevel} (?<logmessage>.*)" ]
  }
  date {
    match => [ "logdate", "ISO8601" ]
  }
  #logdate is now parsed into timestamp, remove original log message too
  mutate {
    remove_field => ['message', 'logdate' ]
  }
}
Другие вопросы по тегам