“सर्वर धीमा है” एक बेकार बग रिपोर्ट है, जब तक आप ग्राफ़ खोलकर यह न देख सकें कि क्रैश से पहले तीन दिन तक मेमोरी लगातार बढ़ती रही। 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।
- मॉनिटरिंग सर्वर के लिए एक डेडिकेटेड IPv4: Grafana HTTPS पर परोसा जाता है, और आपके लक्ष्य सर्वर पोर्ट 9100 के लिए सिर्फ़ एक स्थिर पते को अनुमति दे सकते हैं।
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 उसके exporter को स्क्रेप नहीं कर सकता। दिशा उलट दें: NAT मशीन पर Prometheus को agent मोड में चलाएँ और डेटा मॉनिटरिंग सर्वर पर भेजें, जो पहले से ही रिमोट राइट स्वीकार करता है (ऊपर वाला --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
पोर्ट 9090 को सीधे खोलने के बजाय, इस पुश एंडपॉइंट को Caddy के ज़रिए basic auth के साथ उपलब्ध कराएँ।
ईमानदार टिप्पणियाँ
Prometheus खींचने (pull) वाला तरीका अपनाता है: आपके नियंत्रण वाले सर्वरों के समूह के लिए बढ़िया, और NAT के पीछे की हर चीज़ के लिए असुविधाजनक, इसीलिए agent वाली तरकीब है। इसका लोकल स्टोरेज सालों के इतिहास के लिए नहीं बना; लंबे समय तक डेटा रखना हो तो बाद में रिमोट स्टोरेज जोड़ें। और डैशबोर्ड सिर्फ़ आधा फ़ायदा हैं: पहले ही दिन कम से कम तीन अलर्ट सेट करें (डिस्क 85% से ऊपर, मेमोरी पर दबाव, लक्ष्य बंद), वरना आप ग्राफ़ तभी देखेंगे जब कुछ पहले ही टूट चुका होगा।
संबंधित
- अपटाइम मॉनिटरिंग के लिए VPS (Uptime Kuma): आउटेज अलर्ट और स्टेटस पेज
- UFW फ़ायरवॉल कैसे कॉन्फ़िगर करें
- VPS को कितनी RAM चाहिए?
टिप्पणियाँ
अभी तक कोई टिप्पणी नहीं। पहले बनें।