0
여기

에 grok 수 구문 분석 증강 아파치 로그에 사용자 정의 필드를 추가하는 것은 내 문제입니다 :Logstash

IP1 IP2 - - [13/Jun/2016:14:45:05 +0200] "GET /page/requested.html HTTP/1.1" 200 4860 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0" 

내가 성공적으로 내 실제 구성과 함께 이러한 로그를 분석 할 수의 난과 같이 몇 가지 표준 아파치 로그 있다고 가정 해 봅시다 Logstash는 :

input { 
    file { 
     path => '/home/user/logsDir/*' 
    } 
} 

filter { 
    grok { 
     match => { "message" => "%{COMBINEDAPACHELOG}"} 
    } 
} 

output { 
    elasticsearch { } 
    stdout { codec => rubydebug } 
} 

그러나 이러한 로그에

, 좀 기계 학습 알고리즘을 적용하고 나는 그들에게 score을 제공합니다. 그래서 새 로그 라인은 다음과 같습니다

IP1 IP2 - - [13/Jun/2016:14:45:05 +0200] "GET /page/requested.html HTTP/1.1" 200 4860 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0" 0.00950628507703 

참고 이제 실제score

있는 줄의 끝에서0.00950628507703, 나는 그래서이 줄을 구문 분석하고 싶습니다 Kibana에서 시각화를 위해 score을 사용할 수 있습니다 (Logstash는 전체 ELK 스택에 통합되어 있습니다). 점수가 플로트로 해석 될 수 있다면 좋을 것입니다.

NB : 표준 Apache 로그 메시지 앞뒤에 점수를 배치하고 둘 사이에 어떤 종류의 문자 (현재는 공백)를 삽입 할 수 있습니다.

이 문제를 해결하는 방법에 대한 아이디어가 있으십니까?

미리 감사드립니다.

답변

0

결국 처리하는 방법을 찾았습니다. pred

그래서 내 라인은 다음과 같이 알고있는 단어 : 나는 점수 전에 약간의 키워드를 추가

IP1 IP2 - - [13/Jun/2016:14:45:05 +0200] "GET /page/requested.html HTTP/1.1" 200 4860 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0" pred:0.00950628507703 

을 그리고 logstash이 구성을 사용 :이 뜻을 희망

input { 
    file { 
     path => '/home/user/logsDir/*' 
     start_position => "beginning" 
    } 
} 

filter { 
    grok { 
     match => { "message" => "%{COMBINEDAPACHELOG} pred:%{NUMBER:prediction_score}"} 
    } 
# I convert the score into a float in order to vizualise it in Kibana 
    mutate { 
     convert => {"prediction_score" => "float"} 
    } 
} 

output { 
    elasticsearch { } 
    stdout { codec => rubydebug } 
} 

을 같은 문제에 빠지면 도와주세요!

건배!