Loki
1. Loki
1.1. 정의
로그 데이터를 수집, 저장 및 검색하기 위한 오픈소스 플랫폼 중 하나이며, 특히 컨테이너화된 환경에서 발생하는 로그 데이터를 관리하는 데 유용한 도구이다.
1.2. 사용 하는 목적
● 어떤 형식이든, 어떤 소스에서든 다양한 클라이언트를 사용하여 로그를 손쉽게 전송할 수 있어 다루기 쉽다.
● 객체 스토리지로의 100% 지속성은 페타바이트 규모의 대용량 처리, 높은 처리량 및 경제적이며 내구성이 있는 저장소를 제공한다.
● 로그 라인에서 메트릭을 구축하고 경고를 생성할 수 있다.
● 수집 로그의 형식 요구 사항이 없어 더 많은 유연성을 제공하며, 쿼리 시간에 형식을 지정할 수 있는 옵션이 있다.
● 로그를 실시간으로 추적하여 시스템으로 들어오는 로그를 볼 수 있으며, 일정한 시간마다 로그를 업데이트하거나 특정 날짜의 로그를 볼 수도 있다.
● Prometheus, Grafana 및 K8s와 원활하게 통합되어 메트릭, 로그 및 추적 정보를 단일 UI 내에서 움직일 수 있다."
1.3. 작동 방식
1) Promtail을 통한 로그수집
Prometheus와 동일한 Service Discovery 사용
2) Loki에 로그 저장
인덱스구조를 데이터 소스별 인덱싱만 지원하여 작게 저장되고 매우 빠름
3) LogQL 을 통한 조회
특화언어로 Grafana에서 직접연동도 가능
4) 로그 기반 알람
Loki가 실시간 감시하고 이를 AlertManger를 통해 알림 전달
1.4. LogQL 사용하기
1.4.1. 연산사
● =: exactly equal.
● !=: not equal.
● =~: regex matches.
● !~: regex does not match.
1.4.2. 응용
Error log만 전체 보기
● pod, namespace 등 선택하고 |= “error” 등으로 Filtering
전체 pod의 error 검색하기
● 정규 표현식 =~”.*” 사용
특정 단어 포함하지 않도록
● prometheus만 포함하지 않도록 검색하기
: !~ 사용
컨테이너 별, POD 별 검색
기타 정규표현식 사용 가능