2015-06-11 6 views
5

Новое для logstash, действительно наслаждаясь этим.logstash parsing timestamp полдня am/pm

Пытается разобрать CSV-файл, содержащий метку времени. Хотелось бы проанализировать временную метку и использовать ее как поле @timestamp.

Пример моего CSV вход

input { 
    stdin {} 
} 

filter { 
    # filter the input by csv (i.e. comma-separated-value) 
    csv { 
     columns => [ 
      "Job ID", 
      "Server Name", 
      "Status Code", 
      "Job Type", 
      "Client Name", 
      "Start Time", 
      "End Time" 
     ] 
    } 
    # parse the start time to create a real date 
    date { 
     # Examples of times in this log file 
     # "May 29, 2015 10:00:01 PM" 
     # "May 9, 2015 4:47:23 AM" 
     match => [ "End Time", 
        "MMM dd, YYYY HH:mm:ss aa", 
        "MMM d, YYYY HH:mm:ss aa" ] 
    } 
} 

# send the output to stdout, using the rubydebug codec 
# rubydedug uses the Ruby Awesome Print library 
output { 
    stdout { codec => rubydebug } 
} 

Образец моего входа

108628,anmuswcnbu01,1,Backup,anmuswcrfax01.na.jnj.com,"May 29, 2015 10:00:01 PM","May 30, 2015 6:21:29 AM" 
108629,anmuswcnbu01,1,Backup,anmuswcapps01.na.jnj.com,"May 29, 2015 10:00:01 PM","May 9, 2015 10:51:39 pm" 
108630,anmuswcnbu01,1,Backup,anmuswcapps03.na.jnj.com,"May 29, 2015 10:00:01 PM","May 29, 2015 9:31:19 PM" 

Образец моего выхода

Logstash startup completed 
{ 
     "message" => [ 
     [0] "108628,anmuswcnbu01,1,Backup,anmuswcrfax01.na.jnj.com,\"May 29, 2015 10:00:01 PM\",\"May 30, 2015 6:21:29 AM\"\r" 
    ], 
     "@version" => "1", 
    "@timestamp" => "2015-05-30T06:21:29.000Z", 
      "host" => "ip-172-31-34-14", 
     "Job ID" => "108628", 
    "Server Name" => "anmuswcnbu01", 
    "Status Code" => "1", 
     "Job Type" => "Backup", 
    "Client Name" => "anmuswcrfax01.na.jnj.com", 
    "Start Time" => "May 29, 2015 10:00:01 PM", 
     "End Time" => "May 30, 2015 6:21:29 AM" 
} 
{ 
     "message" => [ 
     [0] "108629,anmuswcnbu01,1,Backup,anmuswcapps01.na.jnj.com,\"May 29, 2015 10:00:01 PM\",\"May 9, 2015 10:51:39 pm\"\r" 
    ], 
     "@version" => "1", 
    "@timestamp" => "2015-05-09T10:51:39.000Z", 
      "host" => "ip-172-31-34-14", 
     "Job ID" => "108629", 
    "Server Name" => "anmuswcnbu01", 
    "Status Code" => "1", 
     "Job Type" => "Backup", 
    "Client Name" => "anmuswcapps01.na.jnj.com", 
    "Start Time" => "May 29, 2015 10:00:01 PM", 
     "End Time" => "May 9, 2015 10:51:39 pm" 
} 
{ 
     "message" => [ 
     [0] "108630,anmuswcnbu01,1,Backup,anmuswcapps03.na.jnj.com,\"May 29, 2015 10:00:01 PM\",\"May 29, 2015 9:31:19 PM\"\r" 
    ], 
     "@version" => "1", 
    "@timestamp" => "2015-05-29T09:31:19.000Z", 
      "host" => "ip-172-31-34-14", 
     "Job ID" => "108630", 
    "Server Name" => "anmuswcnbu01", 
    "Status Code" => "1", 
     "Job Type" => "Backup", 
    "Client Name" => "anmuswcapps03.na.jnj.com", 
    "Start Time" => "May 29, 2015 10:00:01 PM", 
     "End Time" => "May 29, 2015 9:31:19 PM" 
} 
Logstash shutdown completed 

К примеру, в этом последнем (3) строки данных , а не:

"@timestamp" => "2015-05-29T09:31:19.000Z", 

Я чувствую, что я должен получать

"@timestamp" => "2015-05-29T21:31:19.000Z", 

Насколько я могу судить, фильтр даты, кажется, игнорируя мой «полудневный» синтаксис

match => [ "End Time", 
        "MMM dd, YYYY HH:mm:ss aa", 
        "MMM d, YYYY HH:mm:ss aa" ] 

Новое в logstash, так интересно, что я делаю что-то неправильно?

-Chad

ответ

5

date фильтр использует формат, совместимый с Joda-Time.

Цитирование части таблицы символов Joda в:

Symbol Meaning      Presentation Examples 
------ -------      ------------ ------- 
a  halfday of day    text   PM 
K  hour of halfday (0~11)  number  0 
h  clockhour of halfday (1~12) number  12 

H  hour of day (0~23)   number  0 
k  clockhour of day (1~24)  number  24 
m  minute of hour    number  30 
s  second of minute    number  55 
S  fraction of second   number  978 

Это легко упустить из вида, но длящиеся часы в вашем случае являются KK вместо HH.

+0

Блестящий! Работала отлично. Спасибо за добрый и быстрый ответ. –

Смежные вопросы