−25%

на годовую оплату Windows, до 31.10. К тарифам

EQVPS

VPS для Grafana + Prometheus: мониторинг серверов

CPU, RAM, диск и метрики сервисов со всех серверов в одном месте: Prometheus, node_exporter и Grafana на VPS за HTTPS.

«Сервер тормозит» — бесполезный баг-репорт. Если только вы не можете открыть график и увидеть, что память три дня ползла вверх перед падением. Именно это дают Prometheus и Grafana: CPU, RAM, диск и сеть каждого сервера, записанные каждые 15 секунд и нарисованные графиками, которые можно отмотать назад. Поставьте их на отдельный маленький VPS — и они продолжат следить, даже когда боевая машина падает.

Из чего состоит

Что понадобится

1. node_exporter на каждом сервере

apt install -y prometheus-node-exporter
# allow only the monitoring server to scrape it
ufw allow from 203.0.113.10 to any port 9100 proto tcp

Замените 203.0.113.10 на адрес вашего VPS мониторинга. Никогда не оставляйте 9100 открытым всему миру — он многое рассказывает о сервере.

2. Prometheus и Grafana на VPS мониторинга

apt update && apt install -y docker.io docker-compose-v2 caddy
mkdir -p /opt/monitoring && cd /opt/monitoring

cat > prometheus.yml <<'EOF'
global:
  scrape_interval: 15s
scrape_configs:
  - job_name: nodes
    static_configs:
      - targets: ['198.51.100.21:9100', '198.51.100.22:9100']
EOF

cat > compose.yml <<'EOF'
services:
  prometheus:
    image: prom/prometheus
    volumes: [ "./prometheus.yml:/etc/prometheus/prometheus.yml:ro", "prom:/prometheus" ]
    command: [ "--config.file=/etc/prometheus/prometheus.yml", "--storage.tsdb.retention.time=15d", "--web.enable-remote-write-receiver" ]
    ports: [ "127.0.0.1:9090:9090" ]
    restart: unless-stopped
  grafana:
    image: grafana/grafana
    volumes: [ "grafana:/var/lib/grafana" ]
    ports: [ "127.0.0.1:3000:3000" ]
    restart: unless-stopped
volumes: { prom: {}, grafana: {} }
EOF

docker compose up -d

HTTPS перед Grafana:

echo 'grafana.example.com {
    reverse_proxy 127.0.0.1:3000
}' > /etc/caddy/Caddyfile && systemctl reload caddy

Войдите (admin / admin, затем смените пароль), добавьте Prometheus как источник данных по адресу http://prometheus:9090 и импортируйте популярный дашборд «Node Exporter Full» (ID 1860). Полный системный дашборд будет примерно через минуту.

Серверы на NAT-тарифах

NAT-сервер принимает входящие соединения только на персональный SSH-порт, так что Prometheus не может опросить его экспортёр. Разверните направление: запустите на NAT-машине Prometheus в режиме агента и отправляйте данные на сервер мониторинга — он уже принимает remote write (флаг --web.enable-remote-write-receiver выше).

# /etc/prometheus/agent.yml on the NAT server
scrape_configs:
  - job_name: self
    static_configs: [ { targets: ['127.0.0.1:9100'] } ]
remote_write:
  - url: https://prom-push.example.com/api/v1/write

Эту точку приёма выставьте через Caddy с basic auth, а не открывайте порт 9090 напрямую.

Честные замечания

Prometheus сам забирает данные — отлично для парка серверов под вашим контролем и неудобно для всего, что за NAT, отсюда трюк с агентом. Его локальное хранилище не рассчитано на годы истории; для долгого хранения позже добавляется удалённое хранилище. И дашборды — лишь половина пользы: в первый же день настройте хотя бы три алерта (диск больше 85%, нехватка памяти, недоступная цель), иначе вы будете смотреть на графики, только когда что-то уже сломалось.

Связанное

Готовы развернуть? Оплата криптой, без KYC — сервер за минуту.

Развернуть →

Частые вопросы

Чем это отличается от Uptime Kuma?

Uptime Kuma отвечает на вопрос «работает ли?». Prometheus и Grafana — на вопрос «почему тормозит и когда это началось?»: CPU, память, диск, сеть и метрики приложений во времени. Многие держат оба: Kuma для оповещений о падениях, Grafana для трендов и планирования мощностей.

Сколько диска занимает Prometheus?

Примерно 1–2 байта на значение после сжатия. Десять серверов по тысяче рядов метрик с опросом раз в 15 секунд — это около 60 миллионов значений в сутки, порядка 100 МБ. При хранении по умолчанию 15 дней выходит пара гигабайт.

Можно мониторить серверы на NAT-тарифах?

Да, но не опросом: NAT-сервер не принимает входящие соединения к экспортёру. Запустите на нём Prometheus в режиме агента и отправляйте метрики на сервер мониторинга через remote_write. Сам сервер мониторинга должен быть на тарифе с выделенным IP.

Какой тариф для сервера мониторинга?

Micro-IP (2 ГБ RAM, $10/мес) спокойно тянет один-два десятка хостов. Если добавите метрики приложений с высокой кардинальностью или будете хранить месяцы данных — переходите на Small-IP. Выделенный IP даёт HTTPS для Grafana и стабильный адрес для белого списка на серверах.

Сервер мониторинга должен быть отдельным?

Да. Если Grafana крутится на сервере, у которого только что кончилась память, вы теряете обзор ровно в тот момент, когда он нужнее всего. Отдельный небольшой VPS продолжает работать, когда боевой сервер падает.

Комментарии

Пока нет комментариев. Будьте первым.

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

Комментарии проходят модерацию перед публикацией.