العودة إلى التحديثات
New releaseJul 30, 2026

monitor v0.33.0

المراقبة في الوقت الفعلي وتحليل السجلات البطيئة لقواعد بيانات Valkey وRedis مع كشف الشذوذ، وتدقيق ACL، وتصدير مقاييس Prometheus.

مشاركة

مراقب BetterDB

Docker Pulls Docker Image Version Artifact Hub npm npm downloads API Tests License Valkey Redis

طبقة المراقبة التي يستحقها Valkey.

يحفظ BetterDB ما يتجاهله Valkey - السجلات البطيئة، أنماط الأوامر، نشاط العملاء، إشارات الشذوذ - حتى تتمكن من تصحيح ما حدث في الساعة 3 صباحًا، وليس فقط ما يحدث الآن. مبني لـ Valkey 8.x مع دعم أصلي لـ COMMANDLOG و CLUSTER SLOT-STATS ومقاييس الإدخال/الإخراج لكل خيط. متوافق مع Redis 6+ لكل شيء آخر.

الموقع الإلكتروني | Docker Hub | npm | التوثيق | المدونة

تم بناء BetterDB بواسطة BetterDB Inc.، وهي شركة منفعة عامة تعمل بموجب OCV Open Charter.

BetterDB Monitor - Key Analytics with per-type key size distribution histograms

بدء سريع (Docker)```bash

docker run -d --name betterdb -p 3001:3001 betterdb/monitor:latest

وجّه متصفحك إلى `http://localhost:3001`. لمراقبة مثيل معيّن:```bash
docker run -d \
  --name betterdb \
  -p 3001:3001 \
  -e DB_HOST=your-valkey-host \
  -e DB_PORT=6379 \
  -e DB_PASSWORD=your-password \
  betterdb/monitor:latest

هل تتصل بقاعدة بيانات على جهازك المضيف؟ داخل الحاوية، localhost يشير إلى الحاوية نفسها وليس جهازك المضيف — لذا استخدم host.docker.internal كمضيف لقاعدة البيانات. على Docker Desktop (macOS/Windows) يعمل ذلك مباشرة دون إعدادات إضافية؛ أما على Linux فأضف --add-host=host.docker.internal:host-gateway إلى أمر docker run حتى يتم حل الاسم. زر "الاتصال بالمثيل المحلي" بنقرة واحدة في لوحة التحكم يكتشف ذلك تلقائيًا ويملأ المضيف الصحيح لك مسبقًا.

يتم نشر نسختين من الصورة، وكلتاهما متعددة البنى (linux/amd64, linux/arm64):

الوسمما هو
latest, X.Y.Z-no-aiالصورة الافتراضية - تتضمن كل ميزات المراقبة، دون الاعتماديات الخاصة بمساعد الذكاء الاصطناعي المحلي التجريبي
X.Y.Zتضيف مساعد الذكاء الاصطناعي التجريبي (أحضر Ollama الخاص بك؛ معطّل افتراضيًا عبر AI_ENABLED)

راجع نشر Docker للإنتاج للتخزين الدائم، والمنافذ المخصصة، والترخيص، والإعدادات المعزولة عن الشبكة.

بدء سريع (Kubernetes / Helm)```bash

helm repo add betterdb https://docs.betterdb.com/charts helm repo update helm install betterdb-monitor betterdb/betterdb-monitor
--namespace betterdb --create-namespace
--set db.host=my-valkey.default.svc.cluster.local
--set db.password=yourpassword

ثم نفّذ `kubectl port-forward -n betterdb svc/betterdb-monitor 3001:3001` وافتح `http://localhost:3001`، أو فعّل ingress الخاص بالـ chart. سجلّات التاريخ المدعومة بـ PostgreSQL، وSecrets الخاصة بك، والترخيص المعزول عن الشبكة (air-gapped) كلها مغطاة في [دليل Kubernetes](https://docs.betterdb.com/kubernetes) و[README الخاص بالـ chart](https://github.com/betterdb-inc/monitor/blob/master/charts/betterdb-monitor/README.md).

## بدء سريع (CLI)

