8.1 Docker 로그를 위한 인덱스 설정
데모를 위해 ELK와 Filebeat를 포함한 Docker 이미지를 만들었고, 로그를 생성하는 테스트 프로그램도 포함되어 있어. 이번 예제에서는 Kibana에서 Docker 로그를 위한 인덱스를 설정하는 데 집중할게.
1단계: Repository 클론 및 ELK 스택 실행
ELK 스택용 Docker Compose 설정이 담긴 repository를 다운로드하고 실행해봐:
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker compose up
편의를 위해 -d
옵션은 생략했어. 그래서 ELK 스택 실행 과정을 볼 수 있을 거야. 실행하는 데 몇 분이 걸릴 수도 있어. 성공적으로 시작되면 로그에 다음과 같은 메시지가 나타날 거야:
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],
"pid":6,"message":"http server running at http://0:5601"}
2단계: Kibana 접근하기
웹 브라우저를 열고 http://localhost:5601로 이동해봐.

3단계: 로그를 위한 인덱스 설정
Kibana의 왼쪽 메뉴에서 Discover를 선택해서 인덱스 생성 페이지로 이동해봐.

4단계: 새로운 인덱스 생성
Create index pattern 버튼을 클릭해서 설정 폼을 열어. Index pattern name 필드에 logstash-*
를 입력해. 설정이 제대로 되었다면 Kibana가 규칙에 맞는 인덱스를 보여줄 거야.

5단계: 타임스탬프 필드 선택
다음 페이지에서 타임스탬프가 포함된 주요 필드인 @timestamp
를 선택해.

6단계: 인덱스 확인하기
설정을 완료하면 인덱스 설정 페이지가 나타날 거야. 현재는 추가적인 작업이 필요 없어.

7단계: 로그 보기
Discover 섹션으로 돌아가면 Docker 컨테이너의 로그 레코드가 표시될 거야.

8.2 로그 시각화를 위한 대시보드 생성
1단계. 로그 시각화를 위한 대시보드를 생성해봐.
왼쪽 메뉴에서 "Dashboard"를 클릭하면 대시보드를 생성할 수 있는 페이지로 이동할 거야.

2단계. "Create new dashboard"를 눌러봐, 그럼 이제 대시보드에 추가할 객체들을 설정할 수 있는 화면으로 이동돼.

3단계. "Create new" 버튼을 클릭하면 Kibana가 데이터를 어떤 방식으로 표시할지 선택하게 할 거야. 옵션이 꽤 많지만, 예제로 두 가지를 살펴볼게 — "Vertical Bar" 스타일의 그래프와 "Data Table" 스타일의 표 형식. 나머지 설정은 비슷하게 해.

8.3 로그 히스토그램
예제로 "Vertical Bar"를 사용해서 서비스의 성공한 요청과 실패한 요청 비율을 보여주는 히스토그램을 만들어보자. 설정 후 우리는 이렇게 보게 될 거야:

성공한 요청은 응답 코드가 < 400인 요청, 그리고 400 이상인 모든 요청은 문제로 간주해.
먼저, 그래프의 데이터 소스를 선택해야 해. 이전에 생성한 Index Pattern을 사용하자.

데이터를 선택한 후 기본적으로 하나의 공통 그래프가 나타날 거야. 이제 이걸 설정하자.

"Buckets" 섹션에서 "Add"를 클릭하고 "X-axis"를 선택하여 X축을 설정하자. 여기에 타임스탬프가 표시될 거야. "Aggregation" 필드에서 "Date Histogram"을 선택하고 "Field"에는 "@timestamp"를 입력해. "Minimum interval" 필드는 "Auto" 그대로 두면 돼.

"Update"를 클릭하면, 그래프에 30초마다 요청 수가 표시될 거야.

이제 Y축의 막대 설정으로 넘어가자. 현재는 시간 간격당 요청 총 수가 표시되고 있어. 이걸 "Sum Bucket"으로 변경해서, 성공한 요청과 문제 있는 요청을 추가하자. Bucket → Aggregation 섹션에서 "Filters"를 선택하고 필터를 설정해: "statusCode >= 400". "Custom label" 필드에는 메트릭에 대한 이해하기 쉬운 이름을 적으면 돼.

"Update"를 클릭하면 그래프에는 문제 있는 요청만 표시될 거야.

막대 색상을 변경하고 싶어? 그래프의 범례에서 원을 클릭하면 색상을 선택할 수 있는 창이 나타나.

이제 성공한 요청 데이터를 추가하자. "Metrics" 섹션에서 "Add"를 클릭하고 "Y-axis"를 선택해. 비슷한 방식으로 설정하되, 필터에는 "statusCode < 400"을 입력해.

새 막대의 색상을 변경하면, 성공한 요청과 문제 있는 요청의 비율을 시각화한 그래프가 완성돼.

그래프를 저장하는 걸 잊지 마. 화면 상단의 "Save"를 클릭하고 이름을 지정하면, Dashboard에 나타날 거야.

8.4 로그 테이블
"Data Table" 테이블을 만들어서 모든 요청이 있었던 URL 목록이랑 각각의 요청 수를 확인해보자. Vertical Bar를 만들었던 것처럼, 데이터 소스 선택부터 시작하자.

데이터를 선택하고 나면 선택한 시간 범위 동안의 요청 총 개수를 보여주는 단일 컬럼이 있는 테이블이 화면에 뜰 거야.

이제 테이블을 설정해보자. "Buckets" 블록으로 가서 "Add"를 누르고 "Split rows"를 선택해.

나타난 "Aggregation" 필드에서 "Terms"를 선택하고, "Field"에 "url.keyword"를 넣어.

"Custom label" 필드에 설명하기 쉬운 이름을 입력해봐, 예를 들어 "Url". 그런 다음 "Update" 버튼을 누르면 테이블이 완성돼! 이제 선택한 시간 범위 동안 각각의 URL 요청 수를 볼 수 있을 거야.

테이블을 저장하려면 화면 상단의 "Save" 버튼을 누르고 이름 (예: "Urls")을 입력한 다음 Dashboard로 돌아가면 돼. 이제 우리가 만든 두 개의 시각화를 모두 확인할 수 있어.

GO TO FULL VERSION