После добавления метки user_id в метрику Prometheus съел всю память
REQUESTS = Counter(
"http_requests_total", "Запросы", ["method", "path", "status", "user_id"]
)
REQUESTS.labels(request.method, request.url.path, status, user.id).inc()
Сервисом пользуются 300 тысяч человек. Через день Prometheus перестал справляться. Почему?
- Каждое значение метки — отдельный временной ряд, их стали миллионы
- Counter нельзя использовать со строковыми метками
- Prometheus хранит все метрики в памяти только первые сутки
- Метки должны передаваться по имени, иначе ряды дублируются
