미션 : Web Service log를 Log_Data서버에 저장하여 분석 및 그래프를 작성하라!

최근 들어 대국민 서비스를 하는 컨텐츠 회사들이 많이 들어 나고 있으며, 그 서비스를 담당하고 있는 팀장님들께서 원하시는 내용은 “누가 (이용자 ), 언제 ( 시간, 요일, 월 ), 어디서( IP, 어느나라 / 어느 지역 ), 어떤 경로 (  모바일, 테블릿, PC 등 )를 통해서, 왜 ( 검색엔진 키워드 ) , 어디를 ( 웹페이지, 컨텐츠, 메뉴 ) 방문” 하였는지에 대한 내용을 실시간으로 분석을 하고 싶어 하신다.

실시간으로 쏟아져 내리는 Log를 예전처럼 배치만로 돌려 분석하기에는 이제 한계점에 다다르고 있다.실시간 서비스를 담당하는 사람으로서는 머리가 여간 아픈 일이다.
이에 부합하기 위해 열심히 찾아본 결과 실시간 log를 분석하기 좋은 내용을 발견하여 Test 및 운영에 반영해 보았다.

그 과정들을 간단하게 설치하는 과정부터 시각화하는 내용까지 담아 보았다.
실시간으로 컨텐츠 로그를 분석하기 위하여 ELK를 간단하게 Test 해본 결과를 공유하고자 한다.

앞으로 우리가 설치하게 될 프로그램.
E (Elasticsearch) : Apache Lucene을 기반으로 개발된 오픈소스 분산 검색엔진(저장소)
L (Logstash) : 해당 서버에서 발생되는 모든 로그를 분석하여 원하는 곳으로 전달해주는 프로그램(분석 및 전달자)
K (Kibana) : node.js 기반으로 Elasticsearch와 같이 사용하여 시각적으로 실시간 상황을 한눈에 볼 수 있도록 하는 프로그램(View)

위는 프로그램은 https://www.elastic.co 의 사이트에서 찾아  볼 수 있다.

01

최종적으로 우리는 아래와 같은 그림을 Kibana로 생성할 수 있다.

02
간단하고도 쉽게 설치를 진행할 예정이며 튜닝 및 환경설정은 각자의 시스템에 맞도록 변경하여 서비스에 투입할 수 있도록 한다.

구축할 서버의 구성도는 아래와 같다.

03

OS : Ubuntu
Log_Data Server : Elasticsearch + Kibana (192.168.56.10)
Kibana_web Server : Nginx (192.168.56.11)
web Server : Logstash (192.168.56.101-107)

1. Elasticsearch Install (192.168.56.10)

이미지 1

2. Kibana Install (192.168.56.10)

이미지 2

3. Nginx Install (192.168.56.11) 보안을 위하여 web서버를 전방에 두자!!  필요가 없다고 느끼면 이 서버는 없어도 된다.

이미지 3

4. Logstash (192.168.56.101) 서비스를 하고 있는 서버에 Logstash를 설치해보자.

이미지 4

이미지 5

이미지 6

5. Kibana 접속
(접속 url : http://192.168.56.11)

04

Field 및 Type을 확인한다.

05

Log가 수집하게 되면 Discover에는 아래 그림과 같은 내용으로 데이터를 확인할 수 있다.

06

6. 차트 및 표를 만들어 보자.

(1) 차트 및 표를 작성해보자
host별로 Log 현황 차트 만들기

07

From a new search 클릭

08

X-Axis 클릭

09

Timestamp별로 아래와 같이 설정 후 녹생 재생 버튼을 누면 차트가 그려진다.

10

Timestamp별로 아래와 같이 설정 후 녹생 재생 버튼을 누면 차트가 그려진다.

11

Dashboard를 클릭 후 + 버튼을 누르면 방근전에 생성한 차트 리스트가 나타난다.

12

마우스를 빨간색 버튼 있는 곳으로 가져가면 사이즈를 변경할 수 있다.

13

Nginx의 에러 로그의 카운트를 표로 그려보자.
visualize -> Data table를 선택 후 아래와 같이 설정을 해주면 완료.

14

Dashboard에 추가를 해보자.
점점 뭔가 그럴싸하게 만들어지고 있다.

15

이번에는 실시간으로 들어오는 사용자 카운트를 차트로 그려보자.
ip를 uniq 하게 만들어야 하므로 Aggregation의 값을 Unique count로 변경하고 필드는 clientip로 설정
현재 3개(pow, sug, red)의 서비를 이용하고 있는 이용자 수를 실시간으로 확인할 수 있다.

16

이제는 응용을 하여 다른 차트들도 예쁘게 만들어 보자.
4시간 단위로 분마다 refresh 하게 되면 5분 단위로 데이터를 실시간으로 모니터링할 수 있다.

17

이렇게 하여 간단하게 ELK 로그 수집서버 구축이 완료되었다.
kibana와 elasticsearch의 새로운 기술들이 빠른 속도로 업데이트 되고 있으며, 더 재미있는 기능들이 여기저기 숨어 있다.

 

Posted by 윤종열 @ 카테노이드  SE팀

 

 

 

 

 

 

답글 남기기

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