GemTD 2023. 11. 3. 05:00

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 별 검색

 

기타 정규표현식 사용 가능