본 포스팅은 GKE Prometheus, Loki, Grafana로 Monitoring dashboard 구성하기(2)에서 이어지는 글입니다.
GKE Prometheus, Loki, Grafana로 Monitoring dashboard 구성하기(2)
GKE Prometheus, Loki, Grafana로 Monitoring dashboard 구성하기(1)
이번 GKE에서 관측 가능성 확보하기 시리즈의 마지막 포스팅입니다.
지금까지 GKE Cluster의 다양한 메트릭을 수집할 수 있는 Prometheus와 이 메트릭을 대쉬보드 형태로 구성해주는 Grafana까지 설치를 마쳤습니다.
이로 인해 시계열 데이터(Time-series data)에 대한 관측 가능성을 확보하는 성과를 이루었습니다. 하지만 마지막으로 클러스터에 대한 완전한 관측 가능성을 위해서는 마지막 단계가 남아있습니다.
바로 로그 데이터(Log data)에 대한 수집과 시각화(Visualization)를 위한 단계인데요.
이번 포스팅에서는 GKE Cluster의 관측 가능성 확보의 마지막 단계로 로그 데이터를 수집할 수 있는 Loki를 설치해보도록 하겠습니다.
1. 관측 가능성 확보를 위한 세번째 단계 - Logging
로깅은 모니터링과 무엇이 다를까요?
모니터링은 시간을 기준으로 수집되어 특정한 수치로 나타나는 메트릭(Metric)을 분석하는 개념입니다.
하지만 로깅은 시간을 기준으로 수집된 데이터라는 점은 같지만 숫자값이 아닌 인간이 읽을 수 있는(Human-readable) 문자를 분석하는 개념입니다.
보통 시스템이나 어플리케이션이 프린트 줄 넣기(printlning)를 통해 정보를 제공하고자 할때 로그를 기록하게 됩니다.
이렇게 출력된 로그를 시간 순으로 수집하고 저장한 후 분석하는 것이 로깅이라고 할 수 있습니다.
현재 로깅을 위한 다양한 툴이 존재하지만 Kubernetes 클러스터에서 출력되는 로그를 수집하기 위해 사용되는 대표적인 툴로는 Loki가 있습니다.
이전에 구축했던 대쉬보드 툴인 Grafana를 운영하는 Grafana Lab에서 Loki 또한 운영하고 있습니다.
Loki를 로깅을 위한 Prometheus라고 할 만큼 Prometheus + Grafana+Loki 스택은 모니터링+로깅+대쉬보드를 구현한 가장 대중적인 조합으로 구축되고 있습니다.
2. Loki 구성
지금까지 구성한 스택 모두 Helm을 이용해 구성했습니다.
Loki도 마찬가지로 Helm을 이용해 간단하게 설치할 수 있습니다. 우선 helm 차트를 설치하기 위한 레포지토리를 추가합니다.
1
|
helm repo add grafana https://grafana.github.io/helm-charts
|
cs |
그 후 아래 명령어를 입력해 Loki를 설치합니다. --set 플래그를 이용해 Loki를 제외한 나머지 스택을 설치하지 않고 PersistentVolumeClaim을 명시해 Prometheus와 같이 영구적인 볼륨에 데이터를 저장하도록 하겠습니다.
1
|
helm install loki grafana/loki-stack -n monitor \
--set grafana.enabled=false,prometheus.enabled=false,loki.persistence.enabled=true,loki.persistence.storageClassName=standard,loki.persistence.size=5Gi\ -n monitor |
cs |
설치 후에는 Loki가 정상적으로 설치됐는지 확인하기 위해 포트포워딩 명령어로 Loki에 접속합니다.
1
|
kubectl --namespace monitor port-forward service/loki 3100
|
cs |
Loki는 3100포트로 통신합니다. 포트포워딩 후 http://127.0.0.1:3100/api/prom/label
주소로 접속해 아래와 같은 페이지가 보이면 정상적으로 설치된 것입니다.
이제 Loki가 GKE Cluster에서 출력되는 로그 데이터를 수집할수 있게 되었습니다.
이제 수집된 로그 데이터를 시각화(Visualization)된 상태로 보기 위해 Grafana와 연동하겠습니다.
Grafana 웹으로 접속한 후, Configuration -> Data sources 순으로 진입한 뒤, Loki를 Select합니다.
선택하면 Loki 데이터 소스를 구성하기 위한 페이지를 볼 수 있습니다.
이번 포스팅에서는 Auth 등의 상세한 기능은 다루지 않으니 URL에 Loki 엔드포인트를 3000포트로 접속하도록 하고 Save&Test 를 클릭합니다.
Loki를 데이터 소스로 추가했다면 이제 수집된 로그들을 대쉬보드로 볼 수 있습니다.
시중에 여러 Loki 대쉬보드 템플릿이 존재하지만 아래 대쉬보드를 이용하도록 하겠습니다.
Prometheus 대쉬보드를 추가했을 때와 마찬가지로 좌측 Create 탭 -> import -> 대쉬보드 ID "12019" 입력 순으로 대쉬보드를 임포트합니다.
이제 아래와 같이 "Loki dashboard qucik search" 대쉬보드로 로그를 확인할 수 있습니다.
이제 시간순으로 수집된 로그를 기반으로 관측 가능성을 확보할 수 있게 되었습니다. 로키 또한 위 대쉬보드 말고도 다양한 템플릿의 대쉬보드를 활용할 수 있습니다.
Prometheus에서와 마찬가지로 Loki 로그를 기반으로 Alert을 보낼 수도 있습니다.
3. 마무리
여기까지 GKE 클러스터의 관측 가능성을 확보하기 위한 3가지 툴, Prometheus,Loki,Grafana를 구축해봤습니다.
이 3개 툴로 이루어진 Stack이 현재 관측 가능성을 위한 가장 대중적인 조합이라고 할 수 있습니다. 그 만큼 안정성과 유용성이 입증됐다는 뜻이기도 할 겁니다.
Kubernetes와 같은 MSA 구조에서 현재 상황을 파악하는 것 만큼 운영에 있어서 중요한 것은 없을 겁니다.
그렇기 때문에 이번 포스팅에서와 같이 스택을 구축하는 것에서 더 발전해, 수집한 메트릭과 로그를 기반으로 인사이트를 얻을 수 있는 단계에 이를 수 있어야 할 것입니다.
'Observability' 카테고리의 다른 글
Elasticsearch에 fluentd를 얹은 EFK stack 구축하기(with kubernetes) (9) | 2022.01.08 |
---|---|
클라우드 리소스 Observability 확보 도구 Steampipe 사용기 + GCP IAM report 제작기 (0) | 2021.12.27 |
Elasticsearch의 ELK Stack을 GKE Cluster에 구성해 GCP 관측 가능성 확보하기 (6) | 2021.12.12 |
GKE Prometheus, Loki, Grafana로 Monitoring dashboard 구성하기(2) (0) | 2021.08.12 |
GKE Prometheus, Loki, Grafana로 Monitoring dashboard 구성하기(1) (2) | 2021.08.10 |