Engineering/Grafana

[Grafana] Athena 패널에 동적으로 날짜 필터 적용하기

[앙금빵] 2024. 2. 4.

목적

  • Athena 와 그라파나의 연동을 통해 웹로그 분석통계를 그라파나에서 관측
  • 사용자가 Time range를 선택함에 따라 Dynamic하게 Grafana 패널 내 Athena 쿼리문 적용

 

해결방법

Grafana 에서는 날짜 범위 필터와 같은 동적 부분을 허용하기 위해 쿼리에 매크로를 포함할 수 있도록 제공한다.

https://docs.aws.amazon.com/ko_kr/grafana/latest/userguide/using-mysql-in-AMG.html

 

이중에서 TimeFrom, TimeTo 구문을 통해 동적으로 Athena 패널을 볼수 있도록 Where 절에 아래와 같이 수정을 진행하였다.

WHERE time BETWEEN date_format($__timeFrom(), '%Y-%m-%dT%H:%i:%s.000') AND date_format($__timeTo(), '%Y-%m-%dT%H:%i:%s.000')

적용 예시

 


장점

1. UTC 변환과정이 필요하지 않다.

ELB 로그 경우 UTC 시간대로 저장이 되어지기에 Athena에서 직접 쿼리를 날리는 경우 KST - 9 계산과정을 통하여 결과값을 얻었다.

 

그러나 TimeFrom, TimeTo를 이용하면 알아서 UTC 시간대로 변환되어 Where 절로 들어가기 때문에 별도 변환과정이 요구되어지지 않는다.

 

2. 다른 연관 지표 연동해서 확인 가능

예를들어 특정시간대에 Spike성의 502에러가 확인된 상황을 보자. 

Cloudwatch에서 일일이 클릭해서 이슈 발생시간대에 대한 시간을 정확하게 노트테이킹할 필요 없이 드래그 기능으로 Time Range를 설정할 수 있다.

 

이런식으로 대상 패널에 드래그를 하게 되어진다면 자동으로 TimeFrom(), TimeTo()에 대한 값이 Athena Query에 반영되어 자동으로 대상시간대 통계를 확인할 수 있다.


결과

이와 같이, 한 대쉬보드내 연관 Cloudwatch 지표들과 함께 배치한 다음 드래그 기능을 통해 편하게 대상시간대 연관 웹로그 통계들을 확인할 수 있다. 아래 그림은 특정 시간대에 30분동안 Spike성의 502에러가 발생한 것을 확인하였고 이와 관련하여 어느 url 경로로 유입이 발생하였으며 당시 200응답 및 다른 에러카운트에 대한 내용 및 5초이상 소요된 request url을 시각화한 대쉬보드이다.

 


 

 

 

 

 

댓글