728x90
반응형
LogQL은 Grafana Loki에서 사용되는 쿼리 언어로, 로그 데이터를 검색하고 필터링하는 데에 사용됩니다. 기본적으로 PromQL과 비슷하지만 로그 데이터에 특화되어 있습니다. 예시를 통해 LogQL을 설명하겠습니다.
기본 구조:
{}:: 중괄호 안에 쿼리를 작성합니다.
[]: 괄호 안에는 필터 조건을 작성합니다.
기본 검색:
# {}: 필터링할 로그 레이블을 지정합니다.
# |=: 로그 내용을 필터링하는 데 사용됩니다.
# "query string": 검색할 문자열 또는 정규 표현식을 지정합니다.
{label_name=~"regex"} |= "query string"
# app="example" 조건에 해당하는 로그 중에서 "error"를 포함하는 항목을 찾습니다.
{app="example"} |= "error"
시간 범위 지정:
# 특정 시간 이후의 "error" 로그를 검색합니다.
{app="example"} |~ "error" | timestamp > 1634550000
# 이 쿼리는 "example" job에서 최근 1시간 동안 발생한 로그 중에 "error"라는 문자열을 포함하는 로그를 검색합니다.
{job="example"} |~ 1h |~ "error"
# "app" job에서 발생한 최근 5분 동안의 "timeout" 로그를 검색합니다.
{job="app"}[5m] |= "timeout"
레이블 필터링:
# app이 "example"이고 level이 "info"인 로그 중에서 "authentication"을 포함하는 항목을 찾습니다.
{app="example", level="info"} |= "authentication"
# "app" 레이블이 "web"이고 "status" 레이블이 "500"인 로그 검색
{app="web", status="500"} |= "error"
와일드카드 사용:
# job 이름이 "appa", "appb", "appc" 등을 포함하고 있는 로그 중에서 "warning"을 찾습니다.
{job=~"app[a-c]"} |~ "warning"
로그 템플릿 활용
# 특정 패턴을 따르는 로그 검색
# 이 쿼리는 "example" job에서 "user:..." 패턴을 따르는 로그 중에 "login"이라는 문자열을 포함하는 로그를 검색합니다.
{job="example"} |~ "user:*" |~ "login"
OR 조건 사용:
# "frontend" 또는 "backend" 애플리케이션에서 발생한 "error" 로그를 검색합니다.
{app="frontend"} |= "error" or {app="backend"} |= "error"
NOT 조건 사용:
# "frontend" 애플리케이션에서 발생하고 "status"가 "200"이 아닌 "error" 로그를 검색합니다.
{app="frontend"} and not {status="200"} |= "error"
레이블 필터링과 내용 필터링 조합:
# "frontend" 애플리케이션에서 "status"가 "500"이고 "timeout" 또는 "backend" 애플리케이션에서 "status"가 "200"이고 "success"인 로그를 검색합니다.
{app="frontend", status="500"} |= "timeout" or {app="backend", status="200"} |= "success"
728x90
반응형
LIST
'Elasticsearch' 카테고리의 다른 글
[Elasticsearch] beat 별 간단한 설정 및 실행 방법(filebeat, packetbeat, metricbeat, winlogbeat, heartbeat, auditbeat) (1) | 2023.10.13 |
---|---|
[Elasticsearch] Kibana 에서 다양한 필터 예제 (1) | 2023.10.09 |
[Elasticsearch] filebeat 명령어에 대한 다양한 예제 (1) | 2023.10.05 |
[Elasticsearch] grok 의 사용방법 (1) | 2023.10.04 |
[Elasticsearch] logstash conf 파일 다양한 예제 (1) | 2023.10.03 |