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 활용 방법⚑
- Grafana에서 Loki 데이터 소스를 추가하여 로그 분석을 시각화 가능.
- Alerting을 설정하여 특정 패턴의 로그 발생 시 알림 전송 가능.
- CLI 또는 API를 통해 Loki Query 실행하여 로그 분석 자동화 가능.
마무리⚑
- Loki Query(LogQL)는 Grafana Loki에서 로그 데이터를 검색, 필터링, 집계할 수 있는 강력한 쿼리 언어임.
- PromQL과 유사한 문법을 사용하며, 레이블 기반 필터링, 정규식 검색, JSON 파싱, 로그 집계 등의 기능을 제공.
- Kubernetes, Nginx, 애플리케이션 로그 분석 등에 활용 가능.
- Loki를 활용하면 대규모 로그 데이터를 효율적으로 관리하고 분석할 수 있음.
Loki Query를 활용하여 더 나은 로그 모니터링과 분석 환경을 구축해보는 것이 좋음.