в debian, monitoring, prometheus

После обновления не запускается Prometheus

prometheus
Ранее мы уже рассматривали процесс установки принципиально нового инструмента для мониторинга и сбора метрик Prometheus, а сейчас, после обновления, возникла проблема с его запуском. Давайте разберемся!

До обновления у нас была установлена и успешно работал Prometheus следующей версии:

dpkg -l | grep prometheus
ii  prometheus                            0.16.1-nightly20160216-061737    amd64        Prometheus monitoring system and time series database

После обновления с помощью менеджера пакетов aptitude версия Prometheus стала следующей:

dpkg -l | grep prometheus
ii  prometheus                         1.3.0-beta.0-nightly20161024-051826 amd64        Prometheus monitoring system and time series database

После обновления Prometheus наотрез отказывался запускаться:

systemctl status prometheus.service
● prometheus.service - LSB: Prometheus monitoring system and time series database
   Loaded: loaded (/usr/lib/systemd/system/prometheus.service; enabled)
   Active: failed (Result: start-limit) since Mon 2016-10-24 11:47:54 EEST; 16s ago
  Process: 17107 ExecStop=/etc/init.d/prometheus stop (code=exited, status=0/SUCCESS)
  Process: 17086 ExecStart=/etc/init.d/prometheus start (code=exited, status=0/SUCCESS)
 Main PID: 17093 (code=exited, status=1/FAILURE)

Oct 24 11:47:54 stat.ua systemd[1]: Unit prometheus.service entered failed state.
Oct 24 11:47:54 stat.ua systemd[1]: prometheus.service holdoff time over, scheduling restart.
Oct 24 11:47:54 stat.ua systemd[1]: Stopping LSB: Prometheus monitoring system and time series database...
Oct 24 11:47:54 stat.ua systemd[1]: Starting LSB: Prometheus monitoring system and time series database...
Oct 24 11:47:54 stat.ua systemd[1]: prometheus.service start request repeated too quickly, refusing to start.
Oct 24 11:47:54 stat.ua systemd[1]: Failed to start LSB: Prometheus monitoring system and time series database.
Oct 24 11:47:54 stat.ua systemd[1]: Unit prometheus.service entered failed state.
Oct 24 11:48:01 stat.ua systemd[1]: Starting LSB: Prometheus monitoring system and time series database...
Oct 24 11:48:01 stat.ua systemd[1]: prometheus.service start request repeated too quickly, refusing to start.
Oct 24 11:48:01 stat.ua systemd[1]: Failed to start LSB: Prometheus monitoring system and time series database.

В ходе расследования пытаемся запустить Prometheus руками:

prometheus -config.file /etc/prometheus/prometheus.yml

и видим следующее сообщение:

INFO[0000] Starting prometheus (version=1.3.0-beta.0, branch=HEAD, revision=f002fe186abd04ecd9cd8961c24bc039f134ea13)  source=main.go:75
INFO[0000] Build context (go=go1.6.2, user=root@maya, date=20161024-05:32:39)  source=main.go:76
INFO[0000] Loading configuration file /etc/prometheus/prometheus.yml  source=main.go:247
ERRO[0000] Error loading config: couldn't load configuration (-config.file=/etc/prometheus/prometheus.yml): unknown fields in scrape_config: target_groups  source=main.go:149

Первая же ссылка в выдаче Google приводит нас сюда, где четко и ясно написано, что еще с середины июня в конфигурационном файле Prometheus параметр target_groups был заменен на static_configs!

Редактируем файл /etc/prometheus/prometheus.yml, заменяя все вхождения target_groups на static_configs, сохраняем его и пробуем запустить Prometheus еще раз:

systemctl start prometheus.service

Убеждаемся, что теперь все запустилось:

systemctl status prometheus.service
● prometheus.service - LSB: Prometheus monitoring system and time series database
   Loaded: loaded (/usr/lib/systemd/system/prometheus.service; enabled)
   Active: active (running) since Mon 2016-10-24 11:56:10 EEST; 20min ago
  Process: 17107 ExecStop=/etc/init.d/prometheus stop (code=exited, status=0/SUCCESS)
  Process: 27594 ExecStart=/etc/init.d/prometheus start (code=exited, status=0/SUCCESS)
 Main PID: 27600 (prometheus)
   CGroup: /system.slice/prometheus.service
           └─27600 /usr/sbin/prometheus -config.file /etc/prometheus/prometheus.yml -storage.local.path /var/lib/prometheus/data -storage.local.retention=8784h -storage.loca...

Oct 24 11:56:10 stat.ua systemd[1]: Started LSB: Prometheus monitoring system and time series database.

Вывод: не забывайте читать release notes — это может сэкономить кучу времени в будущем.

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

    • В зависимости от вашего дистрибутива/версии.
      Например, в Debian Wheezy я добавлял этот параметр в файле /etc/init.d/prometheus, а в Debian Jessie можно было добавить его и в файл /usr/lib/systemd/system/prometheus.service

      Если вы запускаете prometheus не как службу, а просто из командной строки, то параметр storage.local.retention можно дописать при запуске, например:
      /opt/prometheus -config.file /opt/prometheus.yml -storage.local.retention=8784h

      • Евгений, большое спасибо.
        Извините, что сразу не написал про дистрибутив, у меня Ubuntu 16.04
        Добавил запись в `/etc/init.d/prometheus`
        `DAEMON_OPTS=»$DAEMON_OPTS -web.console.templates=/opt/prometheus/prometheus-1.7.1.linux-amd64/consoles -web.console.libraries=/opt/prometheus/prometheus-1.7.1.linux-amd64/console_libraries -storage.local.retention 760h0m0s»`
        И это помогло.