Logging/Grafana Loki 통한 로그 수집하기

Paul
6 min readAug 2, 2021

--

https://grafana.com/docs/loki/latest/logo_and_name.png

Grafana Loki 란 무엇인가

로그 수집을 하기 위한 솔류션을 말하면 당연히 ELK(ELK Stack: Elasticsearch, Logstash, Kibana) 라고 생각을 많이 하실 것 같습니다. 많은 기업이 ELK를 통해서 서비스 로그 및 Kubernetes 클러스터의 로그를 저장합니다. 클라우드 제공하는 AWS에서도 해당 서비스를 제공하고 있습니다. 하지만 ELK는 구성하고 운영하기가 어렵고, 관리형 솔류션을 사용하면 비용이 많이 들어갑니다. 또한, 로그가 많아지고, Kubernetes 클러스터가 여러 개 있는 경우 운영 비용이 기하급수적으로 올라가는 문제점이 있습니다.
2018년 KubeCon Seattle에서 Grafana Labs에서 개발한 오픈 소스 중앙 집중식 로그 집계 플랫폼인 Loki를 발표했습니다. Grafna 통한 로그 시각화를 하며, Cloud Nattive 환경인 Kubernetes 에서도 운영할 수 있습니다. Loki에서 제공되는 Promtail 이외 Docker 로그 드라이버인 Fluentd, Fluentbit 에서도 플러그인으로 제공을 합니다.

Grafana Loki 로컬 환경 구성하기

Vagrant를 통해서 Grafana Loki를 구성해 보겠습니다. 아래의 링크에서 git clone 후 vagrant up 하시면 됩니다. Loki 설치를 single process mode 기반으로 빠르게 구성을 해보도록 하겠습니다.

# 가상 환경을 실행 합니다.
vagrant up storage
# 가상 서버에 접속
vagrant ssh storage
# Grafana Loki 관련 파일을 복사
vagrant@loki:~$ cp -r /vagrant/docker/single/ .
vagrant@loki:~$ cd loki/
vagrant@loki:~/loki$ ls
conf docker-compose.yaml
# Docker 에서 해당 파일을 접근하기 위해서 권한을 변경합니다.
vagrant@loki:~/loki$ chown -R 10001:10001 conf

conf 폴더 안에는 Loki 환경 설정 파일 및 Promtail 환경 설정 파일이 있으며, 해당 파일을 Docker에서 사용하도록 Docker Compose에 해당 폴더를 볼륨 바인딩을 했습니다. 해당 파일은 아래의 링크를 통해서 내려받기를 받을 수 있습니다.

# Docker Compose 실행합니다.
vagrant@loki:~/loki$ docker-compose up -d

Grafana Loki 구성이 완료되었습니다. Grafana를 설정해 보도록 하겠습니다.

  • http://192.168.56.180:3000 Grafana 로그인 합니다.
  • Grafana 에서 제공하는 Data Source에서 Loki를 선택 후 아래와 같이 설정 후 Save &test를 클릭해서 정상적으로 연결되는지 확인합니다.
Grafana Data Source 설정 화면
Grafana Explore 화면
  • Log browser를 선택해서 검색할 레이블을 선택 후 Show logs 선택합니다.
Grafana Log browser 설정 화면
  • Show logs 선택하시면 아래와 같이 로그가 화면에 출력됩니다.
Grafana Log browser 검색 화면

마무리

전체 시스템을 Kubernetes 환경으로 전환하면서 실시간 로그 수집이 필요했습니다. Datadog를 통해서 로그를 수집할 수 있지만, 비용적인 부분에서 부담되었고, 운영 및 설치기 편리하고 로그 시각화를 할 수 있는 것이 없을까 고민하다가 Grafana Loki에 대해서 검토를 했습니다.
기술 검토를 하면서 소규모 환경에서 가장 빨리 로그를 수집하고 시각화를 하는데 Loki만 한 솔류션을 찾기 어려울 것 같습니다. Golang으로 개발이 되어서 성능적인 면에서도 좋았습니다. 로그 시각화를 위해서 LogQL 학습이 필요합니다.
최종적으로 Grafana Loki를 도입하려고 했지만, AWS Fargate 가 Loki 플러그인을 제공하지 않아서 결국에 ELK로 최종 결정을 내렸습니다. 언젠간 AWS Fargate에서 Loki 플러그인을 지원한다면 도입을 해볼까 합니다. 다음으로 Grafana Loki 아키텍처 구성에 대해서 알아보도록 하겠습니다.

참고사이트

--

--