Study_note
[kubernetes] Loki, PLG 로그 관리 본문
전 포스팅에서 이어지는 내용이다.
프로메테우스 스택을 통해 프로메테우스, 그라파나, 알림 매니저를 생성한 상태로 이번에는 로키를 생성해 테스트해본다.
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에 비해 더 많은 리소스가 필요합니다.
'Kubernetes' 카테고리의 다른 글
[kubernetes] kubescape, polaris api 연결 및 컨트롤러 스캔 (0) | 2023.03.06 |
---|---|
[kubernetes] Kubecost 파드, 노드 비용 최적화 툴 (0) | 2023.03.05 |
[kubernetes] Alertmanager 프로메테우스에서 슬랙으로 알람 및 알람 무시 (0) | 2023.02.27 |
[kubernetes] Prometheus 및 모니터링 룰 추가 (2) | 2023.02.18 |
[kubernetes] Serviceaccount, context를 사용한 개발자 계정 생성 (0) | 2022.12.07 |