티스토리 뷰

기록남기기

k8s log monitoring Loki

양들의침묵1 2021. 8. 10. 17:03

 

일반적으로 kubernetes 에서 node에서 발생하는 log , web,was, 기타 application 에서 발생하는 로그를
수집하여 보여주는것을 ELK 를 사용한다.

하지만 간혹 oem 방식으로 납품을 하기 위해서 또는 라이센스 문제로 인하여 ELK 를 사용하지 못하는 경우
어떤것을 사용할 수 있을까?

Prometheus는 시스템에 대한 Metric (CPU, Memory 등) 정보만 수집하기 떄문에 , pod에서 찍히는 log를 
볼수 없다. 
그러다가 Loki 를 발견하였고, 이것을 선택한 이유는
위와 같이 제한적인 환경에서 선택할 수 있는 최선의 방법이었고
기존에 Prometheus , Grafana 가 이미 설치 된 상태에서 같은 스택을 사용하는 것이 좋을것 같다는 생각 이었다. 

아래의 것도 검토해 봤지만, 이 또한 라이센스의 문제가  있을 것 같아, 제외하게 되었다.

https://opendistro.github.io/for-elasticsearch/ 

Loki 란 무엇인가?

Loki 는 프로메테우스에 영감을 받은 수평 확장 가능하고 가용성이 높은 다중 테넌트 로그 집계 시스템입니다.
Kubernetes Pod 의 로그를 수집하는데 이상적이며, 중요한 Loki 는 ELK/EFK/EFLK 에 비해 조작이 용이하고 가볍습니다.

구성요소

Loki : 로그를 저장하고 쿼리를 처리하는 EFK의 ElastcSearch 와 동일합니다. 메인 서버 구성요소를 Loki 라고 부르며 , 전달되는 로그들을 영구 저장하고 클라이언트의 LogQL 쿼리를 실행합니다. Loki 는 뛰어난 Prometherus 백엔드인 Context 와 높은 수준의 아키텍쳐를 공유합니다.


Promtail : 로그를 수집하여 Loki 로 전송하는 EFK의 Filebeat/Flunted 와 동일합니다. 로그를 중앙 저장소로 전달하려면 에이전트가 필요합니다. Promtail은 모니터링 해야 하는 모든 노드에 배포되어 로그를 Loki로 전달합니다. 또한 Promtaul은 쉽게 쿼리할 수 있도록  label을 첨부하는 등의 로그 라인들을 사전 처리 하는 중요한 작업도 수행합니다.


Grafana : EFK의 Kibana 와 동일하며 UI  프리젠테이션에 사용합니다. Grafana 6.0 이상에서 사용할 수 있는 Explore기능은 사용자와 Loki 사이의 중요한 접점입니다. Explore는 로그를 발견하고 분석하는데 사용됩니다.


LokiQL :  Loki는 Prometheus의 PromQL과 유사한 로그 쿼리 언어를 제공하며 Loki는 LogQL 쿼리를 Prometheus 메트릭으로 직접 변환활 수 있도록 지원합니다.

 

Loki 는 로그를 수락, 저장, 처리 및 쿼리 하는데 사용하는 컬렉션 입니다.

Loki는 읽기 및 쓰기 분리 아키텍쳐를 사용하며 주요 구성요소는 다음과 같습니다.

Distributor : 로그 데이터 전송의 첫 번째 스테이션, Distributor 배포자는 로그 데이터를 수신한 후 메타데이터 및 해시 알고리즘에 따라 로그를 여러 Ingester 싱크로 일괄적으로 보냅니다

Ingester : 싱크는 로그 입력 시 gzip 압축을 조작하고 chunck 블록을 빌드하고 새로 고치는 상태 저장 구성 요소이며, chunk 블록이 일정 수 또는 시간에 도달하면 chunk 블록과 해당 Index 인덱스가 데이터베이스에 새로 고쳐집니다

Querier : 시간 범위와 레이블 선택기를 지정된 경우 Querier 쿼리자는 데이터베이스에서 Index 인덱스를 보고 일치하는 chunck 블록을 확인할 수 있으며 greps를 통해 결과를 표시하며 Ingester 싱크에서 새로 고쳐지지 않은 최신 데이터를 직접 가져옵니다

