−25%

روی پرداخت سالانه Windows، تا ۳۱ اکتبر. مشاهده پلن‌ها

EQVPS

VPS برای مانیتورینگ سرور با Grafana و Prometheus

متریک‌های CPU، RAM، دیسک و سرویس‌های همه سرورهایتان را در یک جا جمع کنید: Prometheus، node_exporter و Grafana روی یک VPS، پشت HTTPS.

«سرور کند است» گزارش خطای بی‌فایده‌ای است، مگر اینکه بتوانید یک نمودار باز کنید و ببینید حافظه سه روز پیش از خرابی مدام بالا رفته است. Prometheus و Grafana همین را به شما می‌دهند: CPU، RAM، دیسک و شبکه هر سرور، ثبت‌شده هر ۱۵ ثانیه و رسم‌شده به شکل نمودارهایی که می‌توانید در آن‌ها به عقب بروید. آن‌ها را روی VPS کوچک مخصوص خودشان بگذارید تا حتی وقتی یک سرور تولید زمین می‌خورد، به پاییدن ادامه دهند.

اجزا

چه چیزهایی لازم دارید

۱. 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 مانیتورینگ خود جایگزین کنید. هرگز پورت ۹۱۰۰ را برای همه باز نگذارید؛ اطلاعات زیادی درباره سرور شما لو می‌دهد.

۲. 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 آن را scrape کند. جهت را برعکس کنید: Prometheus را در حالت agent روی سرور NAT اجرا کنید و به سرور مانیتورینگ push کنید که از قبل نوشتن از راه دور را می‌پذیرد (گزینه --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 را به جای باز کردن خام پورت ۹۰۹۰، از طریق Caddy با basic auth در دسترس بگذارید.

نکات صادقانه

Prometheus می‌کشد (pull)؛ این برای مجموعه سرورهایی که کنترلشان می‌کنید عالی است و برای هر چیزی پشت NAT دست‌وپاگیر، و ترفند agent از همین‌جا می‌آید. ذخیره‌سازی محلی آن برای سال‌ها تاریخچه ساخته نشده؛ برای نگهداری طولانی بعداً یک ذخیره‌ساز راه دور اضافه می‌کنید. و داشبوردها فقط نیمی از ارزش‌اند: از روز اول دست‌کم سه هشدار تنظیم کنید (دیسک بالای ۸۵٪، فشار حافظه، هدف از دسترس خارج)، وگرنه فقط وقتی به نمودارها نگاه می‌کنید که چیزی از قبل خراب شده است.

مرتبط

آماده استقرار؟ با رمزارز بپرداز، بدون KYC — در حدود یک دقیقه فعال می‌شود.

← همین حالا مستقر کن

سؤالات متداول

تفاوت این با Uptime Kuma چیست؟

Uptime Kuma به سؤال «بالاست یا نه؟» پاسخ می‌دهد. Prometheus و Grafana به سؤال «چرا کند است و از کی شروع شد؟» پاسخ می‌دهند: متریک‌های CPU، حافظه، دیسک، شبکه و اپلیکیشن در طول زمان. خیلی‌ها هر دو را اجرا می‌کنند: Kuma برای هشدار قطعی، Grafana برای روندها و برنامه‌ریزی ظرفیت.

Prometheus چقدر دیسک مصرف می‌کند؟

تقریباً ۱ تا ۲ بایت برای هر نمونه پس از فشرده‌سازی. ده سرور که هر کدام هزار سری صادر می‌کنند و هر ۱۵ ثانیه خوانده می‌شوند، روزانه حدود ۶۰ میلیون نمونه می‌شوند، یعنی در حد ۱۰۰ مگابایت. با نگهداری پیش‌فرض ۱۵ روزه، این چند گیگابایت می‌شود.

آیا می‌توانم سرورهای روی پلن NAT را مانیتور کنم؟

بله، اما نه با scrape؛ سرور NAT اتصال ورودی به exporter خود را نمی‌پذیرد. Prometheus را در حالت agent روی سرور NAT اجرا کنید و متریک‌ها را با remote_write به سرور مانیتورینگ push کنید. خود سرور مانیتورینگ باید روی پلنی با IP اختصاصی باشد.

سرور مانیتورینگ روی کدام پلن باشد؟

Micro-IP (۲ گیگابایت RAM، ۱۰ دلار در ماه) به‌راحتی ده تا بیست میزبان را پوشش می‌دهد. اگر متریک‌های اپلیکیشن با cardinality بالا اضافه می‌کنید یا داده چند ماه را نگه می‌دارید، به Small-IP بروید. IP اختصاصی به شما HTTPS برای Grafana و یک آدرس ثابت برای لیست سفید روی سرورهای هدف می‌دهد.

آیا سرور مانیتورینگ باید از چیزی که مانیتور می‌کند جدا باشد؟

بله. اگر Grafana روی همان سروری اجرا شود که حافظه‌اش تمام شده، دید خود به مشکل را درست در لحظه‌ای که لازمش دارید از دست می‌دهید. یک VPS کوچک جداگانه وقتی سرور تولید از کار می‌افتد همچنان کار می‌کند.

نظرات

هنوز نظری نیست. اولین نفر باشید.

یک نظر بگذارید

نظرات پیش از نمایش بررسی می‌شوند.