Blog Code

kibana 혹은 elasicsearch 에서 unique count 정확하게 보기

July 13, 2016

author:

kibana 혹은 elasicsearch 에서 unique count 정확하게 보기

사용자 pv 확인을 위해 kibana를 사용중이었는데 kibana의 unique 갯수와 kibana와 동일한 쿼리로 추출하는 일일 접속자의 id 목록의 갯수와 맞지 않는 현상이 발생했다.

es에서 갯수를 계산할때 대략적인 수치를 사용한다는것을 알고는 있었지만 대략 5000 vs 4500 정도로 오류의 편차가 너무 커서 이를 해결하고자 방법을 찾던중 실마리를 찾았다.

unique 갯수를 추출하기 위해 cardinality aggregation을 사용하는데 이 수치에는 어느정도의 에러 수치가 있고 이를 해결하기위해서는 precision_threshold 옵션 수치를 수정하면 된다. precision_threshold 수치가 높으면 더 많은 메모리와 자원을 사용하고 속도는 느리지만 정확한 값을 얻을수 있고 낮으면 메모리와 자원도 적게 쓰고 속도도 빠르지만 부정확한 데이터를 얻게 된다.

precision_threshold 값의 기본값이 얼마인지는 모르겠지만 내가 문제 생겼던 서비스의 경우 수치가 10,000 이하이기 때문에 precision_threshold 값을 10,000으로 설정했더니 정확한 데이터를 얻을수 있었다.

kibana에서 precision_threshold 값을 입력하기 위해서는 Y-Axis > Advanced > JSON Input 에 다음과 같이 입력한다.

{"precision_threshold": 10000}
precision_threshold 입력하기

그런데 이값을 적용하고 나면 정말 느려진다 =_= 정확한 수치가 중요한 경우가 아니라면 굳이 입력하지 않고 흐름을 보는데만 확인하고 필요할때만 입력하는게 좋을것 같다.

참고자료

게시글의 아마존, iTunes 링크들을 통해 구매를 하시면 제휴(Affiliate) 프로그램에 의해 저에게 일정 금액이 적립될 수 있습니다. ^_____^