دليل النشر

VictoriaMetrics على VPS: تخزين طويل لمقاييس Prometheus

انشر على VPS Cloud ←

دليل عملي

VictoriaMetrics على VPS: تخزين طويل لمقاييس Prometheus

الاستضافة الذاتية7 دقائق للقراءةعدد الخطوات: 4

يتفوّق Prometheus في جمع المقاييس، لكنه أقل براعة في الاحتفاظ بها. افتراضيًا يحتفظ بخمسة عشر يومًا من السجل، وإطالة المدة تُضخّم قرص وذاكرة الخادم الذي يتولّى المراقبة نفسها. VictoriaMetrics قاعدة بيانات مفتوحة المصدر للسلاسل الزمنية (برخصة Apache-2.0) تتسلّم المهمة: تستقبل المقاييس عبر `remote_write` وتضغطها وتحتفظ بها لأشهر، مع الإجابة على واجهة الاستعلام نفسها التي يقدّمها Prometheus. يثبّتها هذا الدليل في حاوية Docker واحدة على VPS، ويحميها بكلمة مرور، ويضعها خلف وكيل عكسي HTTPS، ويربط بها Prometheus وGrafana.

المحتويات· لماذا تخزين مخصّص لمقاييسك1/13
  1. 01لماذا تخزين مخصّص لمقاييسك
  2. 02ما تقدّمه VictoriaMetrics
  3. 03VictoriaMetrics مقارنة بالتخزين المحلي لـ Prometheus
  4. 04المتطلبات
  5. 05تثبيت VictoriaMetrics باستخدام Docker Compose
  6. 06دون كلمة مرور، تكون القاعدة مفتوحة للكتابة
  7. 07إرسال المقاييس من Prometheus
  8. 08الاستعلام من VictoriaMetrics عبر Grafana
  9. 09مدة الاحتفاظ والقرص والنسخ الاحتياطي
  10. 10إرسال المقاييس دون Prometheus
  11. 11التحكّم في التعدّدية
  12. 12تحديث VictoriaMetrics
  13. 13تثبيت بنقرة واحدة من متجر ServOrbit

لماذا تخزين مخصّص لمقاييسك

يجمع Prometheus وحده بين مهمّتين: جمع مقاييس خدماتك كل خمس عشرة ثانية، وتخزينها. الأولى خفيفة، والثانية تكبر مع كل سلسلة وكل يوم من السجل. فينتهي الأمر بتقليص مدة الاحتفاظ إلى بضعة أسابيع، ويبقى سؤال «هل كان زمن الاستجابة بهذا الارتفاع في الربع الماضي؟» بلا جواب.

تفصل VictoriaMetrics بين المهمّتين. يواصل Prometheus — أو Grafana Alloy أو vmagent أو Telegraf — الجمع، ثم يرسل كل نقطة إلى VictoriaMetrics التي تضغطها وتحتفظ بها. ولأنها تجيب على واجهة استعلام Prometheus، يستعلم منها Grafana دون تغيير أي لوحة.

ما تقدّمه VictoriaMetrics

  • متوافقة مع Prometheus — هدف remote_write وواجهة استعلام Prometheus ومصدر بيانات Grafana دون إضافة.
  • PromQL وMetricsQL — تعمل استعلامات PromQL كما هي، وتضيف MetricsQL دوالّ أكثر عملية.
  • تخزين مضغوط — ضغط قوي للسلاسل، واحتفاظ لعدة أشهر على قرص متواضع.
  • بروتوكولات متعددة — InfluxDB line protocol وGraphite وOpenTSDB وOpenTelemetry واستيراد CSV وJSON.
  • واجهة vmui — استكشاف السلاسل والرسوم البيانية وتحليل التعدّدية وأبطأ الاستعلامات.
  • ملف تنفيذي واحد — حاوية واحدة بلا أي اعتماد خارجي، وبضع عشرات من الميغابايتات من الذاكرة في وضع الخمول.

VictoriaMetrics مقارنة بالتخزين المحلي لـ Prometheus

مرّر الجدول أفقيًا

VictoriaMetricsPrometheus وحده
مدة الاحتفاظ المعتادةمن عدة أشهر إلى عدة سنواتخمسة عشر يومًا افتراضيًا
تجميع عدة خوادمنعم، عبر remote_writeلا، نسخة لكل نطاق
لغة الاستعلامPromQL وMetricsQLPromQL
صيغ الاستقبالPrometheus وInfluxDB وGraphite وOpenTSDB وOTLPجمع Prometheus
Grafanaمصدر بيانات Prometheusمصدر بيانات Prometheus
جمع الأهدافممكن، لكن يُترك لـ Prometheus أو vmagentنعم، هذا دوره

المتطلبات

