دليل النشر

GreptimeDB على VPS: المقاييس والسجلات والتتبعات بلغة SQL

انشر على VPS Cloud ←

دليل عملي

GreptimeDB على VPS: المقاييس والسجلات والتتبعات بلغة SQL

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

مراقبة تطبيق ما تعني غالبًا تشغيل ثلاثة مخازن: Prometheus للمقاييس، وLoki أو Elasticsearch للسجلات، وTempo أو Jaeger للتتبعات. ثلاث خدمات للتحديث وثلاث لغات استعلام، ولا طريقة بسيطة لربط خطأ بزمن استجابته. GreptimeDB قاعدة بيانات مفتوحة المصدر للمراقبة (رخصة Apache-2.0) تحفظ الإشارات الثلاث في محرك واحد وتتيح استعلامها بلغة SQL وبلغة PromQL. يثبّتها هذا الدليل على خادم VPS باستخدام Docker Compose، ويحميها بكلمة مرور، ويربط بها Prometheus وOpenTelemetry وGrafana، ثم يضبط مدة الاحتفاظ والنسخ الاحتياطي.

المحتويات· لماذا قاعدة واحدة للمراقبة1/12
  1. 01لماذا قاعدة واحدة للمراقبة
  2. 02ما الذي تقدمه GreptimeDB
  3. 03GreptimeDB مقابل منظومة Prometheus وLoki وTempo
  4. 04المتطلبات
  5. 05تثبيت GreptimeDB باستخدام Docker Compose
  6. 06دون --user-provider تبقى القاعدة مفتوحة للجميع
  7. 07إرسال مقاييس Prometheus
  8. 08إرسال السجلات والتتبعات عبر OpenTelemetry
  9. 09استعلام GreptimeDB من Grafana
  10. 10مدة الاحتفاظ والقرص والنسخ الاحتياطي
  11. 11تحديث GreptimeDB
  12. 12تثبيت بنقرة واحدة من متجر ServOrbit

لماذا قاعدة واحدة للمراقبة

المقاييس والسجلات والتتبعات تصف الحادثة نفسها من ثلاث زوايا. وحين تعيش في ثلاث أدوات، تنتقل بين التبويبات وتنسخ الطوابع الزمنية، ويتطلب سؤال «ما الطلبات البطيئة التي سبقت هذه الأخطاء؟» ثلاثة استعلامات بثلاث لغات.

تحفظها GreptimeDB كلها في جداول، داخل محرك عمودي مصمم للسلاسل الزمنية. تبقى المقاييس الواردة من Prometheus قابلة للاستعلام بلغة PromQL، ويمكن استعلام كل شيء — المقاييس والسجلات والتتبعات — بلغة SQL أيضًا، مع الربط والتجميع. ويراها Grafana مصدر بيانات Prometheus عاديًا.

ما الذي تقدمه GreptimeDB

  • ثلاث إشارات ومحرك واحد — المقاييس والسجلات والتتبعات في جداول ضمن المخزن العمودي نفسه.
  • SQL وPromQL — ربط ونوافذ وتجميع بلغة SQL؛ واستعلامات PromQL لديك تعمل كما هي.
  • متوافقة مع Prometheus — وجهة remote_write، وواجهة استعلام Prometheus، ومصدر بيانات لـ Grafana دون إضافة.
  • دعم أصلي لـ OpenTelemetry — استقبال المقاييس والسجلات والتتبعات عبر OTLP/HTTP.
  • بروتوكولات أخرى — واجهة Loki للدفع، وline protocol الخاص بـ InfluxDB، وواجهة SQL عبر HTTP.
  • لوحة مدمجة — محرر SQL وPromQL، واستكشاف الجداول، ورسوم بيانية للنتائج.

GreptimeDB مقابل منظومة Prometheus وLoki وTempo

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

GreptimeDBPrometheus + Loki + Tempo
الخدمات المطلوب تشغيلهاحاوية واحدةثلاث خدمات وثلاثة إعدادات
لغات الاستعلامSQL وPromQLPromQL وLogQL وTraceQL
ربط السجلات بالمقاييساستعلام SQL واحدعدة استعلامات يدويًا
الاستقبالremote_write وOTLP وLoki وInfluxDB وSQLبروتوكول لكل خدمة
Grafanaمصدر بيانات Prometheusمصدر لكل خدمة
مدة الاحتفاظلكل قاعدة أو جدول بلغة SQLإعداد لكل خدمة

المتطلبات

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

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

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

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

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

    لا يُنشر المنفذ إلا على الواجهة المحلية: وحده nginx يصل إليه. يعرّف الخيار --user-provider المستخدم admin ويحمي كامل واجهة HTTP. ويوقف المتغير GREPTIMEDB_STANDALONE__ENABLE_TELEMETRY تقرير الاستخدام المجهول المرسل إلى الناشر.

    services:
      greptimedb:
        image: greptime/greptimedb:v1.3.0
        restart: unless-stopped
        ports:
          - "127.0.0.1:4000:4000"
        environment:
          GREPTIMEDB_STANDALONE__ENABLE_TELEMETRY: "false"
        command:
          - standalone
          - start
          - --http-addr=0.0.0.0:4000
          - --data-home=/greptimedb_data
          - --user-provider=static_user_provider:cmd:admin=${ADMIN_PASSWORD}
        volumes:
          - greptimedb-data:/greptimedb_data
    
    volumes:
      greptimedb-data: {}
  3. التشغيل والتحقق

    يستغرق التشغيل بضع ثوانٍ. يجيب /health دون مصادقة؛ أما واجهة SQL فتعيد 401 دون بيانات اعتماد.

    docker compose up -d
    curl -fsS http://127.0.0.1:4000/health
    curl -u admin:YOUR_PASSWORD http://127.0.0.1:4000/v1/sql -d 'sql=SHOW TABLES'
  4. النشر عبر HTTPS باستخدام nginx

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

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

