Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Study_note

[kubernetes] Loki, PLG 로그 관리 본문

Kubernetes

[kubernetes] Loki, PLG 로그 관리

Study_note 2023. 2. 28. 20:12

전 포스팅에서 이어지는 내용이다.

 

프로메테우스 스택을 통해 프로메테우스, 그라파나, 알림 매니저를 생성한 상태로 이번에는 로키를 생성해 테스트해본다.

 

PLG 스택 (Promtail + Loki + Grafana) : 여러 파드의 로그들을 중앙 서버에 저장하고 이를 조회

 

Promtail

파드의 log data를 수집하여, loki에 보내어 log를 쌓게 한다.

데몬셋으로 실행되며, Collector가 출력하는 각 로그 데이터를 중앙 Loki 서버에 전달

Promtail 외에도 도커, FluentD 등 다른 로그집 에이전트 사용 할 수 있다

 

Loki

Loki는 로그 데이터를 효율적으로 보관하도록 최적화된 데이터 저장소이며 로그 데이터의 효율적인 인덱싱한다

시계열 로그 데이터를 저장하는 DB

Loki에 저장한 로그는 LogQL(PromQL과 유사)을 이용해 조회 할 수 있으며, 그라파나 웹이나 logcli를 이용해 조회 가능

전체 로그 기반 인덱스를 생성하지 않고, 메타데이터를 기준으로 인덱스를 생성하여 자원 사용량이 현저히 적음

 

설치

helm 통해 loki, promtail 생성

kubectl create ns loki
helm repo add grafana https://grafana.github.io/helm-charts

cat <<EOT > ~/loki-values.yaml
persistence:
  enabled: true
  size: 20Gi

serviceMonitor:
  enabled: true
EOT

helm install loki grafana/loki --version 2.16.0 -f loki-values.yaml --namespace loki

---
cat <<EOT > ~/promtail-values.yaml
serviceMonitor:
  enabled: true
config:
  serverPort: 3101
  clients:
    - url: http://loki-headless:3100/loki/api/v1/push
#defaultVolumes:
#  - name: pods
#    hostPath:
#      path: /var/log/pods
EOT

helm install promtail grafana/promtail --version 6.0.0 -f promtail-values.yaml --namespace loki

 

그라파나에서 data source로 loki 생성 

HTTP URL : http://loki-headless.loki:3100 입력하고 저장

 

그라파나 → Explore : 상단 데이터 소스 Loki 선택

 

Logfilters : Job → default/nginx 값 선택 ⇒ 우측 상단 Run query 클릭하면 아래와 같이 로그와 그래프 확인 가능

그라파나 대시보드를 1541로 지정하고 사용하면 더 정확하게 시각화할 수 있다

 

---

 

loki vs Elasticsearch

둘다 널리 사용되는 로그 분석 툴로 어떤 차이가 있고 언제 어떤걸 쓰는지 찾아봤다.

 

1. 인덱싱 방법

Loki와 Elasticsearch의 가장 큰 차이점은 데이터를 인덱싱하는 방법입니다. Loki는 인덱싱을 낮게 유지하도록 설계되었지만 Elasticsearch는 모든 필드의 모든 데이터를 인덱싱하고 인덱싱된 각 필드에는 최적화된 전용 데이터 구조가 있습니다. Loki에서는 인덱스가 낮기 때문에 더 비용 효율적이고 성능이 좋습니다. 그러나 Elasticsearch가 제공하는 풍부한 텍스트 검색 기능을 상실합니다.

 

2. 쿼리

로키는 LogQL을 사용하고 Elasticsearch는 키바나의 KQL를 사용하여 쿼리한다. 모두 학습 곡선이 있다.

 

3, 저장

Loki는 로그의 메타데이터(레이블)만 인덱싱합니다. 인덱싱이 완료되면 로그 데이터가 압축되어 S3와 같은 객체 저장소에 저장된다

Elasticsearch는 저장된 문서의 전체 내용을 인덱싱합니다. 데이터는 구조화되지 않은 JSON 개체로 디스크에 저장됩니다. Elasticsearch를 사용하면 문서를 완전히 검색할 수 있지만 더 많은 저장 공간이 필요

 

5. 그라파나 VS 키바나

Kibana는 모든 종류의 데이터를 시각화하도록 구축되었습니다. Grafana는 주로 시계열 데이터에 집중하기 위해 Kibana의 포크로 시작했다

 

즉 

Loki는 자원 효율적이지만 Elasticsearch가 제공하는 풍부한 검색 기능을 제공하지 않습니다. 비용 및 리소스 요구 사항도 고려해야 합니다. Elasticsearch는 Loki에 비해 더 많은 리소스가 필요합니다.

 

 

 

Comments