2017년 12월 10일 일요일

시계열 데이터 분석기 timelion

ELK 스택 삼총사 중 키바나를 개발한 라쉬드 칸이 비행기 타고 가다 뚝딱 만들었다는 timelion.


이름에서 알 수 있듯이 timelion은 시계열 데이터 분석에 특화되어 있으며, 함수 형식의 표현식을 사용한다. 자동완성을 지원하기 때문에 사용도 쉬운 편.


다음은 인덱스명이 win_event인 데이터의 시계열 발생 추이를 그려주는 표현식 '.es(index=win_event, metric=count)'의 사용 결과.


표현식 '.es()'와 결과가 같다. 인덱스명을 지정하지 않으면, 해당 시간대의 모든 데이터에 대한 그래프를 그려주며, metric(집계 유형)을 지정하지 않으면 count metric이 기본 적용되기 때문.

다음은 DNS 조회 시도를 알리는 3006 이벤트만의 발생 추이를 그려주는 표현식 '.es(q=event_id:3006)'의 사용 결과.


장점

timelion의 장점은 스케일이 다른 데이터의 발생 추이를 좀 더 정밀하게 비교 분석할 수 있다는 것. (서로 다른 검색 조건 반영 가능) 다음은 전체 이벤트와 3006 이벤트의 발생 추이를 비교하는 표현식 '.es(),.es(q=event_id:3006)'의 사용 결과.


스케일 차이가 커서 직관적인 비교가 어렵다. 이때 데이터별로 Y축을 다르게 지정할 수 있다. 다음은 3006 이벤트의 발생 수치를 표시해주는 Y축을 별도로 지정한 표현식 '.es(),.es(q=event_id:3006).yaxis(2)'의 사용 결과.


만약 EventID별 발생 추이를 그리고 싶다면 어떻게 하면 될까? '.es(q=event_id:3006)' 형식의 표현식을 EventID 개수만큼 나열해야 하는 사태가 벌어질까?

다행히 timelion은 필드별 고유 항목을 분리해주는 'split' 기능을 제공한다. 다음은 상위 10개의 EventID별 발생 추이를 그려주는 표현식 '.es(split=event_id:10)'의 사용 결과.


이때 범례 표시가 너무 복잡하다면 정규표현식을 이용해서 좀더 직관적인 범례를 만들 수도 있다. 다음은 범례에서 EventID만을 추출해주는 표현식 '.es(split=event_id:10).label(regex='.+:(\S+).+', label=$1)'의 사용 결과.


캡쳐그룹을 이용해서 전체 범례 영역 중 EventID 영역만을 임시 버퍼에 저장한 후, 역참조($1)를 통해 불러오는 방식.

regex101

이 외에도 인덱스 패턴 등록이 필요 없고, 키바나보다 더 극한의 계산 간격 설정이 가능하다. 자세한 내용은 여기 참고.

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스