Введение
Эффективный мониторинг — это основа стабильной инфраструктуры. Встроенные инструменты Linux (vmstat, iostat, htop) дают лишь поверхностный взгляд. Для многосерверных сред вам понадобится централизованный сборщик метрик и удобная панель визуализации. В этом руководстве вы научитесь настроить бесплатный и открытый стек Prometheus + Grafana, который работает под Linux, Windows (WSL2) и других платформах.
Требования
- Поддерживаемая ОС: Ubuntu 20.04+, Debian 10+, CentOS 8, или Windows 10/11 с WSL2.
- Права администратора (для установки пакетов и запуска сервисов).
- Java 11+ (необходима для Grafana).
- Свободный порт
9090для Prometheus и3000для Grafana.
Установка Prometheus
Шаг 1: Установите зависимости
# Для Debian/Ubuntu
sudo apt-get update && sudo apt-get install -y curl tar
# Для RHEL/CentOS
sudo yum install -y curl tar
Шаг 2: Скачайте и разархивируйте Prometheus
VERSION=2.51.0
wget https://github.com/prometheus/prometheus/releases/download/v${VERSION}/prometheus-${VERSION}.linux-amd64.tar.gz
sudo tar -xzf prometheus-${VERSION}.linux-amd64.tar.gz -C /opt
sudo ln -s /opt/prometheus-${VERSION}.linux-amd64 /opt/prometheus
Шаг 3: Настройте prometheus.yml
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
⚠️ Важно: замените
localhost:9100на адрес хоста, где работает node exporter.
Шаг 4: Запустите Prometheus в качестве сервиса
sudo tee /etc/systemd/system/prometheus.service > /dev/null <<EOF
[Unit]
Description=Prometheus
After=network.target
[Service]
User=root
ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable --now prometheus
Установка Grafana
Шаг 5: Установите Grafana из пакета
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install -y grafana
Шаг 6: Настройте пароль администратора Grafana
По умолчанию Grafana создает пароль admin. После первой загрузки сервис попросит сменить его. Вы можете изменить пароль через веб-интерфейс (http://localhost:3000).
Шаг 7: Добавьте Prometheus в качестве источника данных
- Войдите в Grafana (
http://localhost:3000). - Перейдите в «Источники данных → Добавить → Prometheus».
- Укажите URL
http://localhost:9090. - Нажмите «Сохранить и проверить».
Создание дашборда
Шаг 8: Создайте базовый дашборд
- В Grafana выберите «Дашборды → + Добавить».
- Добавьте панель «Time series».
- Укажите запрос, например:
rate(node_cpu_seconds_total{mode="idle"}[5m]) - Повторите для памяти (
node_memory_Active_bytes) и сетевого трафика (node_network_receive_bytes_total).
Настройка оповещений
Шаг 9: Настройте простое оповещение
Создайте файл /opt/prometheus/alerts.yml:
groups:
- name: system
rules:
- alert: HighCPU
expr: node_cpu_seconds_total{mode="idle"} < 0.2
for: 2m
labels:
severity: warning
annotations:
summary: "Высокое использование CPU (>80%) на {{ $labels.instance }}"
Загрузите правило в Prometheus:
sudo /opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --alertconfig.file=/opt/prometheus/alerts.yml -web.enable-admin-api
Проверка результата
- Перейдите по адресу
http://localhost:3000и войдите с помощью admin/admin (измените пароль при первом входе). - Откройте созданный дашборд — графики должны отображать данные.
- Вызовите целевую метрику (
curl http://localhost:9090/metrics) для подтверждения сбора данных.
Возможные проблемы
- Prometheus не может сканировать цель – убедитесь, что экспортер работает (
curl localhost:9100/metrics) и порт доступен. - Дашборд пустой – проверьте источник данных, убедитесь, что метрика существует в Prometheus (
/metrics). - Grafana не загружается – проверьте логи (
journalctl -u grafana-server), возможно, порт3000занят другим сервисом.
Не стесняйтесь расширять стек дополнительными экспортерами (например, mysql-exporter, blackbox-exporter) или добавлять более сложные оповещения через Grafana Alertmanager. Настроенный мониторинг поможет вам быстро реагировать на изменения производительности и поддерживать высокую доступность сервисов.