[Grafana] Loki를 통한 로깅 환경 구성

Loki는 Grafana 스택에서 가장 권장되는 로깅용 시스템이고, 실제로도 아주 잘 통합된다.
근데 기본값 세팅만으로 알아서 잘 설정되고 그런건 아니라서, 추가 조정이 좀 필요하다.

Loki 자체를 구성하거나 데이터를 밀어넣는 것은 다루지 않는다.




데이터 소스 추가

가장 먼저 해야할 것은 소스를 추가하는 것이다.
"Grafana" 서버를 기준으로 Loki에 접근할 수 있는 엔드포인트를 넣어줘야 한다.

내 경우에는 같은 쿠버 클러스터에 있어서 쿠버용 내부 DNS 값을 넣었다.




Loki 대시보드 구성

대시보드를 추가하고, Logs 타입의 Panel을 추가한다. 이게 Loki과 가장 잘 맞는 Panel이다.

소스는 당연히 방금 만든 Loki로 넣고

필터 걸고 적당히 날려보면 된다.





상단 필터 구성

로그를 보려면, 당연히 특정 조건, 특정 시스템의 로그만 보는 경우가 대부분이다.
이건 Variable을 통해서 처리할 수 있다.

내 경우에는 특정 앱의 로그만 보기 위한 app_name 변수와, 그 내에서의 검색을 위한 search_text 변수를 정의했다.


app_name은 쿼리 타입으로 만든다.
쿼리 타입은 Label 타입을 values로 하면, 해당 필드에 존재하는 값을 자동으로 리스트업해준다.


텍스트 검색용 변수는 TextBox로 만들면 된다.


그러면 방금 2개의 변수가 상단에 뜰 것이다.

방금 정의한 이름을 통해서, Loki 쿼리 표현식에 주입을 시킬 수 있다.
이런 식으로 작성하면 된다.

{app="$app_name"} |~ "$search_text"

app 이름으로 필터하고, search_text로 포함 검색을 수행하는 쿼리다.


그러면 앱을 고를때마다 해당 앱의 로그를 가져오고


텍스트를 입력하면 해당 텍스트가 포함된 로그만 보여줄 것이다.




무한스크롤

Log Panel의 기본값에서는 스크롤 기능이 비활성화되어있다.
그러니까 한칸만 보고 밑으로 더 내릴 수가 없는 것이다.

스크롤을 켜려면 저 무한스크롤 플래그를 열어주면 된다.


그럼 이렇게 load More 버튼이 활성화될 것이다.




사이드 제어판

소소한 부가기능 중 하나다.

Panel의 플래그를 켜면


바로 오른편에 이런 제어창이 생긴다.

Scroll to bottom은 바로 맨 밑으로 이동하고, Scroll to top은 맨 위로 이동한다.


검색창은 현재 컨텍스트에서 검색을 처리해주며


Filter Level은 로그레벨을 필터링해준다.





정렬

Loki - Log Panel의 기본 조회 형식을 최신 데이터를 먼저, 최신을 맨 위에 보여주는 내림차순 정렬이다.

하지만 경우에 따라서는 오름차순으로 데이터를 가져와서 보고 싶을 수도 있다.

안타깝게도, Grafana에서 이러한 기능 지원은 제한적이다.
변수와 쿼리를 통해서 처리할 수는 없고, Panel 수준의 고정값인 Order를 통해서만 처리할 수 있다.

이건 Panel 내의 고정값이므로 당연히 상단 필터로 만들 수는 없다. 별도의 Panel로 만들어야 한다.