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 stack 은 Loki stack 이라고도 하는데 Loki stack은 kubernetes 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/
'DevOps' 카테고리의 다른 글
github action Dockerizing - > AWS ECR push (CICD) feat go echo framework (0) | 2023.10.30 |
---|---|
React 프로젝트 github action 이용 S3 정적 배포 CICD 구축 (0) | 2023.10.29 |
Terraform을 이용한 Oracle cloud 인스턴스 생성 (0) | 2023.05.07 |
Kubernetes Dashboard (0) | 2023.05.07 |
k8s 지속적 제공(Continuous Delivery) argoCD (2) git 연동 (0) | 2023.05.07 |