Главная
|
Услуги и цены
VDS
Выделенные серверы
Размещение сервера
|
F.A.Q
|
О компании
|

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

Prometheus собирает метрики с сервера, Grafana используется для построения графиков. С их помощью можно отслеживать, что происходит с вашей инфраструктурой в реальном времени.
Это удобно использовать, если вам нужно отслеживать сразу много серверов, т.к. такая систему будет легко масштабироваться, то есть будет легко подключать новые серверы.

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

Содержание

  • 1. Как это работает
  • 2. Требования
  • 3. Часть 1. Установка Prometheus
  • 4. Часть 2. Установка Node Exporter
  • 5. Часть 3. Установка Grafana
  • 6. Часть 4. Подключаем Prometheus к Grafana
  • 7. Открываем порты в файрволе
  • 8. Полезные команды
  • 9. Итог

Как это работает

Prometheus
это сервер, который по расписанию опрашивает так называемые экспортёры и сохраняет полученные метрики у себя в базе.

Node Exporter
экспортёр для Linux-систем. Он запускается на сервере и отдаёт Prometheus метрики: загрузку CPU, использование RAM, дисковый I/O, сетевой трафик и многое другое.

Grafana
визуальный слой. Она подключается к Prometheus как к источнику данных и строит графики по вашим запросам.

Требования

  • Ubuntu 20.04 / 22.04 / 24.04
  • Минимум 1 ГБ RAM (2 ГБ рекомендуется)
  • Права sudo
  • Открытые порты: 9090 (Prometheus), 3000 (Grafana), 9100 (Node Exporter)

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

Шаг 1. Создаём системного пользователя

Prometheus не нужно запускать от root. Создадим отдельного пользователя без домашней директории и без возможности входа в систему:

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

Это стандартная практика для системных сервисов.

Шаг 2. Создаём директории

sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus 

/etc/prometheus для конфигурационных файлов,
/var/lib/prometheus для данных (метрик).

Назначаем владельца:

sudo chown prometheus:prometheus /etc/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus 

Шаг 3. Скачиваем Prometheus

Идём на страницу релизов и берём актуальную версию. На момент написания статьи 2.51.0:

cd /tmp
curl -LO https://github.com/prometheus/prometheus/releases/download/v2.51.0/prometheus-2.51.0.linux-amd64.tar.gz 

Распаковываем:

tar xvf prometheus-2.51.0.linux-amd64.tar.gz
cd prometheus-2.51.0.linux-amd64 

Шаг 4. Копируем бинарники и файлы

Копируем исполняемые файлы:

sudo cp prometheus /usr/local/bin/
sudo cp promtool /usr/local/bin/ 

Назначаем владельца:

sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool 

Копируем стандартные конфиги и веб-ресурсы:

sudo cp -r consoles /etc/prometheus
sudo cp -r console_libraries /etc/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus/consoles
sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries 

Шаг 5. Создаём конфигурационный файл

sudo nano /etc/prometheus/prometheus.yml 

Вставляем базовую конфигурацию:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100'] 

scrape_interval: 15s — Prometheus будет опрашивать экспортёры каждые 15 секунд. Для большинства задач этого достаточно. Если нужна более высокая точность, то можно уменьшить до 5s, но это увеличит нагрузку на диск.

Назначаем владельца файла:

sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml 

Шаг 6. Создаём systemd-сервис

sudo nano /etc/systemd/system/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 \
  --storage.tsdb.retention.time=30d

[Install]
WantedBy=multi-user.target 

Параметр --storage.tsdb.retention.time=30d означает, что Prometheus будет хранить данные 30 дней, после чего удалять старые. Это значение можно уменьшить

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

sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus 

Проверяем статус:

sudo systemctl status prometheus 

Должно быть Active: active (running). Веб-интерфейс Prometheus доступен по адресу http://ваш_ip:9090.

Часть 2. Установка Node Exporter

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

Шаг 1. Создаём пользователя

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

Шаг 2. Скачиваем Node Exporter

cd /tmp
curl -LO https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvf node_exporter-1.7.0.linux-amd64.tar.gz 

Копируем бинарник:

sudo cp node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter 

Шаг 3. Создаём systemd-сервис

sudo nano /etc/systemd/system/node_exporter.service 

Вставляем:

[Unit]
Description=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 

Запускаем:

sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter 

Проверяем:

sudo systemctl status node_exporter 

