2014-12-12 1 views
1

모두logstash를 사용하여 해시 인 메시지를 grok하는 방법

원격 서버에서 로그를 보내려면 logstash를 사용하고 있습니다.

[2014-12-06 23:59:57] 112.254.70.37 <AUDIO> {"type":"Stat", "eid":4800316, "mid":"87192133091532", "ccid":3228662, "ver":102, "ip":"114.113.200.227", "port":9081, "jitter":"0 0 0 0 0 ", "break":"0 0 0 0 0 ", "interrupt":"0 0 0 0 0 ", "tcp_rtt":"40 40 45 50 50 ", "udp_rtt":"31 33 35 40 35 ", "all_pkts":"107180 107193 107249 107323 107358 ", "lost":"0 0 0 0 0 ", "delay":"40.78", "pull":"3 3 3 3 3 "} 

그리고 내가 grok 수 부분을 쓸 수있는 방법, 나는 모든 곳에서 문서를 검색,하지만 난 아직도 어떻게 konw하지 않습니다 ... 들으 : 내가 가진 메시지는이 같은 해시 유형이!

+2

이것은 JSON입니다. grok을 사용하지 말고 JSON 구문 분석기를 사용하십시오. – Brad

답변

0

먼저, grok 필터로 json 데이터를 구문 분석해야합니다. 그런 다음 json 필터를 사용하여 모든 해시 맵 값을 구문 분석하십시오. 이 설정을 사용하면 로그를 구문 분석하고 field : value을 모두 생성 할 수 있습니다. 희망이 당신을 도울 수 있습니다.

input { 
    stdin{ 
    } 
} 

filter { 
    grok { 
    match => [ "message" , "\[%{TIMESTAMP_ISO8601:datatime}\] %{IP:ip} <%{WORD:level}> %{GREEDYDATA:data}"] 
    } 
    json { 
      source => "data" 
    } 
} 

output { 
    stdout{ 
      codec => rubydebug 
    } 
} 
관련 문제