دون --user-provider تبقى القاعدة مفتوحة للجميع

دون مزوّد مستخدمين، تقبل GreptimeDB أي طلب: كل من يعرف العنوان يمكنه قراءة سجلاتك وكذلك كتابة الجداول أو تعديلها أو حذفها بلغة SQL. أبقِ المصادقة مفعّلة، ولا تنشر المنفذ 4000 مباشرة على عنوان IP العام: مرّ دائمًا عبر الوكيل العكسي HTTPS. ولا حاجة كذلك لنشر منافذ gRPC وMySQL وPostgreSQL الخاصة بـ GreptimeDB.

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

في ملف prometheus.yml لكل خادم، أضف كتلة remote_write نحو GreptimeDB. يحدد المعامل db قاعدة الوجهة؛ والقاعدة public موجودة منذ التشغيل الأول.

remote_write:
  - url: https://greptime.example.ma/v1/prometheus/write?db=public
    basic_auth:
      username: admin
      password: YOUR_PASSWORD

أعد تحميل Prometheus: يصبح كل مقياس جدولًا، يظهر بالأمر SHOW TABLES; في اللوحة.

إرسال السجلات والتتبعات عبر OpenTelemetry

في OpenTelemetry Collector (أو مباشرة في SDK تطبيقك)، عرّف مُصدِّر OTLP/HTTP نحو GreptimeDB. تحمل الترويسة Authorization القيمة admin:password بترميز Base64، وتتطلب التتبعات إضافةً الترويسة X-Greptime-Pipeline-Name: greptime_trace_v1. لذا عرّف مُصدِّرَين اثنين: إذا وُضعت هذه الترويسة على السجلات فستُرفض.

exporters:
  otlphttp/greptime:
    endpoint: https://greptime.example.ma/v1/otlp
    headers:
      Authorization: "Basic BASE64_ADMIN_PASSWORD"
  otlphttp/greptime-traces:
    endpoint: https://greptime.example.ma/v1/otlp
    headers:
      Authorization: "Basic BASE64_ADMIN_PASSWORD"
      X-Greptime-Pipeline-Name: greptime_trace_v1
service:
  pipelines:
    logs:
      exporters: [otlphttp/greptime]
    metrics:
      exporters: [otlphttp/greptime]
    traces:
      exporters: [otlphttp/greptime-traces]

تصل المقاييس إلى /v1/otlp/v1/metrics والسجلات إلى /v1/otlp/v1/logs والتتبعات إلى /v1/otlp/v1/traces: يضيف المُجمِّع هذه اللواحق بنفسه. وإذا كنت ترسل سجلاتك إلى Loki، فيمكن لـ Promtail وGrafana Alloy استهداف /v1/loki/api/v1/push.

استعلام GreptimeDB من Grafana

في Grafana أضف مصدر بيانات من نوع Prometheus بالعنوان https://your-domain/v1/prometheus، وفعّل المصادقة الأساسية وأدخل المستخدم admin وكلمة مروره. تعمل لوحات PromQL لديك دون تعديل.

أما السجلات والتتبعات فاكتب استعلاماتها بلغة SQL في اللوحة المدمجة (https://your-domain/dashboard/)، حيث تُدخل بيانات الاعتماد في إعدادات الاتصال. يعرض استعلام مثل SELECT * FROM opentelemetry_logs ORDER BY timestamp DESC LIMIT 50; آخر السجلات الواردة.

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

دون ضبط، لا تحذف GreptimeDB شيئًا. تُحدد مدة الاحتفاظ بلغة SQL، لقاعدة كاملة أو لكل جدول (خيار ttl عند الإنشاء). يصدّر الأمر COPY DATABASE قاعدة بصيغة Parquet داخل وحدة التخزين، تحت /greptimedb_data/copy/:

ALTER DATABASE public SET 'ttl'='90d';
COPY DATABASE public TO 'backup/' WITH (FORMAT='parquet');

انسخ هذا المجلد بعد ذلك خارج الخادم، أو انسخ وحدة التخزين greptimedb-data كاملة والحاوية متوقفة. راقب مساحة القرص: حجم السجلات هو ما يحسم الأمر في أغلب الأحيان.

تحديث GreptimeDB

اقرأ ملاحظات الإصدار أولًا: قد يتطلب التحديث الرئيسي خطوة ترحيل. غيّر وسم الصورة في docker-compose.yml ثم:

cd /opt/greptimedb
docker compose pull && docker compose up -d
docker compose logs --tail 20

تُحفظ بيانات وحدة التخزين. نفّذ COPY DATABASE قبيل أي تحديث رئيسي: إنها نقطة العودة.

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

يثبّت متجر ServOrbit تطبيق GreptimeDB على خادمك دون سطر أوامر: ينشر الحاوية الرسمية، ويولّد كلمة مرور المستخدم admin، ويفعّل المصادقة على كامل واجهة HTTP، ويوقف تقرير الاستخدام المجهول، وينشر اللوحة عبر HTTPS على نطاق فرعي من نطاقك أو على النطاق الفرعي المجاني للخادم (greptimedb.{dns_slug}‎.servorbit-dns.com). تظهر كلمة المرور في مساحة العميل؛ ولا يبقى سوى ربط Prometheus وOpenTelemetry وGrafana.

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

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

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

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

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