Elasticsearch

[LogQL] LogQL 의 다양한 예시

IT-PAPA 2023. 11. 20. 06:32
반응형

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