شغّل BetterDB Monitor بدون Docker:```bash
npx @betterdb/monitor

عند التشغيل الأول، يرشدك معالج الإعداد التفاعلي عبر الاتصال بقاعدة البيانات، ونظام التخزين الخلفي (SQLite أو PostgreSQL أو في الذاكرة)، وإعدادات الخادم. يتم حفظ الإعدادات في ~/.betterdb/config.json.```bash npm install -g @betterdb/monitor # global install betterdb --setup # re-run setup wizard betterdb --port 8080 # override server port betterdb --db-host 1.2.3.4 # override database host betterdb --help # all options

يتطلب Node.js >= 20.0.0 ومثيل Valkey أو Redis للمراقبة. للتخزين عبر SQLite، استخدم أيضًا `npm install -g better-sqlite3`.

## ما الذي ستحصل عليه

### شاهد كل شيء، واحتفظ بكل شيء

- **تحليلات تاريخية** - استعلم عن سجلات الاستعلامات البطيئة، وأنماط الأوامر، ونشاط العملاء، وزمن الاستجابة عبر أي نطاق زمني. البيانات التي كانت تختفي بعد تدوير السجلات.
- **دعم COMMANDLOG** - حصري لـ Valkey 8.1+. الطلبات الكبيرة والردود الكبيرة، وليس فقط البطيئة منها.
- **جلسات التقاط MONITOR** - سجّل حركة المرور الفعلية عند الطلب: تتبّع مباشر، تصفية، إعادة تشغيل، تصدير إلى JSON/CSV، ومطابقة مرجعية مع سجل الاتصالات.
- **تتبع المفاتيح الساخنة** - أهم المفاتيح حسب تكرار الوصول مع حركة الترتيب بمرور الوقت. تحليلات المفاتيح (Pro، مجانية في الوصول المبكر) تضيف توزيعات النوع وTTL والحجم من العينات المباشرة.
- **رؤية العناقيد** - رسوم بيانية للطوبولوجيا، وخرائط حرارية لـ SLOT-STATS، وتوزيع وحدة المعالجة المركزية والمفاتيح لكل فتحة.
- **مقاييس وحدة المعالجة المركزية وخيوط الإدخال/الإخراج** - رؤية لكل خيط لا يمكن لأي أداة Redis توفيرها.
- **تحليلات العملاء** - اعرف بالضبط أي خدمة مسؤولة عن ماذا، مع الإسناد حسب اسم العميل والنمط.
- **سجل تدقيق ACL** - تتبّع من وصل إلى ماذا، مع الحفظ للامتثال وتصحيح الأخطاء بعد الحوادث.

### افهم وتصرّف

- **كشف الشذوذ** (Pro، مجاني في الوصول المبكر) - تعلّم تلقائي للخط الأساسي مع أحداث مترابطة وتشخيصات بلغة إنجليزية بسيطة. أكثر من 20 كاشفًا، بدون عتبات يدوية.
- **التنبؤ بالسعة** - إسقاطات زمنية للوصول إلى السقف للذاكرة، والعمليات/الثانية، ووحدة المعالجة المركزية، والتجزئة.
- **Webhooks** - تسليم تنبيهات موقّعة بـ HMAC مع إعادة المحاولة وسجل تسليم كامل.
- **الترحيل المباشر** - الانتقال بين Redis وValkey مع سير عمل من ثلاث مراحل: التحليل والتنفيذ والتحقق.

### مصمم لعصر الذكاء الاصطناعي

