티스토리 뷰
일반적으로 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 이다.
참고)
[K8S, Grafana, Loki] 쿠버네티스 log monitoring tool Loki 설치법 — MJ's burning camp (tistory.com)
Loki - Kubernetes 로깅 | lapee79's Tech Blog
로그 시스템 Loki - Promtail 자세히 설명 - 독서 (readfog.com)
18. Kube 교육 - Loki Logging System (tistory.com)
라이선스 관련)
Grafana, Loki, and Tempo will be relicensed to AGPLv3 | Grafana Labs
'기록남기기' 카테고리의 다른 글
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 |
- Total
- Today
- Yesterday
- ㅐ
- 인터파크 티켓팅
- 검단
- 인시그니아
- 평생학습원
- 축구평가전
- 먼 훗날 우리
- 오후전략 완료~ 신일전자 2100원/에스트래픽 4180원/분할매수/가치를 믿자!
- confluent #kafka # control center
- 광명동굴
- 빗썸
- ISA #연금저축펀드 #IRP
- 비트코인
- 성수
- 이자카야
- ㅗ험
- 우루과이
- 하안동
- 마라탕#하안동
- 오징어청춘
- MySQL
- 신천역
- ㅅ음
- 스시
- redis
- centos7 #docker
- 성수동
- 구글홈
- 영화
- k8s #kubernetes
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |