목록DevOps/Loki (6)
나의 잡다한 노트 및 메모
그라파나에서 대시보드를 만들다보니 logQL를 활용해야 할 일이 있었는데, LLM 할루시네이션이 너무 심해서 공식문서를 읽어보게 됐다. 거기에서 vector 라는 단어가 나오는데 그 부분에 대해 공부하려고 한다.prometheus 계열에서는 벡터라는 이름으로 label 별로 모인 값들의 집합을 다룬다.vector의 종류로는 2가지가 존재하는데, instant vector, range vector가 존재한다.instant vector란 값 1개를 가진 벡터이고, range vector는 범위 값을 가진 벡터이다. 좀 더 자세히 설명하면 instant vector는 지금 이 시점의 하나의 값만 반환한다.count_over_time({app="frontend"}[5m]) 이런 쿼리가 있을 때, 실행하면 쿼리..
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의 메트..