그라파나 자빅스 소스에서 동시에 여러 메트릭을 N분 전 값과 동일한지 비교하고,
동일하지 않으면 알럿 발생을 설정하는 방법을 공유합니다.
스텝 1
먼저 값을 비교할 데이터를 불러옵니다.
A는 현재, B는 1분 전 값 입니다.
B에서는 1분전 값을 불러오기 위해 timeshift 함수를 사용합니다.
스텝 2
Reduce를 추가해 A와 B값을 정제합니다.
정제가 필요한 이유는 아래 GPT 설명을 추가해두겠습니다.
설정한 C와 D는 각각 Reduce 함수를 사용하여 쿼리 A와 쿼리 B의 결과를 단일 숫자 값으로 변환하는 역할을 합니다.
Reduce 함수는 여러 데이터 포인트 중에서 하나의 값을 선택하거나 계산하는 데 사용됩니다.
1. C (Reduce - Input A):
• 쿼리 A에서 데이터를 가져와 Reduce 함수를 통해 마지막 데이터 포인트를 사용하여 하나의 값으로 축약합니다.
• 여기서 설정된 함수는 Last, 즉 마지막 데이터 포인트를 선택합니다. • 이때, 쿼리 A는 'Total Number of APs' 항목의 현재 값을 반환하고, Reduce 함수는 이 값 중 가장 최근(마지막) 값을 선택하여 이를 이후 수식에서 사용할 수 있도록 합니다.
2. D (Reduce - Input B):
• 쿼리 B도 동일하게 'Total Number of APs' 항목의 데이터를 가져옵니다. 하지만 B 쿼리에는 timeShift(60s)가 적용되어 60초 전의 데이터를 가져오게 됩니다.
• 이후, Reduce 함수가 B 쿼리의 마지막 값(60초 전)을 사용하여 하나의 값으로 축약합니다. 즉, 쿼리 B는 60초 전의 데이터를 기준으로 가장 최근 값을 반환하게 됩니다.
C와 D를 사용하는 이유
• 쿼리 A와 B는 각각 현재 시점의 데이터와 60초 전 데이터를 반환합니다.
• C는 쿼리 A의 데이터를 마지막 값으로 축약하여 현재 값을 나타내고, D는 쿼리 B의 데이터를 마지막 값으로 축약하여 60초 전 값을 나타냅니다.
• 이후 E (Math)에서 이 두 값을 비교하여 그 차이를 구하게 됩니다. 즉, E = C - D는 현재 값과 60초 전 값의 차이를 나타냅니다.
왜 Reduce를 사용하나?
Grafana에서 쿼리가 반환하는 값은 일반적으로 시계열 데이터(여러 개의 데이터 포인트)입니다.
이 데이터들을 수식에서 바로 사용할 수 없기 때문에, Reduce 함수를 사용하여 여러 데이터 포인트 중 하나의 값(예: 마지막 값)을 선택하여 사용할 수 있게 하는 것입니다. 이렇게 하면 수식에서 두 시점의 값(현재와 과거)을 비교하는 것이 가능합니다.
결론
• C: 쿼리 A의 마지막 값을 가져와 하나의 값으로 축약.
• D: 쿼리 B(60초 전)의 마지막 값을 가져와 하나의 값으로 축약.
스텝 3
마지막으로 정제된 C와 D를 비교해 동일하지 않으면 알럿이 발생하도록 설정합니다.
E에서 C와 D의 차이를 계산하고, F (Threshold)에서 그 차이가 0 이상이면 알림을 발생시키는 방식입니다.
이 설정을 통해 시간 간의 값을 비교하는 알림 규칙을 설정할 수 있습니다.