يكفي VPS بنظام Ubuntu 24.04 وذاكرة 1 غيغابايت للبدء؛ خطّط لـ 2 غيغابايت وقرص أكبر إذا كنت تجمع خوادم كثيرة. تحتاج إلى Docker مع إضافة Compose، وإلى اسم نطاق يشير إلى الخادم مع nginx وشهادة HTTPS: سترسل خوادمك مقاييسها إليه وسيستعلم منه Grafana، لذا يجب أن يكون العنوان ثابتًا ومشفّرًا.

من الأفضل تثبيت VictoriaMetrics على خادم منفصل عن الخوادم التي تراقبها: إن سقطت معها فقدتَ بالضبط البيانات التي تشرح العطل.

تثبيت VictoriaMetrics باستخدام Docker Compose

  1. تحضير المجلد وكلمة المرور

    أنشئ مجلد التطبيق وملف .env يحمل كلمة مرور المستخدم admin.

    mkdir -p /opt/victoriametrics && cd /opt/victoriametrics
    echo "ADMIN_PASSWORD=$(openssl rand -hex 16)" > .env
    chmod 600 .env
  2. كتابة ملف docker-compose.yml

    يُنشر المنفذ على واجهة الحلقة المحلية فقط: لا يصل إليه سوى nginx. يحمي الخياران -httpAuth كل نقاط الوصول — الواجهة والاستعلامات والاستقبال. ويحتفظ -retentionPeriod=12 باثني عشر شهرًا من البيانات.

    services:
      victoriametrics:
        image: victoriametrics/victoria-metrics:v1.155.0
        restart: unless-stopped
        ports:
          - "127.0.0.1:8428:8428"
        command:
          - -storageDataPath=/storage
          - -retentionPeriod=12
          - -httpAuth.username=admin
          - -httpAuth.password=${ADMIN_PASSWORD}
          - -selfScrapeInterval=30s
        volumes:
          - victoriametrics-data:/storage
    
    volumes:
      victoriametrics-data: {}
  3. تشغيل الحاوية

    يستغرق التشغيل أقل من ثانية. يجب أن يعرض السجل «started VictoriaMetrics» ثم بدء جمع مقاييسها الخاصة.

    docker compose up -d
    docker compose logs --tail 20
  4. النشر عبر HTTPS باستخدام nginx

    في ملف vhost الخاص بنطاقك (الشهادة من certbot)، وجّه الطلبات إلى المنفذ المحلي. ارفع قيمة client_max_body_size: دفعات remote_write تتجاوز الحد الافتراضي بسرعة.

    location / {
        proxy_pass http://127.0.0.1:8428;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        client_max_body_size 64m;
    }

دون كلمة مرور، تكون القاعدة مفتوحة للكتابة

دون الخيارين -httpAuth، يستطيع كل من يعرف العنوان قراءة جميع مقاييسك وكتابة مقاييس مزيّفة، بل وحذف سلاسل عبر واجهة الإدارة. أبقِ المصادقة مفعّلة، ولا تنشر المنفذ 8428 مباشرة على عنوان IP العام: مرّ دائمًا عبر الوكيل العكسي HTTPS.

إرسال المقاييس من Prometheus

على كل خادم يشغّل Prometheus، أضف كتلة remote_write إلى prometheus.yml ثم أعد تحميل Prometheus. يواصل الجمع كما كان ويكرّر كل نقطة نحو VictoriaMetrics.

remote_write:
  - url: https://metrics.example.com/api/v1/write
    basic_auth:
      username: admin
      password: "<ADMIN_PASSWORD>"

تحقّق بعد ذلك من وصول البيانات: يجب أن تجيب سلسلة up الخاصة بأهدافك. تظهر النقاط الحديثة بعد نحو ثلاثين ثانية، وهو تأخير طبيعي تطبّقه VictoriaMetrics على الاستعلامات الفورية.

curl -u admin:<ADMIN_PASSWORD> \
  'https://metrics.example.com/api/v1/query?query=up'

الاستعلام من VictoriaMetrics عبر Grafana

في Grafana أضف مصدر بيانات من نوع Prometheus بالعنوان https://metrics.example.com، وفعّل Basic auth وأدخل المستخدم admin وكلمة المرور. تعمل لوحاتك الحالية — Node Exporter Full مثلًا — دون تعديل، على كامل عمق السجل المحفوظ.

للاستكشاف دون Grafana، افتح https://metrics.example.com/vmui: ترسم الواجهة المدمجة الاستعلامات وتسرد السلاسل وتُظهر، في تبويب التعدّدية، أي المقاييس أكثر كلفة في التخزين.

مدة الاحتفاظ والقرص والنسخ الاحتياطي

