Прометей ест огромную память - PullRequest
0 голосов
/ 06 мая 2020

Prometheus, развернутый на кубернетах с использованием оператора prometheus, потребляет слишком много памяти и в настоящее время составляет ~ 12G. Я вижу, что каталог /prometheus/wal находится на ~ 12G. Я удалил все файлы *.tmp, но это не помогло. Невозможно найти решение этой проблемы. Любые предложения ??

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Сократите время хранения или уменьшите количество временных рядов.

0 голосов
/ 09 мая 2020

Покопавшись в Google пару дней, я обнаружил, что есть много неиспользуемых метрик, для которых мы можем отбросить образцы [1].
Поиск в каталоге prometheus на предмет использования метрик, выборка которых очень высока - Запрос для поиска prometheus metrics-

topk(20, count by (__name__, job)({__name__=~".+"}))

Если вы нашли здесь, в списке, метрики tcp или udp. Попробуйте выполнить эти метрики на prometheus, если значение равно нулю, их можно безопасно удалить, поскольку эти метрики уже отключены на уровне CAdvisor, поскольку они производят большое количество выборок.
bash команд для проверки использования этих метрик где угодно в prometheus или grafana-

cd <prometheus dir>
grep -irn <metric_name>

, если нигде не используется, просто добавьте действие drop для этого конкретного задания.
Примечание - вы получите jobname в запросе promQL, выполненном вначале.

Я использую оператор prometheus, поэтому для этого мне нужно отредактировать соответствующее определение servicemonitor. Если вы развертываете prometheus обычным способом, вам может потребоваться отредактировать файл prometheus.yaml.

metric_relabel_configs:
   - source_labels: [ __name__ ]
     regex: 'metric_name'
     action: drop

Ссылка: - .
[1] https://www.robustperception.io/dropping-metrics-at-scrape-time-with-prometheus

[ 2] Формула для расчета необходимого RAM-
https://www.robustperception.io/how-much-ram-does-prometheus-2-x-need-for-cardinality-and-ingestion

...