Установка и настройка Prometheus

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

Эта система мониторинга состоящая из нескольких компонентов, написанных на языке программирования Golang. Основной компонент Prometheus – это база данных для хранения метрик. Ещё есть компоненты *_exporter для сбора данных с различных сервисов и компонент alertmanager для отправки уведомлений. Кроме того, для отображения метрик в удобном виде принято использовать Grafana. Давайте же рассмотрим как выполняется установка и настройка Prometheus на примере Ubuntu 20.04.

Установка и настройка Prometheus

1. Установка Prometheus

Вы можете установить Prometheus из официальных репозиториев в Ubuntu. Вы можете посмотреть какие пакеты prometheus доступны можно такой командой:

sudo apt search prometheus

Установка и настройка Prometheus

Для установки выполните команду:

sudo apt install prometheus

Однако в репозиториях содержится уже старая версия программы. Если вы хотите самую свежую версию, то придется скачать её из официального сайта. Поскольку программа написана на Golang, то и распространяется она в виде одного исполняемого файла. Поэтому установить её не сложно, достаточно скачать архив, распаковать и скопировать исполняемый файл в папку /usr/local/bin, также надо будет скопировать несколько исполняемых файлов.

Сначала скачайте пакет Prometheus с официальной страницы GitHub. Для Linux нужен пакет с исполняемыми файлами linux-amd64:

Установка и настройка Prometheus

Загруженный документ надо распаковать. Для этого можно воспользоваться утилитой tar:

Затем скопируйте исполняемые файлы prometheus и promtool в папку /usr/local/bin:

Установка и настройка Prometheus

Для конфигурационных файлов необходимо создать папку /etc/prometheus:

sudo mkdir /etc/prometheus

Затем скопируйте туда такие папки с конфигурационными файлами:

В них содержатся файлы для работы веб-интерфейса программы. Кроме того, нужно создать конфигурационный файл /etc/prometheus/prometheus.yml со следующим содержимым:

sudo vi /etc/prometheus/prometheus.yml

Здесь сказано, что по умолчанию интервал сбора данных составляет 15 секунд, а также добавлена задача по сборку данных с самого Prometheus. Никаких данных о состоянии сервера там не будет, только параметры работы программы.

Для запуска программы понадобится пользователь prometheus:

sudo useradd –no-create-home –shell /bin/false prometheus

Осталось только создать файл systemd службы для удобного запуска prometheus. Для этого выполните команду:

sudo systemctl edit –full –force prometheus.service

