이세개발
article thumbnail

PLG stack

PLG stack 은 레이블 기반의 메타데이터만 인덱싱해서 인덱스에 소요되는 메모리 사용량이 현저히 적은 "Loki" 를 기반으로 한 로깅 시스템입니다.
Promtail + Loki + Grafana 로 구성이 되어있고 간단하게 역할을 소개해보겠습니다.

Promtail: 

  • 역할: 로그 수집 에이전트로 작동하며 로그 파일을 추적하고 읽습니다.
  • 작동 방식: 지정된 위치의 로그 파일을 tailing (즉, 실시간으로 로그 변화를 추적)하며, 해당 로그 데이터를 Loki 서버로 전송합니다.
  • 설치: 일반적으로 로그가 생성되는 각 머신이나 컨테이너에 설치됩니다.
  • 추가 정보: Promtail은 로그의 메타데이터를 수집하여 로그 데이터와 함께 Loki로 전송합니다. 이 메타데이터는 후에 로그를 쿼리할 때 유용하게 사용됩니다.

Loki: 

  • 역할: 로그 집중 및 저장을 담당하는 로그 집계 시스템입니다.
  • 작동 방식: Promtail로부터 전송받은 로그 데이터를 인덱싱 및 저장합니다. 그 후, 사용자는 Loki를 통해 저장된 로그 데이터를 쿼리할 수 있습니다.
  • 특징: Loki는 Prometheus-inspired 라벨 시스템을 사용하여 로그를 인덱싱합니다. 이는 메트릭 기반의 시스템에서와 비슷한 방식으로 로그 데이터를 쿼리하는 데 도움을 줍니다.
  • 추가 정보: Loki는 로그 데이터의 볼륨을 최소화하려는 목적으로 설계되었기 때문에, 저장 공간의 효율성을 높이며, 쿼리 성능도 향상됩니다.

Grafana: 

  • 역할: 시각화 및 대시보드 플랫폼입니다.
  • 작동 방식: Grafana는 Loki와 통합되어 사용자가 로그 데이터를 쿼리하고 결과를 시각적으로 표시할 수 있게 해줍니다.
  • 특징: Grafana는 Prometheus, Loki와 같은 다양한 데이터 소스를 지원하며, 시각적 대시보드를 구성하여 로그 및 메트릭 데이터를 시각화합니다.
  • 추가 정보: 사용자는 Grafana를 사용하여 로그와 메트릭을 함께 시각화하여 시스템의 상태와 성능을 모니터링 할 수 있습니다.

 

또한 PLG stackLoki stack 이라고도 하는데 Loki stackkubernetes helm 차트의 이름으로 사용되는 이름입니다.

- Loki stack: 일반적으로 간단한, 중소 규모의 환경에 적합하며, 모든 구성 요소가 단일 인스턴스 또는 클러스터 내에서 실행됩니다.

- Loki-distributed: 대규모 환경에서 Loki를 확장할 수 있도록 설계된 분산 버전입니다. 여러 노드에서 실행될 수 있으며, 고가용성 및 확장성을 제공하기 위한 여러 서브 컴포넌트로 구성됩니다.

비슷한 monitoring 스택으로는 ELK, EFK 스택 등이 있습니다.
Elasticsearch : 분석 엔진
Logstash, Fluentd : 데이터 수집 및 로그 파싱 엔진
Kibana : 분석 및 시각화 플랫폼
으로 구성된 stack이며 많은곳에 사용되고 있습니다.

PLG는 위 ELK(EFK) stack 과 여러 차이가 있지만 상대적으로 "가볍다" 라는 점이 부각되는 모니터링 스택이라고 할 수 있습니다.

 

Loki 스택 시작하기

Loki stack 은 k8s 클러스터에 구축을 주로 하는데 간단 개발 및 테스트 용으로 사용하고싶어 AWS ec2 인스턴스를 사용했습니다.
프리티어인 t2.micro 에 설치하였고, 간단하게 docker-compose 를 이용하여 간단하게 설치해보았습니다.

사전 요구 사항

  • ubuntu (arm, amd64 둘다 테스트결과 사용가능)
  • Docker: 컨테이너화된 애플리케이션을 실행하기 위한 플랫폼.
  • Docker Compose: 여러 컨테이너의 응용 프로그램을 정의하고 실행하기 위한 도구.

테스트 환경 준비

작업 디렉토리 설정:

mkdir evaluate-loki
cd evaluate-loki

필요한 설정 파일 다운로드

해당 경로에서 URL에서 `loki-config.yaml`, `promtail-local-config.yaml`, `docker-compose.yaml`를 다운로드합니다.

wget https://raw.githubusercontent.com/grafana/loki/main/examples/getting-started/loki-config.yaml -O loki-config.yaml
wget https://raw.githubusercontent.com/grafana/loki/main/examples/getting-started/promtail-local-config.yaml -O promtail-local-config.yaml
wget https://raw.githubusercontent.com/grafana/loki/main/examples/getting-started/docker-compose.yaml -O docker-compose.yaml

 

배포

sudo docker-compose up -d

 

완료된 모습

* 참고, 컨테이너 삭제

sudo docker-compose down

테스트

Grafana 사용하기

브라우저에서 Grafana 인스턴스에 액세스합니다.
http://{ip 주소}:3000
이후 오른쪽 위 sign up 으로 로그인합니다. [기본 id : admin , pw : admin]
이후 비밀번호를 설정합니다.

Home - Connections - Data sources 에 들어가면 자동으로 Loki 가 설정이 되어있습니다.

 

이것으로 설치가 완료되었습니다.
다음에는 Prometeus 설치도 하고, Grafana를 사용하여 Loki, Prometeus 모니터링 대시보드 구축을 해보도록 하겠습니다.


참고링크
https://grafana.com/docs/loki/latest/get-started/

 

Get started | Grafana Loki documentation

Open source Get started This guide assists the reader to create and use a simple Loki cluster. The cluster is intended for testing, development, and evaluation; it will not meet most production requirements. The test environment runs the flog app to genera

grafana.com

 

profile

이세개발

@print(name)

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!