Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

Ваш сервер падает в самый неподходящий момент, а вы узнаете об этом последним? Пора перестать гадать и начать контролировать! Представьте систему, которая не просто собирает цифры, а рисует понятную картину происходящего, предупреждая о проблемах до их появления. Мы говорим о Prometheus — мощном инструменте, который стал стандартом для мониторинга всего: от состояния CPU до работы веб-сервисов.

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

Вы узнаете, как быстро развернуть эту связку на Ubuntu 20.04, минуя устаревшие версии из репозиториев. Мы не только установим основной сервер, но и подключим Node Exporter — ключевой компонент для сбора метрик с самой системы. Вы научитесь настраивать автоматический сбор данных, проверять их корректность и, что самое главное, визуализировать в удобном интерфейсе Grafana.

Мы шаг за шагом пройдем весь путь: от загрузки свежих версий до импорта готовых дашбордов, которые сразу начнут показывать ценную информацию о нагрузке, памяти и диске. Забудьте о сложных конфигурациях — здесь всё четко, понятно и применимо на практике сразу после прочтения. Готовьтесь вывести мониторинг ваших серверов на профессиональный уровень! Начнем же!


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

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


Содержание статьи

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

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

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

sudo apt search prometheus
Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

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

sudo apt install prometheus

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

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

Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

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

tar xvf ~/Загрузки/prometheus-2.26.0.linux-amd64.tar.gz

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

sudo cp ~/Загрузки/prometheus-2.26.0.linux-amd64/prometheus /usr/local/bin sudo cp ~/Загрузки/prometheus-2.26.0.linux-amd64/promtool /usr/local/bin
Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

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

sudo mkdir /etc/prometheus

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

sudo cp -r ~/Загрузки/prometheus-2.26.0.linux-amd64/consoles /etc/prometheus sudo cp -r ~/Загрузки/prometheus-2.26.0.linux-amd64/console_libraries /etc/prometheus

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

sudo vi /etc/prometheus/prometheus.yml

global: scrape_interval: 15s scrape_configs: - job_name: 'prometheus' scrape_interval: 5s static_configs: - targets: ['localhost:9090']

Здесь сказано, что по умолчанию интервал сбора данных составляет 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 и Grafana с нуля

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

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

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

Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

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

Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

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

Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

Будет отображен график этого показателя. С помощью поля 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 и Grafana с нуля

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

Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

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

Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

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

Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

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

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

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

Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

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

Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

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

Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

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

Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

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

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

sudo apt install prometheus-node-exporter

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

tar -xvf ~/Загрузки/node_exporter-1.1.2.tar.gz

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

cp ~/Загрузки/node_exporter-1.1.2/node_exporter /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 и Grafana с нуля

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

Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

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

Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

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

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

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

- job_name: 'имя_задачи' scrape_interval: интервал_сбора_метрик static_configs: - targets: ['адрес:порт']

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

sudo vi /etc/prometheus/prometheus.yml

global: scrape_interval: 15s scrape_configs: - job_name: 'prometheus' scrape_interval: 5s static_configs: - targets: ['localhost:9090'] - job_name: 'prometheus_node' scrape_interval: 5s static_configs: - targets: ['localhost:9100']

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

systemctl restart prometheus

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

Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

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

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

Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

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

Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

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

Мониторинг серверов на автопилоте: Полная установка Prometheus и Grafana с нуля

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

Выводы

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

Оставить комментарий


Кликните на изображение чтобы обновить код, если он неразборчив