تُضبط مدة الاحتفاظ بالخيار -retentionPeriod: الرقم وحده يعدّ أشهرًا، واللواحق d وw وy تعدّ أيامًا وأسابيع وسنوات. تعتمد المساحة المستخدمة أساسًا على عدد السلاسل النشطة وتواتر الجمع: قِسها بعد أسبوع (du -sh على المجلد) بدل تقديرها. للنسخ الاحتياطي، تلتقط الأداة الرسمية vmbackup لقطات متّسقة دون إيقاف القاعدة؛ وإلا فأوقف الحاوية قبل نسخ المجلد.

إرسال المقاييس دون Prometheus

ليس Prometheus ممرًّا إلزاميًا. تقبل VictoriaMetrics مباشرة الصيغة النصية لـ Prometheus وline protocol الخاص بـ InfluxDB وGraphite وOpenTSDB وOpenTelemetry. يمكن إذن لتطبيق ما أن يدفع عدّاداته الخاصة باستدعاء HTTP بسيط — وهذا مفيد لمقياس تجاري أو سكربت نسخ احتياطي أو مهمة مجدولة لا تدوم طويلًا بما يكفي ليتم جمعها.

curl -u admin:<ADMIN_PASSWORD> \
  -d 'orders_total{shop="casa"} 1284' \
  https://metrics.example.com/api/v1/import/prometheus

إن كنت تستخدم Telegraf أصلًا، فوجّه مخرج InfluxDB الخاص به إلى https://metrics.example.com ببيانات الاعتماد نفسها: تقدّم VictoriaMetrics نفسها كقاعدة InfluxDB للكتابة. ولجمع الأهداف دون تثبيت Prometheus على كل خادم، يقرأ الوكيل الخفيف vmagent إعداد scrape_configs نفسه الذي يستخدمه Prometheus ويرسل كل شيء عبر remote_write؛ ويحتفظ بالنقاط مؤقتًا على القرص إذا تعذّر الوصول إلى VictoriaMetrics لحظيًا.

التحكّم في التعدّدية

لا تعتمد كلفة قاعدة بيانات السلاسل الزمنية على عدد النقاط، بل على عدد السلاسل: كل تركيبة فريدة من اسم المقياس والتسميات تُنشئ سلسلة. والتسمية التي تحمل معرّف مستخدم أو عنوان IP أو رابطًا كاملًا تضاعف السلاسل بالآلاف، وهي التي تملأ الذاكرة والقرص — مع VictoriaMetrics كما مع Prometheus.

يسرد تبويب Cardinality في vmui المقاييس والتسميات التي تُنتج أكبر عدد من السلاسل. راجعه بعد ربط أي خدمة جديدة: تُصحَّح التسمية ذات القيم غير المحدودة من مصدرها، في التطبيق أو بقاعدة metric_relabel_configs في جهة Prometheus، قبل أن تملأ أشهرًا من التخزين.

تحديث VictoriaMetrics

ينشر المشروع إصدارًا جديدًا عدة مرات في الشهر، مع ملاحظات إصدار مفصّلة. وتبقى صيغة التخزين متوافقة من إصدار إلى آخر: يكفي للتحديث تغيير رقم الصورة في docker-compose.yml ثم إعادة تشغيل الحاوية. يُحتفظ بمجلد البيانات، ويمتصّ التخزين المؤقت لدى Prometheus أو vmagent الانقطاع القصير أثناء إعادة التشغيل، إذ يعيد إرسال النقاط المعلّقة.

cd /opt/victoriametrics
docker compose pull
docker compose up -d

تثبيت بنقرة واحدة من متجر ServOrbit

يثبّت متجر ServOrbit تطبيق VictoriaMetrics على خادمك دون سطر أوامر: ينشر الحاوية الرسمية، ويولّد كلمة مرور المستخدم admin، ويفعّل المصادقة على كل نقاط الوصول، وينشر الواجهة عبر HTTPS على نطاق فرعي من نطاقك أو على النطاق الفرعي المجاني للخادم. تظهر كلمة المرور في مساحة العميل؛ ولا يبقى سوى إضافة كتلة remote_write إلى خوادمك ومصدر البيانات في Grafana.

مقاييسك على المدى الطويل، على خادمك VPS

يكفي VPS من ServOrbit بنظام Ubuntu 24.04 وذاكرة 1 غيغابايت لتشغيل VictoriaMetrics. تثبيت بنقرة واحدة من المتجر، وHTTPS على نطاقك أو على النطاق الفرعي المجاني للخادم، وكلمة مرور تُولَّد لك.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو تواصل مع فريقنا — معاودة اتصال أو WhatsApp أو بريد إلكتروني. الدعم بـالعربية والفرنسية والإنجليزية.

راسلنا على WhatsAppيُفتح في علامة تبويب جديدة