Как настроить аналитику по всем серверам

Шаг 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

  1. В Grafana зайди в ConnectionsData sourcesAdd new data source.
  2. Выбери Prometheus.
  3. В поле URL укажи: http://prometheus:9090
  4. Нажми 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 (рекомендую)

  1. Открой Grafana в браузере: http://твой_IP_адрес:3000
  2. Залогинься (по умолчанию admin / пароль, который ты указал в docker-compose.yml).
  3. В левом меню нажми на + (плюс) → выбери Import (Импорт).
  4. В поле Find and import dashboards вставь ID дашборда и нажми Load.
  5. На следующем экране:
    • Выбери Prometheus как Data source (тот, который ты добавил раньше).
    • Если появятся другие опции (например, folder) — оставь по умолчанию или создай папку.
    • Нажми Import.

Рекомендуемые дашборды для твоего стека (актуально на 2026)

ДашбордIDЧто показываетРекомендация
Node Exporter Full1860CPU, память, диск, сеть, нагрузка, systemd и т.д. (самый популярный)Обязательно импортируй первым
cAdvisor exporter14282Мониторинг Docker-контейнеров (CPU, память, сеть контейнеров)Если используешь Docker
Docker and system monitoring893 или 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).

  1. Открой файл конфигурации:
cd ~/monitoring
nano prometheus/prometheus.yml
  1. Добавь новый 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']
  1. Перезапусти Prometheus:
docker compose restart prometheus

Комментарии

Комментариев пока нет. Почему бы ’Вам не начать обсуждение?

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *