2013-07-15 4 views
3

Logstash (UI로 Kibana 사용)를 사용 중입니다. 내 로그에서 일부 필드를 추출하여 UI의 LHS에서 필터링 할 수 있습니다.Logstash에서 필드 추출

내 로그에서 샘플 라인은 다음과 같습니다 : 내 logstash의 conf 파일에서

2013-07-04 00:27:16.341 -0700 [Comp40_db40_3720_18_25] client_login=C-316fff97-5a19-44f1-9d87-003ae0e36ac9 ip_address=192.168.4.1 

, 나는이 넣어 : 이상적으로

filter { 
    grok { 
     type => "mylog" 
     pattern => "(?<CLIENT_NAME>Comp\d+_db\d+_\d+_\d+_\d+)" 
    } 
} 

을, 나는 Comp40_db40_3720_18_25 (의 수를 추출하고 싶습니다 숫자는 다양 할 수 있지만 _로 구분 된 각 섹션에서 항상 1 개 이상이고 client_login (client_logout 일 수도 있음)입니다. 그런 다음 CLIENT_NAME = Comp40 ... CLIENT_NAME = Comp55 등을 검색 할 수 있습니다.

키바나에서 사용할 수있는 필드를 만들기 위해 구성에 누락 된 것이 있습니까?

감사합니다.

+0

정규식이 좋아 보인다 ( 경화제 [_A-Z의 \ d 개] +). 작동하지 않는 것을 제발 공유 할 수 있습니까? 그런데 나는 당신이 또한 당신의 conf 파일에 elasticsearch 출력을 정의했다고 가정하고있다. –

+0

예, Logstash에서 ES의 임베디드 인스턴스를 사용하고 있습니다. 나는 내가 기대했던 것이 같았습니다. LHS (열 아래)에서 @ fields.client_name을 클릭하면 추출한 모든 필드의 수 또는 심지어 Comp40의 목록이 표시됩니다. , Comp55 등등 말이 맞습니까? – user2406467

+0

내가 원하는 것이 Logstash/Kibana 데모 (http://demo.logstash.net/)에서 가장 좋은 예라고 생각합니다. @message를 클릭하면 해당 유형의 상위 "카테고리"중 5 개가 분류됩니다. – user2406467

답변

4

패턴을 올바르게 일치시키는 데 어려움이있는 경우 Grok Debugger을 사용하면 좋은 해결책입니다.

주어진 문제에 대해서는 검색 데이터를 다른 변수로 분리하고 다른 다양한 숫자를 다른 (휴지통) 변수에 저장할 수 있습니다.

예를 들어

:

(?<SEARCH_FIELD>Comp\d+)%{GREEDYDATA:trash_variable}] 

은 (위의 패턴에 Grok Debugger을 사용하십시오) 내가 좋아하는 뭔가를 사용하는 것이 비록