본문 바로가기
Observability/Grafana - Experience

[Grafana] Grafana Table 패널 추가 후 Transform 사용 방법

by ymkim 2025. 3. 27.

사내 검색 시스템에서 지연이 발생한 시점의 검색 키워드를 추출해야 하는 상황이 있었다. 검색 시스템의 경우 Nginx 로그를 검색 엔진에 저장하고 있었기에, “Grafana에 굳이 추가를 해야 할까?” 라는 고민이 있었지만, 위 정보만으로는 어떤 검색 키워드에 의해 오류가 발생했는지를 알 수 없었기에, 추후 알림 설정이나 빠른 피드백을 위해 해당 지표를 대시보드에 추가해야 겠다는 결론을 내렸다.

01. Grafana 대시보드 추가

01-1. Grafana Add Panel 후 Table 패널 생성

 

우선 Grafana 상의 Add Panel 버튼을 클릭 후 Add a new panel 버튼을 선택한다. 그러면 다음과 같은 위와 같은 화면이 출력된다. 후에, 우측 상단의 패널 타입은 Table을 선택하고 좌측 하단의 Data Source는 참조할 데이터인 ES의 Data Source를 지정한다.

01-2. Grafana Query 지정

status:[400 TO 504] AND request_time:[3 TO *]

필자의 경우 Status가 200이 아니고, request_time(App Server → Nginx → API → ES 총 시간)이 3초 이상인 경우에 대해서만 메트릭을 추출하고자 하기에, 위와 같이 쿼리를 설정한다. 위 쿼리는 HTTP Status가 400 - 504 사이이고, 시간이 3초 이상인 경우만을 추출하는 쿼리다. 또한, Metric 옵션은 Logs로 지정하고 Limit은 500로 설정한다.

01-3. Transform

쿼리를 설정하였으니 이제 Transform을 통해 조회하고자 하는 필드만 선택을 할 것이다. 또한, request_body 필드의 경우 JSON 형태({key: A, value: A})로 지정이 되었기에 2가지 옵션(Extract fields, Organize fields)을 추가해야 한다.

이미지와 같이 먼저 Extract fields를 설정한다. Source는 추출을 원하는 필드명(request_body)을 지정하고, Format은 해당 필드의 데이터 타입(JSON, key-value text, auto)을 지정하는 것이다. 또한, Replace all fields 옵션은 추출된 필드만 남길지, 아니면 기존 필드에 더하여 추출된 필드를 보여줄지 지정하는 옵션이다.

01-4. Organize fields

마지막으로 Organize fields 옵션을 추가한다. 해당 옵션을 통해 특정 필드의 값만 확인할 수 있다.

01-5. 최종 결과

최종적으로 적용된 Grafana 대시보드의 구성은 위와 같이 나올 것이다.

99. 참고 자료

 

Transform data | Grafana documentation

Getting started with managing your metrics, logs, and traces using Grafana In this webinar, we’ll demo how to get started using the LGTM Stack: Loki for logs, Grafana for visualization, Tempo for traces, and Mimir for metrics.

grafana.com