Prometheus хранит временные ряды и их образцы на диске. Учитывая, что дисковое пространство является ограниченным ресурсом, вам нужно ограничение на то, сколько его будет использовать Prometheus.
Исторически это делалось с помощью флага --storage.tsdb.retention, который определяет временной диапазон, который Prometheus будет держать доступным. Это минимум, поэтому он сохранит весь блок, если часть его все еще находится в пределах окна сохранения. Если вы знаете скорость получения данных в выборках в секунду, вы можете умножить ее на типичное количество байт на выборку (1,5, для надежности 2) и время хранения, чтобы получить представление о том, сколько дискового пространства будет использовано.
В Prometheus 2.7 и 2.8 появились новые флаги и опции. В 2.7 появилась опция сохранения на основе размера с помощью --storage.tsdb.retention.size, то есть указание максимального объема дискового пространства, используемого блоками. Однако это все еще не лучший вариант, поскольку он (пока) не включает пространство, занимаемое WAL или блоками, заполняемыми при уплотнении. Для надежности выделите место для WAL и одного блока максимального размера (что меньше 10% от времени хранения и месяца).
Как же взаимодействуют все эти флаги? В версии 2.8 поведение стало более очевидным. Есть три флага: --storage.tsdb.retention.size, --storage.tsdb.retention.time и --storage.tsdb.retention. --storage.tsdb.retention устарел и заменен на --storage.tsdb.retention.time для ясности.
В этой таблице кратко описано, как они работают вместе:
--storage.tsdb.retention.size | --storage.tsdb.retention.time | --storage.tsdb.retention | Результат |
Не установлено | Не установлено | Не установлено | По умолчанию применяется 15-дневный срок хранения. |
Не установлено | 20d | Не установлено | Применяется срок хранения 20 дней. |
Не установлено | Не установлено | 10d | Применяется срок хранения 10 дней. |
Не установлено | 20d | 10d | Применяется срок хранения 20 дней. |
1TB | Не установлено | Не установлено | Применяется хранение размером 1 ТБ, без ограничения по времени. |
1TB | 20d | Не установлено | Применяется размер 1 ТБ и срок хранения 20 дней - в зависимости от того, что произойдет раньше. |
1TB | 20d | 10d | Применяется размер 1 ТБ и срок хранения 20 дней - в зависимости от того, что произойдет раньше. |
Как вы видите, --storage.tsdb.retention.time отменяет устаревший --storage.tsdb.retention, и одновременно может действовать как временное, так и основанное на размере хранение.
Одна из распространенных путаниц, заключается в том, что срок хранения данных в Prometheus не ограничен 15 днями. Это просто значение по умолчанию, которое было выбрано много лет назад. Как показано выше, вы можете установить более высокий срок хранения или даже не применять его вообще.
Как сохранить настройки хранения метрик ?
после ввода команды
# /usr/bin/prometheus --config.file /etc/prometheus/prometheus.yml --storage.tsdb.retention.size=400MB
в браузере обновляется значение, но при выходе (Ctrl+c) и запуске значения сбрасываются.
Здравствуйте!
Спасибо за ваш вопрос.
Давайте вместе попробуем разобраться в ситуации.
Для начала уточним, пожалуйста, как именно вы запускаете Prometheus? Возможно, необходимо прописать команду с параметром `--storage.tsdb.path`, чтобы настройки сохранялись.
Кроме того, давайте уточним: возможно, вы перезаписываете настройки, которые были указаны в файле `/etc/prometheus/prometheus.yml` в другой файл. Тогда необходимо добавить параметр `--config.file` с корректным путём к файлу настроек.
Пожалуйста, уточните также, в качестве эксперимента, корректны ли сами настройки. Например, проверьте, что размер указывается в байтах, а не мегабайтах.
Если вы не уверены в корректности настроек или у вас остались вопросы по работе Prometheus, пожалуйста, обратитесь в сообщество пользователей Prometheus на официальном сайте Prometheus: https://prometheus.io/docs/instrumenting/configuration/
Надеюсь, это поможет вам решить проблему с настройками хранения метрик. Если у вас появятся новые вопросы, не стесняйтесь задавать их снова, и мы обязательно поможем!
правильно ли выходить из настроек комбинацией Ctrl+c ?
Здравствуйте!
В данном случае клавишная комбинация `Ctrl + C` обычно используется для прерывания текущего процесса. В вашем случае речь идёт о настройках в терминале, поэтому рекомендуется использовать `Ctrl + P` для выхода из настроек без сохранения изменений. Однако это может зависеть от настроек программы, которую вы используете.
Также стоит учесть, что выход без сохранения изменений может привести к потере данных в настройках, поэтому перед использованием комбинации убедитесь, что вы уверены в своих действиях.
Если у вас есть какие-либо вопросы или сомнения, рекомендуется обратиться к документации или поддержке программы, которую вы используете, или применить поиск в интернете по запросу «[название программы] настройки сохранения», чтобы узнать, какая клавишная комбинация является стандартной для сохранения и выхода в этой программе.
из nano выход ctrw+w сохранить, ctrl+x выйти
Как узнать где находится конфигурационный файл и как он называется ?
Здравствуйте!
Прошу прощения за задержку с ответом.
Чтобы узнать расположение конфигурационного файла и его название в Prometheus, вы можете выполнить следующие шаги:
1. Запустите терминал или командную строку.
2. Введите команду `sudo systemctl status prometheus` для вывода информации о статусе службы Prometheus.
3. В выводе команды найдите строку, содержащую путь до исполняемого файла Prometheus. Например, это может быть `/usr/local/bin/prometheus`.
4. Перейдите в эту директорию, используя команду `cd /usr/local/bin`.
5. Теперь, когда вы находитесь в нужной директории, вы сможете найти конфигурационный файл Prometheus. Обычно его имя заканчивается на `.yml` или `.yaml`.
6. Если вы не можете найти файл самостоятельно, вы можете воспользоваться командой `find` для поиска файлов в директории. Например: `find . -name "prometheus.yml"`, где `.` — текущая директория.
Если вы используете Prometheus в контейнере, то путь к конфигурационному файлу можно найти в описании работы службы Prometheus, которое можно увидеть с помощью команды `docker ps`.
Для более подробной информации о том, как настроить Prometheus и Prometheus Operator, рекомендуется обратиться к официальной документации Prometheus: https://prometheus.io/docs/
Надеюсь, это поможет вам найти конфигурационный файл. Если у вас есть другие вопросы о настройке Prometheus, пожалуйста, задавайте.
ExecStart=/usr/bin/prometheus
командой # find . -name "prometheus.yml" в директории /usr/bin/ не находится конфигурационный файл.
Может ли из-за этого не сохраняться настройки ?
Может ли prometheus работать без конфигурационного файла ?
Можно ли его создать и как ?
Здравствуйте! Благодарю за ваш вопрос.
Мне понадобится некоторое время, чтобы изучить ваш комментарий и предоставить вам ответ. Пожалуйста, подождите немного.
**Пример создания конфигурационного файла для Prometheus:**
В качестве примера создания конфигурационного файла Prometheus в системах Linux, можно использовать следующий код:
```yaml
global:
scrape_interval: 1m
evaluation_interval: 1m
scrape_configs:
- job_name: default
metrics_path: /
static_configs:
- targets:
- localhost:9090
```
Этот пример создаёт новый конфигурационный файл с именем prometheus.yml в текущем рабочем каталоге. Он включает глобальные настройки, такие как интервал сканирования (scrape_interval) и интервал оценки (evaluation_interval), а также конфигурацию для одного задания с именем default. Это задание сканирует метрики на localhost и прослушивает порт 9090.
Этот файл можно разместить в любом удобном для вас месте, но обычно рекомендуется размещать его в каталоге /etc/prometheus/config.conf.
После создания конфигурационного файла необходимо перезапустить Prometheus, чтобы изменения вступили в силу. Вы можете сделать это, выполнив следующую команду:
sudo systemctl restart prometheus
Надеюсь, это поможет вам решить вашу проблему. Если у вас возникнут дополнительные вопросы, пожалуйста, не стесняйтесь обращаться.
Обычно, файл конфигурации расположен здесь:
/etc/prometheus/prometheus.yml