[DevOps] Kibana 대시 보드 만들기

[DevOps] Kibana 대시 보드 만들기

안녕하세요? 정리하는 개발자 워니즈입니다. 지난시간에 logstash를 통해서 데이터를 쌓아보는 방법에 대해서 정리를 했습니다. 이번시간에는 적재되어있는 데이터를 기반으로 Kibana를 통해서 데이터를 어떻게 시각화를 하는지 그 방법에 대해서 정리릏 배도록 하겠습니다.

kibana_1

필자가 가장 해보고 싶었던 것은, 웹서버의 access.log를 통해서 서비스를 이용하는 패턴을 파악하고, 서비스 개선포인트를 예전보다 쉽게 찾아 내고 싶었습니다.

kibana는 로그수집기(logstash)에서 검색엔진(elasticsearch) 에 모아진 데이터를 쉽게 검색하고, 필터링하며, 다양한 챠트를 통해서 시각화할 수 있는 도구입니다.

1. Kibana에서 제공하는 Chart의 종류

키바나에서 제공하는 chart의 종류는 Visualize를 통해서 확인 할 수 있습니다. 기본적으로 제공하는 chart는 다음과 같습니다.

kibana_2

붉은 박스 표기해놓은 것이, 이번에 필자가 주로 사용했던 Chart 입니다.

  • Visualize

키바나는 여러 종류의 차트를 지원합니다. 위에서 표현된 것처럼, 막대 차트, 선형 차트, 지도, 태그 등 다양한 시각화 도구를 제공합니다. 사용자는 분석에 필요한 적절한 시각화 도구를 선택할 수 있습니다.

  • Dashboard

일 페이지에서 여러 시각화를 표시하는데 사용하며, 이를 통해 데이터에 대한 스토리를 만들 수 있습니다.

2. 각 chart 별 사용방법

각 차트 사용법에 앞서서 키바나 집계에 대해서 정리를 해보도록 하겠습니다. 키바나는 크게 2가지 타입의 집계를 사용합니다.

  1. 버킷 집계

    공통 기준에 따라서 도큐먼트를 그룹화하는 것을 버킷팅이라고 합니다. 버킷팅은 RDB의 group by와 유사합니다. 각 버킷은 포함된 총 도큐먼트 갯수에 대한 정보를 제공합니다.
    또한, 버킷집계는 하위 집계를 지원합니다. 예를 들어, 국가별로 그룹핑된 404 갯수를 집계할 수 있습니다.

  2. 메트릭 집계

    메트릭 집계는 수치화 계산을 담당하는 집계 입니다. 가령 count, max, min, average등 수집된 내용에서 해당 계산 과정을 거쳐 표현해줍니다.

2-1. DataTable

데이터 테이블 챠트는 테이블 형식의 데이터를 만들어주는 차트 입니다. 필자는 S3에 적재되는 alb access log들에 대해서 Top Url이 어떤 것인지 표현하기 위해서 다음과 같이 셋팅을 합니다 .

kibana_3

위에서 Datatable을 선택하게 되면 우측에 Data에 대해서 셋팅할 수 있는 화면이 노출되게 됩니다. 최종적으로 노출하고 싶은 내용은, TOP URL 및 국가별 count를 나타내고 싶었습니다 .

위에서 보시면, 메트릭 집계는 count를 사용했고, 버킷 집계 같은 경우는, url_path와 site_code로 split을 하여 최종적으로는 다음과 같은 테이블을 표현했습니다.

kibana_4

2-2. Line Chart

라인 차트는 통상 시간별로 데이터의 흐름이 어떻게 변화해 가는지를 나타내주는데 많이 활용합니다. 2가지 사용법에 대해서 정리를 하려고 합니다.

먼저, 시간축을 기준으로, 데이터별(메트릭 집계)로 데이터를 구분지어서 표현해보는 방식과 같은 데이터에 대해서 타입별로 데이터를 split(버킷 집계)로 나누는 방식에 대해서 정리를 하겠습니다.

