Prometheus
Зачем
- это база данных временных рядов
- хранит метрики, агрегированные за период времени
- PromQL
Модель данных
- Инструментирование — это еще одна важная часть Prometheus. Вы инструментируете приложения, прежде чем извлекать из них данные.
- Prometheus предлагает экспортеры, с помощью которых можно мониторить целевые объекты.
- Метрика — это временной ряд, то есть набор значений во времени. Виды, методики по метрикам.
- примеры: Кол-во задач, Кол-во запросов
- набор лейблов (теги) key-value
- примеры
- instance
- evn
- job
- примеры
- значение метрики
- Счетчик Count - счетчик может только увеличивать или обнулять число
- Примеры
- Кол-во задач в состоянии Завершена\Кол-во задач в состоянии В очереди
- Кол-во запросов
- Кол-во ошибок
- Примеры
- Измерители Gauge - со временем могут уменьшаться
- Примеры
- количество обрабатываемых запросов прямо сейчас
- занятая память
- свободное место на диске
- Примеры
- Гистограмма Histogram - агрегация чего-то самим приложением, когда нам интересно знать распределение величин по заранее определенным группам (buckets)
- Гистограмма считает количество попаданий в какую-то группу, то есть запоминает счетчики, а не сами значения
- le — просто лейбл, который генерируется из наших бакетов. Означает “less than or equal”, то есть <=
- Примеры
- Сводки Summary - результат агрегации гистограммы. Она выдает сразу квантили, можно сказать, количественное распределение, когда мы заранее не можем определить бакеты.
PromQL
Два вида векторов:
- моментальные - все метрики по последней метке времени
- с диапазоном времени
Функции
- sum — оператор агрегации, который суммирует значения по группе элементов. Используется для получения общей суммы значений для всех подходящих временных рядов.
- rate — используется для вычисления средней скорости изменения для временных рядов в указанный промежуток времени, как часто определенное событие происходит в течении определенного времени.
- histogram_quantile — ищет значение, которое не превышает определенный процент всех запросов. Интерпретировать можно так: «N% всех запросов обрабатывается быстрее, чем это значение».
- increase -
Агрегации
- Среднее арифмитическое значение
- нельзя просто так брать среднее чего-то на неопределённом интервале и при этом не потерять ничего
- Медиана – это «средний элемент», то есть буквально в середине массива (если его упорядочить). У медианы есть такая особенность: половина элементов массива больше либо равна ей, а другая половина элементов — меньше либо равна.
- Перcентиль (Перцентиль Процентиль) - способ сжать историю наблюдений до одного числа, при этом по пути потерять неудобные для нас данные, чтобы не мешали смотреть на общую картину.
- 95-й перcентиль — это такое число, что 95% элементов массива меньше или равны этому числу.
- удобно использовать эту штуку, чтобы описать большинство элементов массива, при чем степень точности регулируется: 80%, 95%, 99%, 99.9%, Для чего бывает полезно описывать «большинство из массива»? Чтобы выбросить пики!
- 95 перcентиль от времени обработки запросов = 5 секунд
- То есть, большинство (95%) запросов мы обработали за 5 секунд или меньше. А остальные 5% обрабатывались дольше.
- Можно еще посчитать 99-й Персентиль и сравнить с 95-м, тогда станет понятно, что большинство запросов укладываются в 5 секунд, а подавляющее большинство, скажем, в 6 секунд.
- Синонимы
- Квартиль это четверти: 25%, 50%, 75%, 100%. То есть бывает первый, второй третий и четвертый квартиль. И еще иногда используют нулевой.
- Квантиль - это, условно, Персентиль без процентов. Используется в статистике, где бывает удобно указывать абсолютную вероятность, а не в процентах
- Дециль — это 10%, 20% и т.д.
- 95-й перcентиль — это такое число, что 95% элементов массива меньше или равны этому числу.
- Кардинальность
- min, max
- Сэмплирование данных метрик определяет кол-во значений для агрегирования с учетом интервала времени (глубина запроса)
Deployment
- HA : Thanos, Cortex или Mimir