Query frontend : 쿼리 프런트 엔드는 Querier 쿼리 앞에 실행되는 선택적 구성 요소로, 로그 쿼리 속도를 높이고 일정의 균형을 정렬하는 캐시 기능을 제공합니다



 

 

 

Helm Chart 를 사용하여 Loki 와 Promtail을 Kubernetes 에 배포

# helm repo add loki https://grafana.github.io/loki/charts
# helm repo list
NAME    URL
loki    https://grafana.github.io/loki/charts

## Grafan , Prometheus 가 설치되어 있는  namespace 에 loki를 설치한다.

# helm upgrade --install loki --namespace=monitoring loki/loki

## log 수집을 위하여 promtail을 설치해주며, loki serviceName 에  먼저 배포한 loki의
serviceName 을 set 해준다.

# helm upgrade --install promtail loki/promtail --set "loki.serviceName=loki" --namespace monitoring

#kubectl get pods -A

monitoring    loki-0                                     1/1     Running   0          125m   10.233.86.6      worker03   <none>           <none>
monitoring    promtail-d7t44                             1/1     Running   0          124m   10.233.70.3      master     <none>           <none>
monitoring    promtail-llldg                             1/1     Running   0          124m   10.233.84.5      worker01   <none>           <none>
monitoring    promtail-rcxnk                             1/1     Running   0          124m   10.233.86.7      worker03   <none>           <none>
monitoring    promtail-v9tqb                             1/1     Running   0          124m   10.233.108.6     worker02   <none>           <none>

 

 

URL : helm 으로 설치할때 정한 servicename 이 loki  이다.

 

 

 

 

 

GitHub - grafana/loki: Like Prometheus, but for logs.

Like Prometheus, but for logs. Contribute to grafana/loki development by creating an account on GitHub.

github.com

 

 

참고)

[K8S, Grafana, Loki] 쿠버네티스 log monitoring tool Loki 설치법 — MJ's burning camp (tistory.com)

 

[K8S, Grafana, Loki] 쿠버네티스 log monitoring tool Loki 설치법

이전글에서 kong Ingress controller plugin으로 Prometheus를 설치했고, 이후에 Grafana와 연동해서 대시보드에서 Metrics를 확인할수 있게 되었다. 이전글 보러가기 그라파나 대시보드에 domain으로 접속하는법

burning-camp.tistory.com

 

Loki - Kubernetes 로깅 | lapee79's Tech Blog

 

Loki - Kubernetes 로깅

Loki - Kubernetes 로깅 - lapee79's IT Tech Blog.

lapee79.github.io

 

로그 시스템 Loki - Promtail 자세히 설명 - 독서 (readfog.com)

 

日誌系統 Loki - Promtail 詳解

主流的日誌收集架構一般採用 ELK/EFK/EFLK ,但是這些都比較適合在重量級、需要日誌數據清理的場景下使用。 雲原生環境下, Grafana + Loki + Promtail 橫空出世。 “Like Prometheus, but for logs.”整體介紹

www.readfog.com

 

18. Kube 교육 - Loki Logging System (tistory.com)

 

18. Kube 교육 - Loki Logging System

실습 Loki Helm 설치 POD 로그 조회 및 Filtering Why Loki kube 로그는 기존 VM legacy 시스템과 다르게 로그가 저장되지 않고, pod 수도 너무 많고 (1,000개 pod 넘는건 일도 아님) 또 여러 pod 로그를 동시에..

jerryljh.tistory.com

 


라이선스 관련)
Grafana, Loki, and Tempo will be relicensed to AGPLv3 | Grafana Labs

 

Grafana, Loki, and Tempo will be relicensed to AGPLv3

Q&A with Grafana Labs CEO Raj Dutt about our licensing changes 10 min   |   20 Apr 2021

grafana.com

Helm | Grafana Labs

 

Helm

Install Loki with Helm Prerequisites Make sure you have Helm installed. Add Loki’s chart repository to Helm: PLEASE NOTE On 2020/12/11 Loki’s Helm charts were moved from their initial location within the Loki repo and hosted at https://grafana.github.i

grafana.com

 

'기록남기기' 카테고리의 다른 글

kafka on kubernetes (with Strimzi)  (0) 2021.08.19
mariadb Galera Cluster on kubernetes  (0) 2021.08.18
[k8s] helm 설치  (0) 2020.12.11
jetty 설치  (0) 2020.11.26
k8s  (0) 2020.02.18