2017-03-20 7 views
0

ELK 스택의 GROK 필터를 사용하여 원시 프록시 데이터를 구문 분석하고 구조화하려고 시도하고 있으며 올바른 형식의 타임 스탬프와 사용자 에이전트 문자열을 얻을 수 없습니다. 다음과 같이 로그 샘플을 참조 마십시오프록시 로그의 Grok 필터

"1488852784.440 1 10.11.62.19 TCP_DENIED/403 0 GET http://xxx.xxx.com/xxx - NONE/- - BLOCK_WEBCAT_12-XXX-XXX-NONE-NONE-NONE-NONE <IW_aud,0.0,-,""-"",-,-,-,-,""-"",-,-,-,""-"",-,-,""-"",""-"",-,-,IW_aud,-,""-"",""-"",""Unknown"",""Unknown"",""-"",""-"",0.00,0,-,""-"",""-"",-,""-"",-,-,""-"",""-""> - L ""http://xxx.xxx.xxx"" 10.11.11.2 - 403 TCP_DENIED ""Streaming Audio"" - - - GET ""Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"" http://xxx.xxx.xxx" 

을 나는 다음과 같은 필터를 사용하고 있습니다 :

%{NUMBER:timestamp}%{SPACE}%{NUMBER:request_msec:float} %{IPORHOST:src_ip} %{WORD}/%{NUMBER:response_status:int} %{NUMBER:response_size} %{WORD:http_method} (%{URIPROTO:http_proto}://)?%{IPORHOST:dst_host}(?::%{POSINT:port})?(?:%{NOTSPACE:uri_param})? %{USERNAME:user} %{WORD}/(%{IPORHOST:dst_ip}|-)%{GREEDYDATA:content_type} 

http://grokconstructor.appspot.com에 기반을, 나는 타임 스탬프 (1488852784.440)를 제외하고는 필드의 일부를 구문 분석 할 수 오전 사용자 에이전트 문자열. 타임 스탬프에서 다른 Drok 기본 필터를 시도했지만 여전히 숫자로 표시됩니다.

답변

0

Grok이 date 데이터 유형으로 변환 할 수 없기 때문입니다. 이를 위해서는 정확한 변환을 수행하는 date 필터를 사용해야합니다. timestamp 분야에서 구문 분석 된 타임 스탬프 이벤트의 @timestamp 필드를 설정합니다

filter { 
    date { 
    match => [ "timestamp", UNIX_MS ] 
    } 
} 

.

+0

친애하는 sysadmin, 고맙고 감사합니다! 사용자 에이전트 문자열에 대한 해결책이 있습니까? – kenAu89

+0

@ kenAu89 [grok 패턴 파일들] (https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/httpd#L6)은'% {QS : agent}'를 사용하여 아파치 로그의 사용자 에이전트. 아마도 여기에서도 효과가있을 것입니다. – sysadmin1138

+0

다시 한 번 감사드립니다. 나는 마지막으로 인용 된 문자열을 얻고 있기 때문에 UA를 시도 할 것이다. – kenAu89

관련 문제