[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
–config.file /etc/prometheus/prometheus.yml \
–storage.tsdb.path /var/lib/prometheus/ \
–web.console.templates=/etc/prometheus/consoles \
–web.console.libraries=/etc/prometheus/console_libraries
[Install]
WantedBy=multi-user.target

2. Запуск Prometheus

После этого можно запустить Prometheus и проверить его работу. Для этого выполните:

sudo systemctl start prometheus

Затем для того чтобы убедится что всё запустилось выполните:

sudo systemctl status prometheus

Установка и настройка Prometheus

Обратите внимание на строчку Active. Её значение должно быть active (running). Если там что-то другое, значит программа не запустилась, и вы можете посмотреть лог ниже чтобы понять причину.

3. Доступ к веб-интерфейсу

Если программа запущена, вы можете получить доступ к веб-интерфейсу в браузере. Откройте порт 9090 на сервере, куда вы устанавливали Prometheus:

Установка и настройка Prometheus

Чтобы убедится, что сбор данных для сервиса prometheus работает откройте меню Status -> Targets. Здесь должна отображаться одна цель prometheus:

Установка и настройка Prometheus

Спустя некоторое время можно попытаться построить график из собранных данных. Для этого вернитесь на главную страницу и в строке Expression наберите go_memstats_frees_total. Затем перейдите на вкладку Graph:

Установка и настройка Prometheus

Будет отображен график этого показателя. С помощью поля Expression можно смотреть какие метрики уже собираются и просматривать их значения. Метрика go_memstats_frees_total стандартная для каждого экспортера данных и обычно для отображения на графиках не используется.

4. Установка Grafana

Смотреть графики Prometheus в его веб-интерфейсе не удобно и не практично. Там вы можете только убедится, что всё собирается верно. Для просмотра графиков же следует использовать Grafana. Для её установки надо сначала установить несколько компонентов:

sudo apt install -y apt-transport-https
sudo apt install -y software-properties-common

Затем добавьте ключ репозитория в систему:

curl -s https://packages.grafana.com/gpg.key | sudo gpg –no-default-keyring –keyring gnupg-ring:/etc/apt/trusted.gpg.d/grafana_key.gpg –import

И добавьте сам репозиторий:

echo “deb https://packages.grafana.com/enterprise/deb stable main” | sudo tee -a /etc/apt/sources.list.d/grafana.list

После этого обновите список пакетов в репозиториях и установите Grafana:

sudo apt update
sudo apt install grafana

5. Настройка Grafana для Prometheus

По умолчанию Grafana доступна на порту 3000. Логин и пароль при первом входе: admin и admin соответственно. Я не буду расписывать первоначальную настройку. Об этом читайте здесь. Когда войдете в интерфейс программы, откройте Configuration -> Data Sources и нажмите кнопку Add Data Source:

Установка и настройка Prometheus

В открывшемся окне выберите тип Data SourcePrometheus:

Установка и настройка Prometheus

На шаге настройки подключения необходимо в поле URL ввести адрес сервера, на котором доступен Prometheus и его порт. Если Grafana находится на той же машине, что и Prometheus можно использовать localhost, а порт по умолчанию 9090:

Установка и настройка Prometheus

После этого нажмите Save and Test и вы должны увидеть что тест прошёл успешно.

Установка и настройка Prometheus

После этого можно переходить к созданию досок.

6. Импорт доски Prometheus в Grafana

Доску для метрик, собираемых по умолчанию сервером Prometheus можно взять здесь. На этой странице вам нужен только идентификатор 3362, который находится под надписью Get this dashboard:

Установка и настройка Prometheus

Эта доска специально разработана для экспортера Prometheus и отображает с него данные. Для её добавления в интерфейсе Grafana откройте Dashboards -> Manage -> Import и введите идентификатор доски:

Установка и настройка Prometheus

Затем нажмите кнопку Load и на следующей странице введите имя доски и выберите ранее созданный источник данных (Data source). В этом примере он называется Prometheus:

Установка и настройка Prometheus

После нажатия на кнопку Import перед вами откроется доска с метриками, её можно уже настроить так, как вам необходимо:

Установка и настройка Prometheus

7. Установка Node Exporter

Данные в Prometheus поступают из так называемых экспортёров, программ, которые делают различные метрики доступными по HTTP адресу /metrics. Сервер Prometheus регулярно опрашивает такие экспортёры и собирает с них данные. Экспортеры существуют для различных служб и сервисов, например, для Nginx, MySQL, PHP-FPM, Apache ну и естественно экспортёр общих сведений о сервере. Такой экспортёр называется Node_exporter. Он тоже написан на Golang как и большинство экспортёров для Prometheus. Аналогично основному компоненту его можно установить из официальных репозиториев Ubuntu:

sudo apt install prometheus-node-exporter

Или можно получить последнюю версию из страницы на GitHub. После загрузки распакуйте её:

Затем скопируйте исполняемый файл программы в /usr/local/bin:

Далее создайте пользователя, от имени которого будете запускать программу:

sudo useradd –no-create-home –shell /bin/false node_exporter

И создайте юнит файл systemd для её запуска:

sudo systemctl edit –full –force node_exporter.service

[Unit]
Description=Prometheus Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target

Шаг 8. Настройка node_exporter

Далее необходимо запустить node_exporter. Для этого выполните такую команду:

sudo systemctl start node_exporter

Затем проверьте состояние сервиса:

sudo systemctl status node_exporter

Как и в случае с Prometheus состояние должно быть active (running):

Установка и настройка Prometheus

А в логах вы можете найти на каком порту ожидает подключений этот экспортёр. Именно в этих логах необходимо смотреть работает ли экспортёр хорошо или с ним что то не так.

Установка и настройка Prometheus

Ещё один способ убедится что экспортёр возвращает все необходимые метрики открыть URL /metrics на порту, где экспортёр ожидает подключений. Для node_exporter по умолчанию используется порт 9100, о чём и сообщается в логе:

Установка и настройка Prometheus

Как видите, кроме стандартных метрик с приставкой go* экспортируются и довольно много метрик начинающихся на node. Значит всё работает.

Шаг 9. Добавление node_exporter в prometheus

Дальше нужно сообщить prometheus что необходимо собирать данные с этого экспортёра. Под каждого экспортёра в конфигурационном файле необходимо создавать подраздел в scrape_configs со следующим содержимым:

В данном случае полный конфигурационный файл prometheus будет выглядеть вот так:

sudo vi /etc/prometheus/prometheus.yml

Для формата yaml отступы имеют очень важное значение, поэтому следите чтобы с ними было всё хорошо. В данном примере node_exporter находится на том же компьютере, что и prometheus поэтому можно указать localhost. Такой экспортёр надо установить на все машины, которые надо отслеживать с помощью программы. Для каждой надо создать свою job. После завершения настройки перезапустите Prometheus:

systemctl restart prometheus

Теперь можно проверить в Prometheus, что данные передаются:

Установка и настройка Prometheus

Шаг 10. Импорт доски для Node Exporter

Аналогично метрикам от сервера Prometheus можно выводить в Grafana метрики любого другого экспортёра. Для большинства из них уже созданы шаблоны досок. Доску для node_exporter можно найти здесь. Откройте Dashboards -> Manage -> Import и введите идентификатор доски 1860:

Установка и настройка Prometheus

На следующей странице введите название доски и выберите источник данных снова Prometheus:

Установка и настройка Prometheus

После нажатия кнопки Import перед вами появится доска, и здесь уже данные намного интереснее, чем на предыдущей:

Установка и настройка Prometheus

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

Выводы

В этой небольшой статье мы рассмотрели как выполняется установка Prometheus Grafana в Ubuntu 20.04. Как видите, программа довольно проста в настройке, намного проще по сравнению со связкой Collectd + IfluxDB и возможностей здесь намного больше. А какой системой мониторинга пользуетесь вы? Напишите в комментариях!

Нет похожих записей

alt=”Creative Commons License” width=”” />
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.