Метрики Node Exporter доступны по адресу http://ваш_ip:9100/metrics. Если открыть в браузере вы увидите стену текста. Это нормально, именно это и читает Prometheus.

Часть 3. Установка Grafana

Шаг 1. Добавляем репозиторий

sudo apt install -y apt-transport-https software-properties-common
curl -fsSL https://packages.grafana.com/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/grafana-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/grafana-keyring.gpg] https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list 

Шаг 2. Устанавливаем Grafana

Через apt

sudo apt update
sudo apt install -y grafana 

Тут мы столкнулись с ошибкой

Установка происходит на сервер с ip РФ, возможно ошибка происходит из-за этого. Если у вас сработала команда, то читайте сразу шаг 3, а мы установим через .deb

Через .deb

wget https://dl.grafana.com/oss/release/grafana_10.4.2_amd64.deb 

Версию можно посмотреть на официальном сайте и подставить актуальную

sudo dpkg -i grafana_10.4.2_amd64.deb 

Если появятся ошибки зависимостей:

sudo apt-get install -f -y 

Шаг 3. Запускаем сервис

sudo systemctl start grafana-server
sudo systemctl enable grafana-server 

Проверяем:

sudo systemctl status grafana-server 

Grafana доступна по адресу http://ваш_ip:3000.

Логин по умолчанию: admin / admin. При первом входе система попросит сменить пароль, обязательно сделайте это.

Часть 4. Подключаем Prometheus к Grafana

Шаг 1. Добавляем источник данных

  1. Откройте Grafana в браузере: http://ваш_ip:3000
  2. Войдите под admin
  3. В левом меню найдите Connections → Data sources
  4. Нажмите Add data source
  5. Выберите Prometheus
  6. В поле URL укажите: http://localhost:9090
  7. Пролистайте до самого низа страницы. Нажмите Save & test

Если увидите зелёную надпись Successfully queried the Prometheus API значит всё подключено.

Шаг 2. Импортируем готовый дашборд

Для старта лучше использовать готовый шаблон из библиотеки Grafana.

Самый популярный дашборд для Node Exporter ID 1860 (Node Exporter Full). Он показывает всё: CPU, RAM, диск, сеть, системную нагрузку.

  1. В левом меню: Dashboards → Import
  2. В поле Import via grafana.com введите 1860
  3. Нажмите Load
  4. Нажмите Import

Через секунду перед вами будет полноценный дашборд с реальными данными вашего сервера.

Открываем порты в файрволе

Если у вас включён UFW, нужно открыть нужные порты. Grafana и Prometheus лучше не выставлять в открытый интернет без авторизации, открывайте только для доверенных IP:

# Grafana  можно открыть шире, если настроена авторизация
sudo ufw allow 3000/tcp

# Prometheus и Node Exporter  только для доверенных IP
sudo ufw allow from ВАШ_IP to any port 9090
sudo ufw allow from ВАШ_IP to any port 9100 

Если Grafana и Prometheus стоят на одном сервере и вы подключаетесь только через Grafana, порт 9090 вообще не нужно открывать наружу.

Полезные команды

Перезапустить все три сервиса разом:

sudo systemctl restart prometheus node_exporter grafana-server 

Посмотреть логи Prometheus:

sudo journalctl -u prometheus -n 50 -f 

Проверить, что Prometheus видит таргеты (экспортёры):
Откройте http://ваш_ip:9090/targets, там будет список всех настроенных источников и их статус. Если статус UP, то всё работает. Если DOWN, то найти причину можно в колонке Error.

Проверить конфиг Prometheus на ошибки:

promtool check config /etc/prometheus/prometheus.yml 

Эту команду стоит запускать каждый раз перед перезапуском Prometheus после редактирования конфига.

Итог

Связка Prometheus + Grafana это инструменты для мониторинга Linux-серверов. Настройка занимает за 20–30 минут, даёт сразу много информации и легко масштабируется. Если нужно добавить новый сервер для мониторинга, ставите на него Node Exporter и добавляете строчку в конфиг Prometheus.

logo
© 2022 62yun
Все права защищены
vk.com/62yuncom
support@62yun.ru
logo
vk.com/62yuncom
support@62yun.ru
Услуги
VDS Выделенные серверы
Полезное
F.A.Q О компании Политика конфиденциальности Оферта
Способы оплаты
wechatpay visa mastercard
MirAccept
Партнеры
25port
© 2022 62yun Все права защищены
ВВЕРХ