Используйте Mtail и Prometheus: как правильно рассчитать среднее значение метрики - PullRequest
1 голос
/ 28 сентября 2019

Скажем, мы хотели бы отслеживать ответ в логах nginx, пример в коде mtail показывает что-то вроде этого:

/$/ {
 strptime($timestamp, "02/Jan/2006:15:04:05 -0700") # for tests

 apache_http_requests_total[$request_method][$http_version][$status_code]++
 $response_size > 0 {
  apache_http_bytes_total[$request_method][$http_version][$status_code] += $response_size
  apache_http_response_size[$remote_host][$request_method][$request_uri][$status_code][$user_agent] += $response_size
 }
 apache_http_response_time[$remote_host][$request_method][$request_uri][$status_code][$user_agent] = $response_time

}

, но когда mtail анализирует несколько строк, разве он не получает только response_time в последней строке?

, если мы хотим иметь среднее_response_time в прометее, должны ли мы собирать total_response_time и использовать функцию rate() в прометее?

1 Ответ

0 голосов
/ 30 сентября 2019

но когда mtail анализирует несколько строк, разве он не получает только response_time в последней строке?

Если apache_http_response_time является датчиком, то да.Если это гистограмма, она будет собирать общее количество событий и общую задержку (что позволит вам вычислить среднее / среднее значение за любой период времени, используя rate()), плюс число на ведро, что позволит вам оценить процентили (включая медиану),Похоже, что mtail поддерживает гистограммы в качестве граждан первого класса.

Если мы хотим, чтобы в Прометее было среднее время_ответа, должны ли мы собирать total_response_time и использовать функцию rate() в Прометее?

Это даст вам соотношение (возможно, выше 1) времени, затраченного на обслуживание запросов.Например, если за последние 10 секунд вы получили 5 запросов, каждый из которых занимал 1 секунду, вы получите показатель 0.5.OTOH, если бы было 2 запроса, каждый из которых занимал 10 секунд, вы бы получили оценку 2.

...