Prometheus를 사용하면, 사용자 요구에 따라 다양한 통계 데이터들을 수집해 제공해야한다.
그리고 가끔씩은, 수집할 데이터가 명확하지 않은 상황에서 요구사항만 존재하는 경우가 있다.
또는 수집할 데이터가 명시되었어도, 데이터를 가공하여 제공하는 경우가 생긴다.
그 경우 사용되는 것이 Recording Rule이다.
Recording Rule을 사용하며, Cross-service Federation 환경에서는 Scrape interval과 Rule evaluation interval이 같을 경우, Rule evaluation시 대상이 되는 Time series가 존재하지 않을 수 있다.
그 경우, incremental data의 증가값 연산 시에는 offset을 통해 마이너스 연산을 할 경우, Prometheus는 현재 타임시리즈의 메트릭값을 가장 최근 값으로 대체하여 계산하는 것으로 추정되고, 대체하여 연산될 경우, 결과값이 예상과는 다르게 나올 수 있다.
(내 경우, recording rule을 사용하여 일부 incremental data를 offset을 사용하여 일부 recording rule 결과값이 0으로 처리됐었다.)
incremental data의 증가분 연산시에는 increase() 함수와 range vector를 사용해야 하지만, scrape interval과 동일한 range vector는 사용할 수 없다. (단위 시간 내에 타임시리즈가 한개만 존재하게 되기 때문)
주절주절 두서없이 정리용으로 생각을 적었는데, 핵심만 정리하자면 다음과 같다.