kibana_55

메트릭 집계에서 보는 것처럼, 각기 다른 데이터에 대해서 집계를 수행하고, 버킷집계를 이용해서 시간축을 기준으로 데이터를 노출시키고자 합니다.

kibana_6

다음은, 같은 데이터에 대해서 split 기능을 이용해서 데이터를 분리해서 보여주는 방식입니다 .

kibana_7

위에서 보시는것처럼, Y축은 동일하게 count를 기준으로 보여주고 있고, X축은 시간축을 보여줌과 동시에 데이터에 대해서 type기준으로 split을 합니다 .

kibana_8

2-3. Pie

파이 차트 같은 경우는, 데이터별(버킷 집계)로 차지하는 부분을 나타낼 때 유용합니다.

kibana_9

메트릭은 count를 집계 합니다. 그리고 각 국가별로 데이터를 구분 짓기 위해서 버킷 집계를 사용합니다.

kibana_10

1-4. Vertical Bar

막대모양으로 표현을 해주는 차트 입니다. 해당 건수가 몇건이나 되는지 육안으로 손쉽게 표현을 해주는 내용입니다. 보통 Y축은 count로 메트릭 집계를 사용하여 표현을 해줍니다. 그리고 X축에서 수집하고자 하는 버킷 집계로 구분을 지은뒤에 다시 split을 통해서 해당 버킷 별로 데이터가 보이도록 표현을 해줍니다.

kibana_11

그러면 다음과 같이 표현이 됩니다 .

kibana_12

1-5. Time Series Visual Builder

시간별로 데이터의 변화를 나타내는데 굉장히 최적화 되어있는 차트 인것 같습니다. 물론, Line Chart로도 표현이 되는부분이 있지만, TSVB가 갖는 다양한 기능이 있어서, 같이 사용을 해보았습니다.

필자가 속한 프로젝트에서는 alb로그를 각각 (ap, eu) 지역에서 수집을 하기 떄문에, 2개의 index를 하나의 index pattern으로 잡았습니다.

kibana_13

TSVB는 보통 time series로 사용하게 되는데, 위와 같이 count에 대해서 집계처리를 하고, 2개의 지역에서 수집되는 로그를 쌓기 위해서 group by 기능으로 구분을 지었습니다. 마치 버킷 집계를 사용하는 것과 같은 형식으로 사용했습니다.

kibana_14

그렇게 되면, 위와 같이 표현이 됩니다.

3. 대시보드 만들기

시각화에 필요한 visualize들을 위에서 모두 만들어봤습니다. 마치 콤포넌트처럼 대시보드는 만들었던 visualize를 가져와서 알맞게 대시보드 구성을 해주면 됩니다.

kibana_15

보시는것처럼 만들어둔 panels들을 선택하면 구성이 되고, UI로 원하는 대로 구성을 하면됩니다.

kibana_16

4. 마치며..

이번 포스팅은 이미지가 굉장히 많이 들어갔습니다. kibana가 확실히 대시보드를 구성해주는 면에서는 강한 장점이 있는것 같습니다. 좀더 세밀하게 대시보드를 셋팅하는 부분은 다음시간에 정리를 해보도록 하겠습니다. 필자가 속한 프로젝트에서는 nginx를 web으로 사용하고 있는데 더 앞단에 alb인 load balancer가 존재하고, s3 access로그를 켜두었기 때문에 gz으로 로깅이 되었습니다.

해당 부분을 elasticsearch에 적재를 하고 난 뒤, 보시는것 것과 같이 kibana로 손쉽게 대시보드 구성이 가능하였습니다. 키바나, 엘라스틱서치, 로그스태시등 하나하나 툴에 대해서 좀더 자세히 공부를 하고 정리를 할 예정입니다.

다음 시간에는 elk스택을 kubernetes에 올리는 내용에 대해서 정리를 해보도록 하겠습니다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다