All streams
Search
Write a publication
Pull to refresh
25
0
Глеб Типсин @gtkek

Software Engineer

Send message

Если рассуждать в контексте базовых функций, то для вычисления изменения величины нам нужно минимум два измерения. Когда мы задаем временное окно, мы определяем, сколько значений попадает в расчет.

  • Чем больше окно, тем больше измерений включается, и график получается более сглаженным;

  • Чем меньше окно, тем меньше измерений участвует, что может привести к большему шуму.

Официальная документация советует, чтобы конечный пользователь выбирал временное окно, в которое попадает хотя бы 4 измерения. Это помогает избежать резких скачков и получения некорректных данных. Или другими словами:

rate\_window \geq 4 \times scrape\_interval

Рекомендации к выбору временного окна
Рекомендации к выбору временного окна

Возвращаясь к вопросу, а как лучше выбирать временное окно, то мне кажется тут нет однозначного ответа.

Официальная документация рекомендует, что лучше избегать использования:

  • констант (например, 30s, 1m, 2m);

  • $__interval.

Вместо этого рекомендуется использовать $__rate_interval, так как он автоматически подбирается так, чтобы временное окно было как минимум в 4 раза больше, чем Scrape Interval:

We recommend using $__rate_interval in the rate and increase functions instead of $__interval or a fixed interval value. Because $__rate_interval is always at least four times the value of the Scrape interval, it avoid problems specific to Prometheus.

Обычно я использую либо константы, либо $__rate_interval. В 99% случаев этого достаточно, и проблем не возникает.

Но однажды я столкнулся с редким случаем: мне нужно было посмотреть график перезапуска Pod'ов (счётчик менялся очень медленно) на большом временном интервале. Указание константы меня подвело, и я практически не видел "столбов" перезапуска на графике (хотя перезапусков было не мало). После замены константы на $__rate_interval Grafana уже корректно отобразила результаты.

Также приложу несколько ссылок (вдруг помогут):

Спасибо за статью!

Подскажите пожалуйста, реально ли в метод send() передавать объекты посложнее чем строковые литералы или строковые литералы + EL? И можно ли обратиться к атрибутам сессии, чтобы в метод send подсовывать объекты, у которых поля изменяются в процессе симуляции?

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity