«الخادم بطيء» بلاغ عطل عديم الفائدة، إلا إن استطعت فتح رسم بياني وترى أن الذاكرة ظلّت ترتفع ثلاثة أيام قبل الانهيار. هذا ما يمنحك إياه Prometheus وGrafana: المعالج والذاكرة والقرص والشبكة لكل خادم، مسجّلة كل 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. 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 سحب مقاييس المُصدِّر عليه. اعكس الاتجاه: شغّل Prometheus في وضع agent على جهاز NAT وادفع إلى خادم المراقبة، الذي يقبل الكتابة عن بُعد أصلًا (الخيار --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، ومن هنا حيلة وضع agent. تخزينه المحلي ليس مصمّمًا لسنوات من السجل؛ للاحتفاظ الطويل ستضيف مخزنًا بعيدًا لاحقًا. ولوحات التحكم نصف القيمة فقط: اضبط ثلاثة تنبيهات على الأقل من اليوم الأول (القرص فوق 85%، ضغط الذاكرة، هدف متوقف)، وإلا فلن تنظر إلى الرسوم البيانية إلا بعد أن يكون شيء قد تعطّل بالفعل.
ذو صلة
- VPS لمراقبة التوفر (Uptime Kuma): تنبيهات الانقطاع وصفحات الحالة
- كيف تضبط جدار حماية UFW
- كم RAM يحتاج VPS؟
التعليقات
لا تعليقات بعد. كن الأول.