Шаг 1: Подготовка сервера
Установка Docker
sudo curl -fsSL https://get.docker.com | sh
Шаг 2: Создай структуру папок
mkdir -p ~/monitoring/prometheus
cd ~/monitoring
Шаг 3: Создай файл конфигурации Prometheus (prometheus/prometheus.yml)
nano prometheus/prometheus.yml
Вставь следующее содержимое (это базовая конфигурация для мониторинга самого себя + Node Exporter + cAdvisor):
YAML
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['node-exporter:9100']
- job_name: 'cadvisor'
static_configs:
- targets: ['cadvisor:8080']
Сохрани (Ctrl+O → Enter → Ctrl+X).
Шаг 4: Создай docker-compose.yml
В папке ~/monitoring создай файл:
nano docker-compose.yml
Вставь этот готовый состав (актуально на 2026 год):
YAML
version: '3.8'
networks:
monitoring:
driver: bridge
volumes:
prometheus_data: {}
grafana_data: {}
services:
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
restart: unless-stopped
network_mode: host
pid: host
volumes:
- /:/host:ro,rslave
command:
- '--path.rootfs=/host'
- '--collector.filesystem.ignored-mount-points=^/(dev|proc|sys|var/lib/docker/.+)($$|/)'
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
container_name: cadvisor
restart: unless-stopped
networks:
- monitoring
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker:/var/lib/docker:ro
- /dev/disk:/dev/disk:ro
ports:
- "8080:8080"
prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: unless-stopped
networks:
- monitoring
ports:
- "9090:9090"
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
depends_on:
- node-exporter
- cadvisor
grafana:
image: grafana/grafana-oss:latest
container_name: grafana
restart: unless-stopped
networks:
- monitoring
ports:
- "3000:3000"
volumes:
- grafana_data:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin123 # поменяй на свой сильный пароль!
depends_on:
- prometheus
Шаг 5: Запуск стека
cd ~/monitoring
docker compose up -d
Проверь статус:
docker compose ps
Шаг 6: Проверка работы
- Prometheus: открой в браузере http://твой_IP:9090 → В меню «Status» → «Targets» должно быть 3 зелёных таргета (prometheus, node_exporter, cadvisor).
- Grafana: открой http://твой_IP:3000 Логин: admin Пароль: admin123 (или тот, что ты поставил) При первом входе Grafana попросит сменить пароль.
Шаг 7: Добавь Data Source в Grafana
- В Grafana зайди в Connections → Data sources → Add new data source.
- Выбери Prometheus.
- В поле URL укажи: http://prometheus:9090
- Нажми Save & test — должно показать «Data source is working».
Шаг 8: Импортируй готовые дашборды (рекомендую)
Самые популярные:
- Node Exporter Full — ID: 1860
- Docker and system monitoring — ID: 179
- cAdvisor exporter — ID: 14282
Импорт: Dashboards → Import → вставь ID → выбери Prometheus как источник данных.
Самый удобный способ — импорт по ID (рекомендую)
- Открой Grafana в браузере: http://твой_IP_адрес:3000
- Залогинься (по умолчанию admin / пароль, который ты указал в docker-compose.yml).
- В левом меню нажми на + (плюс) → выбери Import (Импорт).
- В поле Find and import dashboards вставь ID дашборда и нажми Load.
- На следующем экране:
- Выбери Prometheus как Data source (тот, который ты добавил раньше).
- Если появятся другие опции (например, folder) — оставь по умолчанию или создай папку.
- Нажми Import.
Рекомендуемые дашборды для твоего стека (актуально на 2026)
| Дашборд | ID | Что показывает | Рекомендация |
|---|---|---|---|
| Node Exporter Full | 1860 | CPU, память, диск, сеть, нагрузка, systemd и т.д. (самый популярный) | Обязательно импортируй первым |
| cAdvisor exporter | 14282 | Мониторинг Docker-контейнеров (CPU, память, сеть контейнеров) | Если используешь Docker |
| Docker and system monitoring | 893 или 193 | Общий обзор хоста + контейнеров | Хорошее дополнение |
Инструкция: Установка Node Exporter через Docker (на дополнительном сервере)
Шаг 1: Подготовка сервера
На другом сервере выполни:
sudo apt update && sudo apt upgrade -y
sudo curl -fsSL https://get.docker.com | sh
Шаг 2: Создай папку и docker-compose.yml
mkdir -p ~/node-exporter
cd ~/node-exporter
nano docker-compose.yml
Вставь следующий код:
YAML
version: '3.8'
services:
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
restart: unless-stopped
network_mode: host # Очень важно! Без этого метрики хоста будут неправильными
pid: host # Нужно для корректного сбора CPU
volumes:
- /:/host:ro,rslave
command:
- '--path.rootfs=/host'
- '--collector.filesystem.ignored-mount-points=^/(dev|proc|sys|var/lib/docker/.+|var/lib/containerd/.+)($$|/)'
Сохрани файл (Ctrl+O → Enter → Ctrl+X).
Шаг 3: Запусти Node Exporter
docker compose up -d
Проверь, что контейнер работает:
docker compose ps
docker logs node-exporter
Шаг 4: Проверь, что метрики доступны
Открой в браузере на этом сервере:
http://IP_этого_сервера:9100/metrics
Ты должен увидеть большой текст с метриками (начинается с # HELP и # TYPE).
Если открывается — всё хорошо.
Шаг 5: Добавь этот сервер в главный Prometheus
Теперь вернись на главный сервер (где стоит Prometheus + Grafana).
- Открой файл конфигурации:
cd ~/monitoring
nano prometheus/prometheus.yml
- Добавь новый job (или добавь в существующий node_exporter):
YAML
- job_name: 'node_exporter_remote'
static_configs:
- targets:
- 'IP_ВТОРОГО_СЕРВЕРА:9100' # ← замени на реальный IP второго сервера
# - '192.168.1.50:9100' # можно добавить несколько через запятую
Пример полного блока scrape_configs:
YAML
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['192.168.1.45:9100'] # твой главный сервер
- job_name: 'node_exporter_remote'
static_configs:
- targets:
- '192.168.1.50:9100' # второй сервер
- '192.168.1.51:9100' # третий и т.д.
- job_name: 'cadvisor'
static_configs:
- targets: ['cadvisor:8080']
- Перезапусти Prometheus:
docker compose restart prometheus