목록DevOps/Loki (5)
나의 잡다한 노트 및 메모
LogQL은 Grafana Loki에서 로그를 검색하고 집계하기 위해 사용하는 쿼리 언어입니다. PromQL(Prometheus 쿼리 언어)과 유사한 구문 체계를 사용하되, 로그라는 특성에 맞춰 다양한 필터링 기능을 제공합니다. LogQL 쿼리는 크게 **로그 쿼리(Log Query)**와 **로그 기반 메트릭 쿼리(Metric Query)**로 나뉩니다. 1. 기본 구성 요소1) 레이블 셀렉터(Label Selector){app="myapp", environment="production"} Loki에 저장된 로그 라인에는 여러 레이블(label)들이 있으며, app="myapp"과 같은 식으로 필수적으로 레이블 조건을 사용해야 합니다.중괄호 {} 안에서 ,로 구분하여 여러 개의 레이블을 지정할 수 ..
LogQL에는 로그 메시지를 필터링할 때 두 가지 주요 연산자가 있습니다:|= (Contains Operator)이 연산자는 로그 메시지 내에 지정한 문자열이 포함되어 있는지 단순하게 검사합니다.{job="webDashboardLog"} |= "error"|=는 문자열 일치를 수행하며, 정규식 해석은 하지 않습니다. |~ (Regex Matching Operator)이 연산자는 로그 메시지를 정규 표현식(Regex)으로 매칭하여 필터링합니다.{job="webDashboardLog"} |~ "(?i)error" 여기서 (?i)는 정규식 플래그로, 대소문자 무시(case-insensitive) 모드를 활성화한다.

아키텍쳐Read Path와 Write Path : Loki는 로그 데이터 처리를 위한 읽기 경로와 쓰기 경로를 구분한다. 이러한 분리는 데이터 처리의 효율성을 극대화하며, 각 경로는 특정 작업에 최적화된 컴포넌트로 구성된다.Consistent Hash Rings : 클러스터 내에서 데이터를 균등하게 분배하고 고가용성을 보장하는 메커니즘이다. 이는 클러스터의 스케일링을 용이하게 하며, 데이터 샤딩과 복제를 통한 안정성을 제공한다.Multi tenancy : Loki는 multi tenancy를 지원하여, 하나의 Loki 인스턴스를 여러 사용자나 팀이 공유할 수 있게 한다. 이는 리소스의 효율적인 사용과 데이터 분리를 가능하게 한다.Write Path 로그 스트림이 장기 저장소에 저장되는 과정Distribu..
loki는 자체 웹페이지가 없다.이것도 모르고 / 로 GET을 계속했는데 404가 떠서 잘못 구축한 줄 알았다... ㅋㅋ; /readyLoki가 준비되었는지 확인하는 엔드포인트로, 헬스 체크(health check) 용도로 사용됩니다./metricsPrometheus가 스크래핑할 수 있는 메트릭 정보를 제공하는 엔드포인트입니다./loki/api/v1/push로그 스트림 데이터를 Loki에 전송(push)할 때 사용하는 엔드포인트입니다./loki/api/v1/query특정 시점에 대한 로그 쿼리를 수행할 때 사용합니다. (즉, 인스턴트 쿼리)/loki/api/v1/query_range지정한 시간 범위에 걸친 로그를 조회할 때 사용합니다. 일반적으로 시간에 따른 로그 변화나 범위 조회에 적합합니다./loki..
Loki는 Prometheus의 메트릭 기반 아키텍처를 벤치마킹하여 라벨 기반으로 로그를 관리하고, 전체 텍스트 인덱싱을 최소화하여 저비용으로 대규모 로그를 저장·분석할 수 있도록 설계됐다. 1. Loki의 특징라벨 기반 인덱싱(Label-based Indexing)Elastic Stack(Elasticsearch)처럼 로그 본문을 전부 인덱싱하지 않고, 로그 라벨(메타데이터)만 인덱싱합니다.로그 본문은 원본 형태로 객체 저장소(또는 파일 시스템 등)에 압축 보관하며, 쿼리 시 라벨 필터링을 거쳐 필요한 범위만 검색합니다.이로 인해 인덱스 크기가 작아지고, 결과적으로 스토리지 비용이 낮아집니다.Prometheus와 유사한 개념라벨(Label), 일정 기간별 샤딩, 수평 확장 등 Prometheus의 메트..