−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 не може да изтегли неговия exporter. Обърни посоката: пусни Prometheus в agent режим на NAT машината и изпращай към мониторинг сървъра, който вече приема remote writes (флагът --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

Изложи този push endpoint през Caddy с basic auth, вместо да отваряш гол порт 9090.

Честни бележки

Prometheus тегли (pull); това е чудесно за парк от сървъри, които контролираш, и неудобно за всичко зад NAT, оттам и номерът с agent-а. Локалното му хранилище не е предвидено за години история; за дълго пазене по-късно ще добавиш отдалечено хранилище. И таблата са само половината стойност: настрой поне три известия още първия ден (диск над 85%, натиск върху паметта, недостъпна цел), иначе ще гледаш графиките чак след като нещо вече се е счупило.

Свързани

Готов за deploy? Плати в crypto, без KYC — онлайн за около минута.

Deploy-ни сега →

Въпроси

С какво се различава това от Uptime Kuma?

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

Колко диск ползва Prometheus?

Грубо 1–2 байта на проба след компресия. Десет сървъра, всеки изнасящ хиляда серии, събирани на всеки 15 секунди, правят около 60 милиона проби на ден, от порядъка на 100 MB. С подразбиращото се пазене от 15 дни това са няколко гигабайта.

Мога ли да наблюдавам сървъри на NAT планове?

Да, но не чрез scraping: NAT сървър не приема входящи връзки към своя exporter. Пусни Prometheus в agent режим на NAT машината и изпращай метриките към мониторинг сървъра с remote_write. Самият мониторинг сървър трябва да е на план с dedicated IP.

На какъв план да е мониторинг сървърът?

Micro-IP (2 GB RAM, $10/месец) спокойно обслужва от десет до двадесет хоста. Ако добавиш метрики на приложения с висок cardinality или пазиш данни за месеци, мини на Small-IP. Dedicated IP ти дава HTTPS за Grafana и стабилен адрес за whitelist на целите.

Трябва ли мониторинг сървърът да е отделен от това, което наблюдава?

Да. Ако Grafana работи на сървъра, на който току-що свърши паметта, губиш картината на проблема точно когато ти трябва. Малък отделен VPS продължава да работи, когато продукционната машина спре.

Коментари

Още няма коментари. Бъди първият.

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

Коментарите се модерират преди да се появят.