Skip to content

basic-loki-query

Loki Query (LogQL) 기본 사용법

TL;DR

  • Loki는 Grafana에서 로그를 저장하고 분석하는 도구로, Prometheus와 유사한 방식으로 동작함.
  • LogQL을 사용하여 로그를 필터링하고 JSON 파싱, 정규식, 메트릭 집계를 수행할 수 있음.
  • Nginx, Kubernetes 등 다양한 로그 소스를 분석하고, Grafana를 통한 시각화 및 알림 설정이 가능함.

Loki Query (LogQL) 개요

  • LogQL은 PromQL(Prometheus Query Language)과 유사한 문법을 가지며, 로그 데이터를 검색, 필터링, 집계할 수 있음.
  • Grafana Loki와 함께 사용하여 로그 분석 및 시각화 가능.

기본 쿼리 구조

{label_selector} | 필터링 | 변환 | 집계
  • {label_selector}: 특정 레이블을 가진 로그 선택
  • | (파이프 연산자): 로그 내용을 필터링하거나 가공
  • 변환: JSON 파싱, 정규식 활용, 패턴 매칭 등
  • 집계: 특정 시간 간격으로 로그 집계

Loki Query 사용법

1. 기본 로그 조회

{job="nginx"}
  • job="nginx" 레이블이 포함된 모든 로그 조회

2. 로그 필터링

문자열 포함 필터
{job="nginx"} |= "error"
  • "error" 문자열이 포함된 로그 조회
문자열 제외 필터
{job="nginx"} != "debug"
  • "debug" 문자열이 없는 로그 조회
정규식 필터
{job="nginx"} |~ "ERROR|WARN"
  • "ERROR" 또는 "WARN"이 포함된 로그 조회
{job="nginx"} |~ "status=[45].."
  • HTTP 상태 코드 400~599 범위에 해당하는 로그 조회

3. JSON 로그 파싱

Loki는 JSON 로그를 파싱하여 특정 필드를 추출할 수 있음.

{job="nginx"} | json
  • JSON 형식의 로그를 자동으로 필드별 분해
{job="nginx"} | json | status >= 500
  • status 필드 값이 500 이상인 로그만 조회

4. 로그 집계 (Metric Aggregation)

Loki는 로그를 기반으로 메트릭을 생성할 수 있음.

시간별 로그 개수 집계
rate({job="nginx"}[1m])
  • 최근 1분 동안의 로그 발생률 계산
특정 패턴의 로그 개수 집계
count_over_time({job="nginx"} |= "error" [5m])
  • 최근 5분 동안 "error"가 포함된 로그 개수 집계
평균 응답 시간 계산
avg_over_time({job="nginx"} | json | line_format "{{.response_time}}" [5m])
  • 최근 5분 동안의 response_time 필드 평균값 계산

Loki Query 활용 예시

1. Kubernetes Pod 로그 분석

{namespace="default", container="nginx"} |= "404"
  • default 네임스페이스의 nginx 컨테이너에서 "404" 오류가 포함된 로그 조회
rate({namespace="default", container="nginx"} |= "error" [5m])
  • 최근 5분 동안 발생한 "error" 로그 개수 측정

2. Nginx Access Log 분석

{job="nginx"} | json | status >= 500 | count_over_time([5m])
  • 최근 5분 동안 500번대 응답 코드 개수 집계
{job="nginx"} | json | status >= 400 | topk(10, count_over_time([5m]))
  • 최근 5분 동안 가장 많이 발생한 400번대 오류 조회

Loki Query 활용 방법

  1. Grafana에서 Loki 데이터 소스를 추가하여 로그 분석을 시각화 가능.
  2. Alerting을 설정하여 특정 패턴의 로그 발생 시 알림 전송 가능.
  3. CLI 또는 API를 통해 Loki Query 실행하여 로그 분석 자동화 가능.

마무리

  • Loki Query(LogQL)는 Grafana Loki에서 로그 데이터를 검색, 필터링, 집계할 수 있는 강력한 쿼리 언어임.
  • PromQL과 유사한 문법을 사용하며, 레이블 기반 필터링, 정규식 검색, JSON 파싱, 로그 집계 등의 기능을 제공.
  • Kubernetes, Nginx, 애플리케이션 로그 분석 등에 활용 가능.
  • Loki를 활용하면 대규모 로그 데이터를 효율적으로 관리하고 분석할 수 있음.

Loki Query를 활용하여 더 나은 로그 모니터링과 분석 환경을 구축해보는 것이 좋음.