ElasticSearch Kibana Timelion
키바나의 Timelion(타임라이언)으로 TSVB에서 제공하지 않는 기능을 사용하여 시계열을 표현할 수 있다. Timelion 특유의 문법을 갖고 있는데 여러 함수를 chaining 하듯이 연결해서 사용하는 함수 형식의 표현식으로 시각화한다.
하나 이상의 인덱스에서 시계열 데이터 표현하거나 2개 이상의 시계열에 계산이 필요한 경우에 유용하다.
간단한 기본 규칙과 사용법, 기본 함수 및 파라미터에 대해서 알아보려 한다.
1. Expression
항상 모든 함수는 .(마침표) 으로 시작한다. 하단의 예시로 가장 기본적인 함수를 보면 각 함수를 보면 각 함수 앞에 마침표가 찍혀있다.
.es().label('엘라스틱서치 함수').if(eq,0,null)
2. 함수 파리미터
함수1(파라미터1 = 인수 1, 파라미터 2 =인수 2). 함수 2(...)
함수 내 파라미터는 0~n개 이상을 갖는다. 함수의 각 파라미터에 "="을 통해서 할당한다.
각 파라미터는 , (comma)로 구분한다. 이전의 파라미터에 값 없이 , 로 작성되면 이전 값은 생략된다.
.es().label('엘라스틱서치 함수').if(eq,0,null)
한 함수 내 파라미터 간의 순서가 존재하기 때문에 파라미터를 지정하지 않고 인수만 넣는다면 작성된 순서에 따라서 인식하기 때문에 여러 개의 파라미터가 필요한 경우 명시적으로 작성하는 것을 추천.
3. 기본 사용 예시
외부에서도 데이터를 가져올 수 있지만 기본적으로 엘라스틱서치에 적재된 샘플 데이터를 가져와서 진행할 예정이다.
3.1. es 함수
엘라스틱 서치의 인스턴스에서 데이터를 가져와서 시간에 따른 도큐먼트의 수를 리턴한다.
.es(index=kibana_sample_data_logs,timefield='@timestamp')
.es()
3.2 필터링
쿼리(query) 파라미터에 필터링하고 싶은 값을 할당하면 해당 값에 해당하는 수를 도큐먼트 수를 반환한다
쿼리 내에 반드시 field : 값 형식으로 string 타입으로 넣어준다.
. es(q='필드:값')
.es(index=kibana_sample_data_logs, timefield='@timestamp',q='os:win 7')
3.3 집계
기본으로 도큐먼트 수를 리턴하는데 metric을 따로 집계 방식을 지정하면 그 집계 결과 값을 리턴한다. 반드시 집계: 필드 형식으로 string 타입으로 넣어준다.
. es(metric='집계:필드')
win 7 사용 사용자들을 일평균 사용시간
.es(index=kibana_sample_data_logs,timefield='@timestamp', q='os:win 7',metric='avg:hour_of_day')
3.4 그룹화
지정한 필드에 따라 시계열을 그룹화하여 나누며 그룹화할 개수(limit)를 숫자로 지정한다.
. es(split='필드:limit')
.es(index=kibana_sample_data_logs,timefield='@timestamp', metric='avg:hour_of_day',split=machine.os.keyword:5)
3.5 2개 이상의 시계열
n개 이상으로 각각 객체사이에 콤마, 로 구분하여 작성하면 각 객체별로 시각화한다.
.es(), .es()
윈도우와 ios 사용자들을 일평균 사용시간
.es(index=kibana_sample_data_logs,timefield='@timestamp', q='machine.os.keyword:ios',metric='avg:hour_of_day'),.es(index=kibana_sample_data_logs,timefield='@timestamp', q='machine.os.keyword:win *',metric='avg:hour_of_day')
3.6 조건
.if(비교, 비교기준, 비교할 쿼리, True일 경우 리턴값)
.es(index=kibana_sample_data_logs,timefield='@timestamp', metric='avg:bytes').derivative().color(grey).label('변화'),
.es(index=kibana_sample_data_logs,timefield='@timestamp',metric='avg:bytes').derivative().if(lt,0,.es(index=kibana_sample_data_logs,timefield='@timestamp', metric='avg:bytes').derivative(),null).color(red).lines(width=5)
기본 함수와 파라미터를 알아보았는데 이외에 예측부터 형태까지 조정할 수 있다. 이외 다양한 유용한 함수로 세부적인 컨트롤 가능해서 github에 사용 설명 보고 moving average, holt 등 적용 가능하니 꼭 참고 바란다.
관련글
출처
https://www.elastic.co/guide/en/kibana/current/timelion.html#_function_parameters
'Data > ElasticSearch' 카테고리의 다른 글
[ElasticSearch]Kibana키바나 -KQL 쿼리 사용방법 ,루씬(Lucene)과 차이점 (0) | 2022.10.29 |
---|