«سرور سست ہے» بیکار بگ رپورٹ ہے، جب تک آپ گراف کھول کر یہ نہ دیکھ سکیں کہ کریش سے پہلے تین دن تک میموری بڑھتی رہی۔ Prometheus اور Grafana آپ کو یہی دیتے ہیں: ہر سرور کا CPU، RAM، ڈسک اور نیٹ ورک، ہر 15 سیکنڈ میں ریکارڈ ہو کر چارٹس کی شکل میں جن میں آپ پیچھے جا سکتے ہیں۔ انہیں ان کے اپنے چھوٹے VPS پر رکھیں تو یہ پروڈکشن مشین گرنے پر بھی نگرانی کرتے رہتے ہیں۔
اجزاء
- node_exporter ہر اس سرور پر جسے آپ دیکھنا چاہتے ہیں: پورٹ 9100 پر سسٹم میٹرکس ظاہر کرتا ہے۔
- Prometheus مانیٹرنگ VPS پر: ان میٹرکس کو کھینچتا (scrape) اور محفوظ کرتا ہے۔
- Grafana: ڈیش بورڈز، HTTPS کے پیچھے۔
- اختیاری طور پر Alertmanager یا Grafana الرٹنگ، تاکہ کوئی حد پار ہو تو آپ کو پیغام ملے۔
آپ کو کیا چاہیے
- Micro-IP ($10/ماہ، 2 vCPU، 2 GB RAM، 25 GB) دس سے بیس سرورز کی نگرانی کرتا ہے۔ زیادہ ہوسٹس، کسٹم ایپ میٹرکس یا مہینوں کی ریٹینشن کے لیے: Small-IP۔
- ایک dedicated IPv4 مانیٹرنگ سرور کے لیے: Grafana HTTPS پر پیش ہوتا ہے، اور آپ کے اہداف پورٹ 9100 کے لیے ایک مستقل ایڈریس whitelist کر سکتے ہیں۔
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. مانیٹرنگ VPS پر Prometheus اور Grafana
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
Grafana کے آگے HTTPS:
echo 'grafana.example.com {
reverse_proxy 127.0.0.1:3000
}' > /etc/caddy/Caddyfile && systemctl reload caddy
لاگ اِن کریں (admin / admin، پھر اسے بدلیں)، http://prometheus:9090 پر Prometheus کو ڈیٹا سورس کے طور پر شامل کریں، اور کمیونٹی کا «Node Exporter Full» ڈیش بورڈ (ID 1860) امپورٹ کریں۔ تقریباً ایک منٹ میں آپ کے پاس مکمل سسٹم ڈیش بورڈ ہوتا ہے۔
NAT پلانز والے سرورز
NAT سرور صرف اپنے ذاتی SSH پورٹ پر آنے والے کنکشن قبول کرتا ہے، اس لیے Prometheus اس کا ایکسپورٹر اسکریپ نہیں کر سکتا۔ سمت الٹ دیں: NAT مشین پر Prometheus کو agent موڈ میں چلائیں اور مانیٹرنگ سرور کو 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 اینڈ پوائنٹ کو پورٹ 9090 کھلا چھوڑنے کے بجائے basic auth کے ساتھ Caddy کے ذریعے ظاہر کریں۔
ایماندارانہ نوٹس
Prometheus کھینچتا (pull) ہے؛ یہ اپنے کنٹرول والے سرورز کے لیے بہترین اور NAT کے پیچھے ہر چیز کے لیے مشکل ہے، اسی لیے agent کی ترکیب۔ اس کی مقامی اسٹوریج برسوں کی تاریخ کے لیے نہیں بنی؛ لمبی ریٹینشن کے لیے بعد میں ریموٹ اسٹور شامل کریں گے۔ اور ڈیش بورڈز صرف آدھی قدر ہیں: پہلے دن کم از کم تین الرٹس سیٹ کریں (ڈسک 85% سے اوپر، میموری کا دباؤ، ہدف بند)، ورنہ آپ گراف تب ہی دیکھیں گے جب کچھ پہلے ہی ٹوٹ چکا ہو۔
متعلقہ
- اپ ٹائم مانیٹرنگ کے لیے VPS (Uptime Kuma): بندش کے الرٹس اور اسٹیٹس پیجز
- UFW فائر وال کیسے کنفیگر کریں
- VPS کو کتنی RAM چاہیے؟
تبصرے
ابھی کوئی تبصرہ نہیں۔ پہلے بنیں۔