- **مراقبة البحث المتجهي** - عمليات FT.SEARCH في الثانية وزمن الاستجابة مع صحة لكل فهرس لـ [valkey-search](https://github.com/valkey-io/valkey-search) وRediSearch. راجع [docs/vector-ai](https://github.com/betterdb-inc/monitor/blob/master/docs/vector-ai/README.md).
- **زمن استجابة الاستدلال** - p50/p95/p99 لكل فهرس، مع تنبيهات خرق اتفاقية مستوى الخدمة (Pro، مجاني في الوصول المبكر).
- **ذكاء التخزين المؤقت الدلالي** (Pro، مجاني في الوصول المبكر) - صحة معدل النجاح، وتوصيات عتبة التشابه، وسير عمل اقتراحات بالموافقة/الرفض. تتضمن مراقبة ذاكرة الوكيل.
- **تتبعات الذكاء الاصطناعي** - مخططات شلالية لـ OTLP من تطبيق الذكاء الاصطناعي الخاص بك، مترابطة مع حالة Valkey المباشرة تحت كل طلب.

### يتكامل مع كل شيء

- **خادم MCP** - 60 أداة لـ Claude Code أو Cursor أو أي عميل MCP عبر [`@betterdb/mcp`](https://github.com/betterdb-inc/monitor/blob/master/packages/mcp).
- **نقطة نهاية Prometheus** - أكثر من 100 مقياس `betterdb_*`. راجع [docs/prometheus-metrics.md](https://github.com/betterdb-inc/monitor/blob/master/docs/prometheus-metrics.md).
- **OpenTelemetry** - عكس المقاييس والأحداث إلى أي خلفية OTLP.
- **REST API** - كل شيء في الواجهة هو استدعاء API، موثّق عبر OpenAPI.

## الوصول إلى بياناتك بطريقتك

| الواجهة | التفاصيل |
|-----------|---------|
| واجهة الويب | `http://localhost:3001` |
| خادم MCP | `npx @betterdb/mcp` (stdio) - أنشئ رمزًا عبر الإعدادات ← رموز MCP |
| Prometheus | `http://localhost:3001/api/prometheus/metrics` |
| REST API (OpenAPI) | `http://localhost:3001/docs` |
| فحص الصحة | `http://localhost:3001/api/health` |

> **ملاحظة**: في الإصدارات الإنتاجية (Docker، CLI) تُقدَّم مسارات API تحت بادئة `/api`. في التطوير المحلي (`pnpm dev`) لا توجد بادئة - على سبيل المثال `http://localhost:3001/health`.

## قواعد البيانات المدعومة

| قاعدة البيانات | الحد الأدنى للإصدار | الميزات المدعومة |
|----------|----------------|-------------------|
| **Valkey** | 8.0+ | جميع الميزات بما في ذلك COMMANDLOG (8.1+) وCLUSTER SLOT-STATS |
| **Redis** | 6+ | جميع الميزات باستثناء COMMANDLOG وCLUSTER SLOT-STATS الحصريين لـ Valkey |

يستخدم الخلفي محوّلًا موحّدًا فوق عميل `iovalkey` المتوافق سلكيًا ويكتشف تلقائيًا Valkey مقابل Redis من استجابة `INFO` (`DB_TYPE=auto`). تُكتشف القدرات مثل COMMANDLOG وSLOT-STATS حسب الإصدار، وتتدهور الواجهة بأمان عندما لا تكون الميزة متاحة.

الخدمات المُدارة مدعومة أيضًا - توجد أدلة لـ AWS ElastiCache وMemoryDB وRedis Cloud وUpstash في [docs/providers](https://github.com/betterdb-inc/monitor/blob/master/docs/providers)، ويصل [`@betterdb/agent`](https://github.com/betterdb-inc/monitor/blob/master/packages/agent) إلى مثيلات VPC فقط عبر WebSocket صادر.

## نشر Docker للإنتاج

تحتوي صورة Docker على تطبيق المراقبة (الخلفي + الواجهة الأمامية). تتطلب:
1. مثيل Valkey/Redis للمراقبة
2. مثيل PostgreSQL لاستمرار البيانات (أو استخدام تخزين الذاكرة)

### التشغيل مع تخزين PostgreSQL```bash
docker run -d \
  --name betterdb-monitor \
  -p 3001:3001 \
  -e DB_HOST=your-valkey-host \
  -e DB_PORT=6379 \
  -e DB_PASSWORD=your-password \
  -e STORAGE_TYPE=postgres \
  -e STORAGE_URL=postgresql://user:pass@postgres-host:5432/dbname \
  betterdb/monitor

التشغيل على منفذ مخصص

اضبط متغير البيئة PORT وطابِق تعيين -p:```bash docker run -d
--name betterdb-monitor
-p 8080:8080
-e PORT=8080
-e DB_HOST=your-valkey-host
betterdb/monitor

### التشغيل مع شبكة المضيف (الوصول إلى خدمات localhost)

إذا كانت Valkey و PostgreSQL تعملان على نفس المضيف:```bash
docker run -d \
  --name betterdb-monitor \
  --network host \
  -e DB_HOST=localhost \
  -e DB_PORT=6380 \
  -e DB_PASSWORD=devpassword \
  -e STORAGE_TYPE=postgres \
  -e STORAGE_URL=postgresql://dev:devpass@localhost:5432/postgres \
  betterdb/monitor

متغيرات البيئة

المتغيرمطلوبالافتراضيالوصف
DB_HOSTنعمlocalhostمضيف Valkey/Redis المراد مراقبته
DB_PORTلا6379منفذ Valkey/Redis
DB_PASSWORDلا-كلمة مرور Valkey/Redis
DB_USERNAMEلاdefaultاسم مستخدم ACL الخاص بـ Valkey/Redis
DB_TYPEلاautoنوع قاعدة البيانات: auto أو valkey أو redis
STORAGE_TYPEلاmemoryالواجهة الخلفية للتخزين: memory أو postgres
STORAGE_URLمشروط-رابط اتصال PostgreSQL (مطلوب إذا كان STORAGE_TYPE=postgres)
PORTلا3001منفذ HTTP للتطبيق
NODE_ENVلاproductionبيئة Node
ANOMALY_DETECTION_ENABLEDلاtrueتفعيل كشف الحالات الشاذة
ANOMALY_PROMETHEUS_INTERVAL_MSلا30000فترة تحديث ملخص Prometheus (بالمللي ثانية)
BETTERDB_LICENSE_KEYلا-مفتاح الترخيص عبر الإنترنت (Pro/Enterprise)، يتم التحقق منه عبر الشبكة
BETTERDB_OFFLINE_LICENSE_FILEلا-مسار ملف ترخيص دون اتصال موقّع بصيغة .jwt للمضيفات المعزولة عن الشبكة (انظر أدناه)
BETTERDB_OFFLINE_LICENSEلا-رمز الترخيص دون اتصال كسلسلة JWT مضمّنة
BETTERDB_DATA_DIRلا/app/dataدليل حالة الترخيص المحفوظة (قم بتركيب وحدة تخزين قابلة للكتابة)
ENCRYPTION_KEYلا-مفتاح (16 حرفًا كحد أدنى) يُستخدم لتشفير كلمات مرور الاتصال وأسرار أنفاق SSH المخزنة أثناء الراحة. بدونه، تُخزَّن الأسرار كنص عادي
BETTERDB_SSH_KEY_DIRلا-الدليل الذي يجب أن توجد فيه مفاتيح SSH الخاصة من جانب الخادم. يتيح مصدر المفتاح "مسار ملف الخادم" لـ أنفاق SSH؛ يجب أن يقع مسار مفتاح الاتصال داخله. تركه غير مضبوط يعطّل المفاتيح المستندة إلى الملفات (المفاتيح الملصقة المضمّنة لا تزال تعمل)
BETTERDB_TELEMETRYلاtrueاضبطه على false لتعطيل القياس عن بُعد المجهول

المرجع الكامل، بما في ذلك تصدير AI وOTLP وضبط webhook وعتبات بوابة الصحة: docs/configuration.md.

أنفاق SSH

يمكن للاتصالات الوصول إلى قاعدة البيانات عبر مضيف حصن/قفزة SSH بدلاً من الاتصال المباشر — وهو مفيد لـ Valkey/Redis في شبكة فرعية خاصة أو ElastiCache أو MemoryDB. فعّل الاتصال عبر نفق SSH عند إضافة اتصال وقدم مضيف SSH والمنفذ واسم المستخدم. يتم دعم قفزة واحدة.

المصادقة إما بكلمة مرور أو بمفتاح خاص. تأتي المفاتيح الخاصة من أحد مصدرين:

  • لصق المفتاح (مضمّن): يتم إرسال محتوى مفتاح PEM مع الاتصال. يُخزَّن مشفّرًا أثناء الراحة فقط عند تعيين ENCRYPTION_KEY (تشفير مغلف)؛ وبدون هذا المفتاح يُخزَّن كنص عادي، مثل كلمات مرور الاتصال. يعمل في كل مكان، بما في ذلك النشر المُدار/السحابي.
  • مسار ملف الخادم: المفتاح موجود بالفعل على نظام ملفات خادم المراقبة ويُشار إليه بالمسار. يتطلب هذا تعيين متغير البيئة BETTERDB_SSH_KEY_DIR إلى الدليل الذي يحتوي على المفاتيح المسموح بها، ويجب أن يقع المسار المُشار إليه داخله، بحيث لا يمكن أبدًا إجبار API على قراءة ملفات عشوائية. اترك BETTERDB_SSH_KEY_DIR غير مضبوط لتعطيل هذا الخيار.

اختياريًا، ثبّت بصمة مفتاح مضيف SSH (SHA256:...) على الاتصال؛ عند تعيينها، يُرفض النفق ما لم يقدم الخادم مفتاحًا مطابقًا، مما يمنع هجمات الوسيط على مسار الحصن. إذا تُرك فارغًا، لا يتم التحقق من هوية الخادم (يتم تسجيل تحذير).

يوجّه النفق إلى قاعدة البيانات عبر 127.0.0.1؛ وعند تفعيل TLS، لا يزال الشهادة تُتحقق مقابل اسم مضيف قاعدة البيانات الحقيقي. اضبط ENCRYPTION_KEY بحيث يتم تشفير كلمات مرور SSH وعبارات مرور المفاتيح والمفاتيح المضمّنة أثناء الراحة.

قيد معروف — طوبولوجيات الكتلة/Sentinel: فقط الاتصال الذي تقوم بتكوينه يتم توجيهه عبر النفق. تتفرع مراقبة الكتلة وSentinel إلى العقد الأخرى باستخدام العناوين التي تعلن عنها تلك العقد (CLUSTER NODES / Sentinel)، ويتم إجراء تلك الاتصالات لكل عقدة مباشرة، وليس عبر النفق. إذا كانت العقد الأخرى قابلة للوصول فقط عبر الحصن (مثل ElastiCache/MemoryDB في شبكة فرعية خاصة)، ستكون طرق عرض كل عقدة غير متاحة. استخدم أنفاق SSH لمراقبة العقدة المفردة/الأساسية، أو ضع المراقب حيث يمكنه الوصول إلى عقد الكتلة مباشرة.

الترخيص ودعم البيئات المعزولة عن الشبكة

يفتح BetterDB Monitor ميزات Pro/Enterprise بإحدى طريقتين، اعتمادًا على ما إذا كان المضيف لديه وصول إلى الإنترنت:

  • مفتاح الترخيص عبر الإنترنت - اضبط BETTERDB_LICENSE_KEY. يتحقق المراقب منه مقابل betterdb.com ويخزّن مؤقتًا رمزًا موقّعًا تم التحقق منه محليًا، بحيث تستمر طبقتك في العمل خلال الانقطاعات القصيرة وإعادة التشغيل.
  • رمز الترخيص دون اتصال / المعزول عن الشبكة - للمضيفات التي لا تملك وصولًا إلى الإنترنت على الإطلاق (انظر أدناه).

كيف يعمل الترخيص المعزول عن الشبكة

كل استحقاق هو JWT موقّع RS256. يتحقق المراقب منه محليًا مقابل المفاتيح العامة المضمّنة في الصورة - لا يحتاج أبدًا إلى الوصول إلى خادم ترخيص للثقة في الرمز. لذا يمكن لمضيف معزول عن الشبكة تشغيل الطبقات المدفوعة بدون أي اتصال:

  1. على جهاز متصل بالإنترنت، سجّل الدخول في betterdb.com/account/licenses و نزّل رمز الترخيص دون اتصال (.jwt، Pro/Enterprise). لا يحتوي على أسرار ولا يمكن العبث به - أي تعديل يكسر التوقيع.
  2. انقله إلى المضيف المعزول عن الشبكة بالطريقة التي تريدها (USB، إدارة التكوين، تركيب سر Docker/Kubernetes).
  3. قدمه عبر BETTERDB_OFFLINE_LICENSE_FILE (مسار)، أو BETTERDB_OFFLINE_LICENSE (سلسلة مضمّنة)، أو الصقه في الواجهة تحت الإعدادات ← الترخيص ← "بيئة معزولة عن الشبكة؟ فعّل ترخيصًا دون اتصال."

عند تكوين رمز دون اتصال وعدم تعيين BETTERDB_LICENSE_KEY، يقوم المراقب بـ صفر طلبات صادرة - فحوصات الترخيص والقياس عن بُعد وتنبيهات التحديث كلها معطلة. يشغّل الطبقة الممنوحة حتى انتهاء صلاحية الرمز (التراخيص الدائمة تُعاد تنزيلها سنويًا)، ثم يعود إلى Community.```bash

fully offline - no network required

docker volume create betterdb-data docker run --rm -v betterdb-data:/d alpine chown 1001:1001 /d # volume writable by UID 1001 (one-time)

docker run -d --name betterdb-monitor -p 3001:3001
-e DB_HOST=your-valkey-host -e DB_PORT=6379 -e DB_PASSWORD=your-password
-v /path/to/betterdb-license.jwt:/run/secrets/betterdb-license.jwt:ro
-e BETTERDB_OFFLINE_LICENSE_FILE=/run/secrets/betterdb-license.jwt
-v betterdb-data:/app/data
betterdb/monitor

تحقق مع `GET /api/license/status` ← `source: offline-token`, `mode: offline`,
`airGapped: true`.

> **الاستمرارية:** قم بتركيب وحدة تخزين قابلة للكتابة في `/app/data` بحيث يبقى الترخيص دون اتصال
> ورمز السماح لفترة انقطاع الاتصال عبر الإنترنت بعد إعادة التشغيل. تعمل الحاوية كمستخدم **UID 1001**،
> لذا يجب تنفيذ `chown` على وحدة تخزين جديدة لتعود ملكيتها له (كما هو موضح أعلاه) - وإلا
> ستفشل الاستمرارية مع `EACCES … license.jwt`.

للحصول على التدفق الكامل، وأولوية التحقق، ودليل تدوير المفاتيح، راجع
**[التراخيص دون اتصال والمنعزلة عن الشبكة](https://github.com/betterdb-inc/monitor/blob/master/docs/offline-licenses.md)** و
**[مرجع الإعدادات](https://github.com/betterdb-inc/monitor/blob/master/docs/configuration.md#license-configuration)**.

### تفاصيل صورة Docker

- **الصورة الأساسية**: `node:20-alpine`
- **الحجم المضغوط**: ~360MB (`latest` / `-no-ai`) / ~640MB (الصورة المنسوخة مع تبعيات نموذج اللغة المحلي للمساعد الذكي التجريبي)
- **المنصات**: `linux/amd64`, `linux/arm64`
- **المحتوى**: واجهة برمجة التطبيقات الخلفية + ملفات الواجهة الأمامية الثابتة (يتم تقديمها بواسطة Fastify)
- **المستبعد**: دعم SQLite (استخدم PostgreSQL أو تخزين الذاكرة)

### عمليات الحاوية```bash
docker logs -f betterdb-monitor        # follow logs
docker stop betterdb-monitor           # stop
docker rm betterdb-monitor             # remove

مخازن التخزين

يقوم BetterDB Monitor بحفظ سجل التدقيق والتحليلات والالتقاطات وبيانات الحالات الشاذة في أحد المخازن الثلاثة التالية:

المخزنحالة الاستخدامملاحظات
memoryالاختبار، البيئات المؤقتةالافتراضي في Docker؛ تُفقد جميع البيانات عند إعادة التشغيل
postgresالإنتاجSTORAGE_TYPE=postgres + STORAGE_URL=postgresql://user:pass@host:port/db
sqliteالتطوير المحلي / CLIغير مضمن في صور Docker للإنتاج؛ STORAGE_SQLITE_FILEPATH اختياري

مقاييس Prometheus

يتم عرض المقاييس في GET /api/prometheus/metrics بصيغة نص Prometheus: تدقيق ACL، اتصالات العملاء، أنماط السجل البطيء/سجل الأوامر، الذاكرة، الإنتاجية، مساحة المفاتيح، النسخ المتماثل، إحصائيات فتحات الكتلة، ومقاييس وقت تشغيل Node.js - جميعها مسبوقة بـ betterdb_.```yaml scrape_configs:

  • job_name: 'betterdb-monitor' metrics_path: '/api/prometheus/metrics' static_configs:
    • targets: ['your-monitor-host:3001']
مرجع المقاييس الكامل: [docs/prometheus-metrics.md](https://github.com/betterdb-inc/monitor/blob/master/docs/prometheus-metrics.md) و [docs/prometheus-integration.md](https://github.com/betterdb-inc/monitor/blob/master/docs/prometheus-integration.md).

## التطوير

### هيكل المشروع```
betterdb-monitor/
├── apps/
│   ├── api/                 # NestJS backend (Fastify)
│   └── web/                 # React frontend (Vite)
├── packages/                # Published packages (see below)
├── docs/                    # Documentation site (Jekyll)
├── docker-compose.yml       # Local Valkey (port 6380) and Redis (port 6382) for testing
└── package.json             # Workspace root

الحزم

يوفّر هذا المستودع الأحادي عدة حزم مستقلة. راجع packages/ للحصول على القائمة الكاملة.

الحزمةاللغةالسجل
@betterdb/monitorTypeScriptnpm
@betterdb/mcpTypeScriptnpm
@betterdb/agentTypeScriptnpm
@betterdb/semantic-cacheTypeScriptnpm
betterdb-semantic-cachePythonPyPI
@betterdb/agent-cacheTypeScriptnpm
betterdb-agent-cachePythonPyPI
cache-benchmarkPythonأداة إعادة تشغيل لقياس أداء التخزين المؤقت الدلالي

مجموعة التقنيات

  • الواجهة الخلفية: NestJS مع محول Fastify، وiovalkey لاتصالات Valkey/Redis، ووضع TypeScript الصارم. المنفذ 3001.
  • الواجهة الأمامية: React + TypeScript، وVite، وTailwindCSS، وRecharts. خادم التطوير على المنفذ 5173.
  • المستودع الأحادي: مساحات عمل pnpm + Turborepo.

الإعداد المحلي

المتطلبات الأساسية: Node.js >= 20.0.0، وpnpm >= 9.0.0، وDocker.```bash pnpm install cp .env.example .env pnpm docker:dev # local Valkey (6380) and Redis (6382) pnpm dev # web on :5173, api on :3001

للاتصال بـ Redis بدلاً من Valkey، قم بتعيين `DB_PORT=6382` في ملف `.env`.```bash
pnpm dev:api           # API only
pnpm dev:web           # frontend only
pnpm docker:dev:down   # stop local databases
pnpm build             # production build
pnpm test              # API tests

Docker image builds:```bash pnpm docker:build # local build pnpm docker:publish # multi-arch build & push (requires buildx)

### إضافة ميزات جديدة

1. أضف نقاط نهاية جديدة في `apps/api/src/`
2. أضف استدعاءات API المقابلة في `apps/web/src/api/`
3. أضف أنواعًا مشتركة في `packages/shared/src/types/`

### نمط الكود

- وضع TypeScript الصارم، أنواع إرجاع صريحة، بدون `any`
- تم تكوين ESLint + Prettier

## الترخيص

- المحتوى الموجود تحت `docs/` مرخّص بموجب CC BY-SA 4.0.
- المحتوى الموجود تحت `proprietary/` يخضع لترخيص تجاري (انظر `proprietary/LICENSE`). هذه الميزات مجانية خلال الوصول المبكر.
- كل شيء آخر هو [MIT](https://github.com/betterdb-inc/monitor/blob/master/LICENSE).

الفئات