Настройка сохранения хранилища Prometheus

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 днями. Это просто значение по умолчанию, которое было выбрано много лет назад. Как показано выше, вы можете установить более высокий срок хранения или даже не применять его вообще.

Понравилась статья? Поделиться с друзьями:
Комментарии: 10
  1. Avatar for Дмитрий
    Дмитрий

    Как сохранить настройки хранения метрик ?
    после ввода команды
    # /usr/bin/prometheus --config.file /etc/prometheus/prometheus.yml --storage.tsdb.retention.size=400MB
    в браузере обновляется значение, но при выходе (Ctrl+c) и запуске значения сбрасываются.

    1. Avatar for advisor
      Advisor

      Здравствуйте!

      Спасибо за ваш вопрос.

      Давайте вместе попробуем разобраться в ситуации.

      Для начала уточним, пожалуйста, как именно вы запускаете Prometheus? Возможно, необходимо прописать команду с параметром `--storage.tsdb.path`, чтобы настройки сохранялись.

      Кроме того, давайте уточним: возможно, вы перезаписываете настройки, которые были указаны в файле `/etc/prometheus/prometheus.yml` в другой файл. Тогда необходимо добавить параметр `--config.file` с корректным путём к файлу настроек.

      Пожалуйста, уточните также, в качестве эксперимента, корректны ли сами настройки. Например, проверьте, что размер указывается в байтах, а не мегабайтах.

      Если вы не уверены в корректности настроек или у вас остались вопросы по работе Prometheus, пожалуйста, обратитесь в сообщество пользователей Prometheus на официальном сайте Prometheus: https://prometheus.io/docs/instrumenting/configuration/

      Надеюсь, это поможет вам решить проблему с настройками хранения метрик. Если у вас появятся новые вопросы, не стесняйтесь задавать их снова, и мы обязательно поможем!

      1. Avatar for Дмитрий
        Дмитрий

        правильно ли выходить из настроек комбинацией Ctrl+c ?

        1. Avatar for advisor
          Advisor

          Здравствуйте!

          В данном случае клавишная комбинация `Ctrl + C` обычно используется для прерывания текущего процесса. В вашем случае речь идёт о настройках в терминале, поэтому рекомендуется использовать `Ctrl + P` для выхода из настроек без сохранения изменений. Однако это может зависеть от настроек программы, которую вы используете.

          Также стоит учесть, что выход без сохранения изменений может привести к потере данных в настройках, поэтому перед использованием комбинации убедитесь, что вы уверены в своих действиях.

          Если у вас есть какие-либо вопросы или сомнения, рекомендуется обратиться к документации или поддержке программы, которую вы используете, или применить поиск в интернете по запросу «[название программы] настройки сохранения», чтобы узнать, какая клавишная комбинация является стандартной для сохранения и выхода в этой программе.

        2. Avatar for Gnostis
          Gnostis (автор)

          из nano выход ctrw+w сохранить, ctrl+x выйти

  2. Avatar for Дмитрий
    Дмитрий

    Как узнать где находится конфигурационный файл и как он называется ?

    1. Avatar for advisor
      Advisor

      Здравствуйте!

      Прошу прощения за задержку с ответом.

      Чтобы узнать расположение конфигурационного файла и его название в 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, пожалуйста, задавайте.

      1. Avatar for Дмитрий
        Дмитрий

        ExecStart=/usr/bin/prometheus
        командой # find . -name "prometheus.yml" в директории /usr/bin/ не находится конфигурационный файл.
        Может ли из-за этого не сохраняться настройки ?
        Может ли prometheus работать без конфигурационного файла ?
        Можно ли его создать и как ?

        1. Avatar for advisor
          Advisor

          Здравствуйте! Благодарю за ваш вопрос.

          Мне понадобится некоторое время, чтобы изучить ваш комментарий и предоставить вам ответ. Пожалуйста, подождите немного.

          **Пример создания конфигурационного файла для 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

          Надеюсь, это поможет вам решить вашу проблему. Если у вас возникнут дополнительные вопросы, пожалуйста, не стесняйтесь обращаться.

    2. Avatar for Gnostis
      Gnostis (автор)

      Обычно, файл конфигурации расположен здесь:
      /etc/prometheus/prometheus.yml

Добавить комментарий