0

몇 주 전부터 ELK tool stack으로 해결하기 시작했습니다. 필요한 것은 날짜와 시간을 포함하는 로그 이벤트의 timestamp을 가져 와서 다른 필드 (예 : log_timestamp)에 표시하는 것입니다. DateStamp에 사용할 수있는 모든 옵션을 꺼내려고했지만 아무것도 작동하지 않았습니다.Logstash에서 yyyymmdd를 yyyy-mm-dd로 포맷하는 방법은 무엇입니까?

이것은 내가 가지고있는 로그 파일의 라인 :

"20160805 00 : 00 : 01.296, GetProvisioning, 3, W1oOOW8oj58GhglVjVNg0Ssl4CXA1P, 50219--1958335734-1470326399706, 성공, GetProvisioningTransactionId-01223, 널, W1oOOW8oj58GhglVjVNg0Ssl4CXA1P, 욕실, CELCOM_MY_DCB 날짜 "grok 수 필터"나는를 사용할 수없는 때죠

내가, yyyy-mm-dd로 로그 이벤트의 날짜를 포맷해야합니다. " 아니면 위의 yyyymmdd 날짜 형식으로 필터링 할 수있는 방법이 있습니까?

편집 : 은 본인은 내 사용자 정의 패턴과 logstash conf의 필터 부분을 부착하고있다. I가 사용하고

패턴 : LOGTIMESTAMP %의 {YEAR} % {MONTHNUM} % {MONTHDAY} logstash의 conf에

필터 기준 :

filter { 

     grok { 
      patterns_dir => ["/home/chamith/work/ELK/logstash/logstash-2.3.4/bin/patterns"] 
      match => { "message" => "%{GREEDYDATA} %{LOGTIMESTAMP:logtimestamp}" } 

     } 
     mutate { 
      add_field => { 
       "timestamp" => "%{LOGTIMESTAMP}" 
      } 
      remove_field => ["logtimestamp"] 
     } 
     date { 
      match => ["logtimestamp", "yyyyMMdd HH:mm:ss"] 
      target => "logtimestamp" 
     }   
    } 

와 키바의 출력 :

enter image description here

어떤 도움

주시면 감사하겠습니다.

+0

그래서이 이벤트의 로그 샷 타임 스탬프로'20160805 00 : 00 : 01.296' 타임 스탬프를 사용하고 싶습니까? – Fairy

+0

예, 위의 타임 스탬프를'2016-08-05 00 : 00 : 01.296' – Kulasangar

답변

0

date 필터를 사용하여 타임 스탬프를 구문 분석 할 수 있습니다. grok에 대한 맞춤 정규 표현식을 쓰지 않으려면 두 개의 필드를 결합하고 date 필터를 사용할 수 있습니다. 당신의 paticular 예를 들어

:

grok { 
    match => { "message" => "%{POSINT:time1} %{TIME:time2} ... <Rest goes here> } 
} 
mutate { 
    add_field => { 
     "timestamp" => "%{time1} %{time2}" 
    } 
    remove_field => ["time1", "time2"] 
} 
date { 
    match => { "timestamp" => ""yyyyMMdd HH:mm:ss.SSS } 
} 

이 거의 TIMESTRING을 얻고 @timestamp 필드에 넣어 것입니다.

+3

으로 만들어야합니다. 결과 타임 스트링을'@ timestamp' 필드에 넣고 싶지 않으면 ['' target 설정] (https://www.elastic.co/guide/en/logstash/current/plugins-filters-date.html#plugins-filters-date-target) :'target => log_timestamp' – baudsp

+0

@Fairy 감사합니다. 당신은 답장을. 내 사용자 지정 패턴을 사용해 보았습니다. 그러나 정확한 결과를 얻을 수는 없었습니다 (yyyy-mm-dd). 내가 어디로 잘못 갔니? – Kulasangar

+0

grok 패턴이 전혀 일치 할 수 없기 때문에 '_grokparsefailure' 태그가 있습니다. 당신의 패턴은 다음과 같아야합니다 :'% {POSINT : time1} % {TIME : time2} % {GREEDYDATA}' – Fairy