Prometheus
Зачем
Технология для хранилищ данных.
- сбор метрик по pull модели
- Prometeus Client JS
- это база данных временных рядов
- хранит метрики, агрегированные за период времени
- Alerts отправляет в AlertManager
- Группировка
- Приостановка уведомлений пока исправляется
- PromQL
- PushGateway для сбора метрик от периодических процессов (cron jobs например) по push модели
Плюсы-минусы
Плюсы
- Простая установка (один файл)
Минусы
- Не расчитан на длительное хранение, как например VictoriaMetrics)
- Высокий порог входа
Модель данных
- Инструментирование — это еще одна важная часть Prometheus. Вы инструментируете приложения, прежде чем извлекать из них данные.
- Prometheus предлагает экспортеры, с помощью которых можно мониторить целевые объекты.
- Метрика — это временной ряд, то есть набор значений во времени. Виды, методики по метрикам.
- примеры: Кол-во задач, Кол-во запросов
- набор лейблов (теги) key-value
- примеры
- instance
- evn
- job
- примеры
- значение метрики
- Счетчик Count - счетчик может только увеличивать или обнулять число
- Примеры
- Кол-во задач в состоянии Завершена\Кол-во задач в состоянии В очереди
- Кол-во запросов
- Кол-во ошибок
- Примеры
- Измерители Gauge - со временем могут уменьшаться
- Примеры
- количество обрабатываемых запросов прямо сейчас
- занятая память
- свободное место на диске
- Примеры
- Гистограмма Histogram - агрегация чего-то самим приложением, когда нам интересно знать распределение величин по заранее определенным группам (buckets)
- Гистограмма считает количество попаданий в какую-то группу, то есть запоминает счетчики, а не сами значения
- le — просто лейбл, который генерируется из наших бакетов. Означает “less than or equal”, то есть <=
- Примеры
- Сводки Summary - результат агрегации гистограммы. Она выдает сразу квантили, можно сказать, количественное распределение, когда мы заранее не можем определить бакеты.
PromQL
Два вида векторов:
- моментальные - все метрики по последней метке времени
- с диапазоном времени
Функции
- sum — оператор агрегации, который суммирует значения по группе элементов. Используется для получения общей суммы значений для всех подходящих временных рядов
- rate — используется для вычисления средней скорости изменения для временных рядов в указанный промежуток времени, как часто определенное событие происходит в течении определенного времени
- histogram_quantile — ищет значение, которое не превышает определенный процент всех запросов. Интерпретировать можно так: «N% всех запросов обрабатывается быстрее, чем это значение»
- increase -
Deployment
- масштабируется за счет федерации (кластеризации нет)
- HA : Thanos, Cortex или Mimir