2016-09-26 2 views
3

들어오는 상위 10 개 요청을 표시하는 원형 차트 시각화를 만들려고합니다. 다음과 같은 메시지 필드가 들어오는 요청 만 필터링하는 검색 쿼리가 있습니다. "들어오는 요청/api/someaction". 전체 문자열 대신/api/someaction 부분을 기반으로 집계를 수행하는 방법 ("수신"이 용어로 계산되기 때문에) "Kibana : 필드의 부분 문자열을 기반으로 한 원형 차트 조각

아니면 ... 사용자 정의 필드를 만들 수 있습니까? 예를 들어, 다른 필드의 문자열?

감사

이전 코멘트에서 언급 한 바와 같이
+0

Logstash 또는 다른 것을 사용합니까? Logstash라면 설정이 어떻게 생깁니 까? – Val

+0

"고급"JSON 입력을 사용하는 방법이 있다고 생각합니다. 나는 현재 그것을보고 있지만 지금까지 뭔가를 찾을 수 없었습니다. – exhuma

답변

1

, 나는. 내 문제에 대한 해결책을 마련했습니다 나를 위해, 나는 foo bar baz 같은 값을했고 나는를 추출하는 데 필요한 첫 번째 단어 : 다음 스크립트를 사용하여 "고급 → JSON"필드를 사용하여이 작업을 수행 할 수있었습니다 :

{ 
    "script": "(_value.indexOf(' ') > 0 ? _value.substring(0, _value.indexOf(' ')) : _value)" 
} 

는 그래서, 키바 인터페이스이는 다음과 같습니다

Kibana visualisation config with scripted value


따라서, 귀하의 경우, 스크립트는 아마 같은 것을해야한다 : 분명히

{ 
    "script": "(_value.indexOf(' ') > 0 ? _value.substring(_value.lastIndexOf(' ')) : _value)" 
} 

, 이 경우 추출 할 메시지의 부분이 문자열의 마지막 공간을 따른다 고 가정합니다. 나는 위의 테스트를 위해 일회용 자바 클래스를 작성했습니다 :

public class Foo { 

    public static void main(String[] args){ 
     String tester = "Incoming request /api/someaction"; 
     String result = tester.substring(tester.lastIndexOf(" ")); 
     System.out.println(result); 
    } 

} 

는 지금까지 내가 말할 수있는, 당신은 JSON 필드의 "스크립트"키에 자바 코드를 사용할 수 있습니다. 그래서 String.replaceAll 또는 그 밖의 다른 String 메서드를 사용하여 정규 표현식을 사용할 수 있어야합니다 ...

나는 이것을 테스트하지 않았습니다. 다른 사람이 이에 관한 정보를 갖고 있다면, 언제든지 의견을 남길 수 있습니다.