−25%

на річну оплату Windows, до 31.10. До тарифів

EQVPS

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

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

«Сервер гальмує» — марний баг-репорт. Хіба що ви можете відкрити графік і побачити, що пам'ять три дні повзла вгору перед падінням. Саме це дають Prometheus і Grafana: CPU, RAM, диск і мережа кожного сервера, записані щоп'ятнадцять секунд і намальовані графіками, які можна відмотати назад. Поставте їх на окремий маленький 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 працює далі, коли бойовий сервер падає.

Коментарі

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

Залишити коментар

Коментарі проходять модерацію перед публікацією.