انتقل إلى المحتوى الرئيسي انتقل إلى الملاحة انتقل إلى التذييل
لفترة محدودة: برنامج Design Partner — خطة BUSINESS مجانية مدى الحياة

المراقبة

مراقبة صحة الأجهزة والحاويات والخدمات والمستودعات وتشغيل التشخيصات.

المراقبة

يوفر Rediacc أوامر مراقبة مدمجة لفحص صحة الأجهزة والحاويات قيد التشغيل والخدمات وحالة المستودعات وتشخيصات النظام.

صحة الجهاز

الحصول على تقرير صحي كامل لجهاز:

rdc machine health --name server-1

يُبلغ هذا عن:

  • النظام: وقت التشغيل، استخدام القرص، استخدام مخزن البيانات
  • الحاويات: عدد الحاويات قيد التشغيل والسليمة وغير السليمة
  • التخزين: حالة SMART
  • المشكلات: المشكلات المكتشفة

استخدم --output json للحصول على مخرجات قابلة للقراءة آليًا.

عرض الحاويات

عرض جميع الحاويات قيد التشغيل عبر جميع المستودعات على جهاز:

rdc machine containers --name server-1
العمودالوصف
Nameاسم الحاوية
Statusوقت التشغيل أو سبب الإيقاف
Stateقيد التشغيل، متوقف، إلخ.
Healthسليم، غير سليم، بدون
CPUنسبة استخدام المعالج
Memoryاستخدام الذاكرة / الحد الأقصى
Repositoryالمستودع الذي يمتلك الحاوية

الخيارات:

  • --health-check, إجراء فحوصات صحية نشطة على الحاويات
  • --output json, مخرجات JSON قابلة للقراءة آليًا

تتضمن مخرجات JSON تفاصيل الحاويات الكاملة (labels وport_mappings وimage وid) بالإضافة إلى repository (الاسم المحلول) وrepository_guid (المعرّف GUID الأصلي) وdomain وautoRoute.

عرض الخدمات

عرض خدمات systemd المتعلقة بـ Rediacc على جهاز:

rdc machine services --name server-1
العمودالوصف
Nameاسم الخدمة
Stateنشط، غير نشط، فاشل
Sub-stateقيد التشغيل، متوقف، إلخ.
Restartsعدد مرات إعادة التشغيل
Memoryاستخدام ذاكرة الخدمة
Repositoryالمستودع المرتبط

الخيارات:

  • --stability-check, تمييز الخدمات غير المستقرة (فاشلة، أكثر من 3 إعادات تشغيل، إعادة تشغيل تلقائية)
  • --output json, مخرجات JSON قابلة للقراءة آليًا

تتضمن مخرجات JSON تفاصيل الخدمات الكاملة مع repository (الاسم المحلول) وrepository_guid (المعرّف GUID الأصلي).

عرض المستودعات

عرض المستودعات على جهاز مع إحصائيات مفصلة:

rdc machine repos --name server-1
العمودالوصف
Nameاسم المستودع
Sizeحجم صورة القرص
Mountمثبّت أو غير مثبّت
DockerDocker daemon قيد التشغيل أو متوقف
Containersعدد الحاويات
Disk Usageالاستخدام الفعلي للقرص داخل المستودع
Modifiedوقت آخر تعديل

الخيارات:

  • --search <text>, التصفية حسب الاسم أو مسار التثبيت
  • --output json, مخرجات JSON قابلة للقراءة آليًا

تتضمن مخرجات JSON الحقلين name (الاسم المحلول) وguid (المعرّف GUID الأصلي)، كما تدرج لكل مستودع مصفوفتَي containers (بما فيها domain وautoRoute وrepository/repository_guid) وservices.

صحة التخزين

فحص تجزئة BTRFS ومشاركة reflink عبر جميع المستودعات على جهاز:

rdc machine query --name server-1 --storage-health
العمودالوصف
Quotaالحجم الأقصى للمستودع (حد نموه، يُضبط عند الإنشاء أو بتغيير الحجم / auto-grow)
Allocatedما تشغله الصورة المتفرقة فعلياً في التجمع الآن
Uniqueالبيانات الفعلية الفريدة التي يمتلكها هذا المستودع فقط
Sharedكتل البيانات المُعاد استخدامها عبر المستودعات بواسطة روابط BTRFS المرجعية (نسخ مجانية)
Reclaimableالفجوة بين Allocated والمستخدم فعلياً التي يستطيع repo trim إعادتها إلى التجمع. يُعرض - للمستودعات غير المحمّلة
Discardsما إذا كان الحجم المشفر يُمرّر طلبات discard (on لأي مستودع حُمِّل بإصدار حالي)
Divergenceالنسبة المئوية من الصورة الفريدة لهذا المستودع بدلاً من المشتركة (القيمة الأعلى تعني قدراً أكبر قابلاً للاسترداد عند الحذف)
Fragعدد امتدادات الغيغابايت في صورة copy-on-write (معلوماتي فقط)

Quota والتخصيص رقمان مختلفان بالتصميم: مستودع بحصة 20 جيجابايت يخزن 6 جيجابايت من البيانات لا يُكلّف التجمع إلا ما خصّصه فعلاً. يستطيع التجمع إذن أن يَعِد بحصة إجمالية تفوق حجمه الفعلي، ويُظهر عمود Reclaimable مقدار ما لم يُستخدم من تخصيص كل مستودع وبإمكان trim استرداده.

يُبلّغ ملخص التجمع أسفل الجدول عن مستوى امتلاء مخزن البيانات والمساحة التي تحجزها لقطات النسخ الاحتياطي:

Pool: 265.4 GB used, 95.2 GB free (73.6% full)
Backup snapshots pin 2.1 GB (1 active, 0 stale; stale ones are removed by 'rdc machine prune')

ما دامت نسخة احتياطية جارية، تبقى لقطتها تُشير إلى كل كتلة مشتركة مع المستودعات الحية، فتُحرّر عمليات الحذف وtrim مساحة أقل حتى تنتهي دورة النسخ الاحتياطي وتُحذف اللقطة. تُزال اللقطات القديمة المتبقية من عمليات نسخ احتياطي مقطوعة تلقائياً بواسطة مُدير التخزين في غضون دقائق.

يعرض الملخص إجمالي المدخرات من روابط BTRFS المرجعية:

14 repos, 224.3 GB virtual size
Unique data: 323.7 MB | Shared: 224.0 GB | Efficiency: 99.9%
  • الحجم الافتراضي هو مجموع أحجام صور المستودعات. هذا ما تبدو عليه المستودعات، غير أنه يحسب مزدوجًا الكتل المشتركة عبر الروابط المرجعية.
  • البيانات الفريدة هي التخزين الفعلي الذي تستهلكه بيانات المستودع الموجودة في مستودع واحد فقط. وهذا ما ستحرره عند حذف مستودع.
  • المشترك هو البيانات المُعاد استخدامها عبر المستودعات بواسطة روابط BTRFS المرجعية. يؤدي تفريع مستودع إلى إنشاء نسخ مرجعية تشترك في الكتل حتى يكتب أحد الطرفين بيانات جديدة، عندها تتباعد الكتل.
  • الكفاءة هي نسبة البيانات المُعاد استخدامها عبر الروابط المرجعية. القيمة الأعلى أفضل. الجهاز الذي يحتوي على كثير من تفريعات الأصل ذاته سيُظهر كفاءة قريبة من 100%.

عمود Frag معلوماتي. يحسب امتدادات ملف الصورة copy-on-write، لا الملفات التي يقرأها تطبيقك من داخلها، لذا يُسجّل قيماً مرتفعة في ظل أحمال الكتابة العشوائية الاعتيادية (قواعد البيانات، طبقات الحاويات) ولا يتنبأ بأداء القراءة على التخزين المدعوم بـ SSD. لا يوفر Rediacc عمداً أمر defragment: فـ btrfs filesystem defragment يلغي مشاركة التفريعات والقطع الأثرية المرتبطة بـ reflink، مما قد يُضاعف الاستخدام بشكل كبير على تجمّع قريب من الامتلاء بينما تُظهر الاختبارات أنه لا فائدة ملحوظة في سرعة القراءة. للقياسات الكاملة والمنطق التفصيلي، راجع رقم التجزئة لديك يبدو مخيفاً. قِستُ ما يكلّفه فعلاً..

يعمل الفحص بشكل متوازٍ ويستغرق 5-15 ثانية حسب عدد المستودعات وحجمها. عند عدم تحديد --storage-health، يظهر تلميح من سطر واحد بعد مخرجات الاستعلام كتذكير.

فحص BTRFS

يجدول Rediacc تلقائيًا فحص BTRFS أسبوعيًا على كل جهاز. يقرأ الفحص كل كتلة بيانات في مخزن البيانات، ويتحقق من المجاميع الاختبارية، ويُبلغ عن أي تلف. يكتشف هذا تلف البيانات الصامت (تعفن البت) قبل انتشاره في النسخ الاحتياطية والتفريعات.

يعمل الفحص كل يوم أحد الساعة 02:00 بالتوقيت المحلي للجهاز مع تأخير عشوائي يصل إلى ساعة واحدة. يعمل بأدنى أولوية I/O (ionice idle وnice 19) حتى لا يتعارض مع الخدمات قيد التشغيل. على الأجهزة المدعومة بـ SSD، توقع نحو 8 دقائق لكل 100 غيغابايت من مخزن البيانات.

يُثبَّت مؤقت الفحص تلقائيًا عند أول بدء تشغيل للخدمة بعد ترقية renet. عند تغيير سياسة الفحص في إصدار renet مستقبلي، تُحدِّث نفسها عند بدء التشغيل التالي دون الحاجة إلى أي إجراء من المستخدم.

حالة الفحص

يُحفظ نتيجة آخر فحص خارج حجم BTRFS (في /var/lib/rediacc/scrub-last-result.json) حتى يظل قابلًا للقراءة حتى في حالة وجود مشكلات في الحجم. تتضمن مخرجات rdc machine query --system حقل scrub_status:

"scrub_status": {
  "last_run_human": "3 days ago",
  "status": "ok",
  "total_errors": 0,
  "uncorrectable": 0,
  "duration_seconds": 312
}
الحالةالمعنى
okاكتمل الفحص الأخير دون أخطاء
never_runلم يعمل الفحص بعد (تم تثبيت المؤقت للتو)
overdueمضى على آخر فحص أكثر من 14 يومًا
errors_foundعثر الفحص على عدم تطابق في المجاميع الاختبارية (تحقق من عددَي total_errors وuncorrectable)
failedخرجت عملية الفحص برمز غير صفري

إذا كانت قيمة uncorrectable أكبر من صفر، فلا يمكن إصلاح الكتل المتأثرة تلقائيًا (BTRFS ذو قرص واحد لا يحتوي على نسخة احتياطية زائدة). استعد المستودع المتأثر من أحدث نسخة احتياطية.

الفحص اليدوي

لتشغيل فحص فوري (مثلًا بعد انقطاع التيار الكهربائي أو ترحيل القرص):

rdc term connect -m server-1 -c "sudo renet maintenance scrub --datastore /mnt/rediacc"

تُحفظ النتيجة في ملف JSON ذاته وتظهر فورًا في rdc machine query --system التالي.

حالة Vault

الحصول على نظرة عامة كاملة على جهاز بما في ذلك معلومات النشر:

rdc machine vault-status --name server-1

يوفر هذا:

  • اسم المضيف ووقت التشغيل
  • استخدام الذاكرة والقرص وDatastore
  • إجمالي المستودعات وعدد المثبّتة وعدد Docker قيد التشغيل
  • معلومات تفصيلية لكل مستودع

استخدم --output json للحصول على مخرجات قابلة للقراءة آليًا.

اختبار الاتصال

محوّل السحابة فقط. في المحوّل المحلي، استخدم rdc term connect -m server-1 -c "hostname" للتحقق من الاتصال.

التحقق من اتصال SSH بجهاز:

rdc machine test-connection --ip 203.0.113.50 --user deploy

يُبلغ عن:

  • حالة الاتصال (ناجح/فاشل)
  • طريقة المصادقة المستخدمة
  • تكوين مفتاح SSH
  • حالة نشر المفتاح العام
  • إدخال Known hosts

الخيارات:

  • --port <number>, منفذ SSH (الافتراضي: 22)
  • --save -m server-1, حفظ مفتاح المضيف المتحقق منه في تكوين الجهاز

التشخيصات (doctor)

تشغيل فحص تشخيصي كامل لبيئة Rediacc الخاصة بك:

rdc doctor
الفئةالفحوصات
البيئةإصدار Node.js، إصدار CLI، وضع SEA، تثبيت Go، توفر Docker
Renetموقع الملف الثنائي، الإصدار، CRIU، rsync، أصول SEA المضمنة
التكوينالإعداد النشط، المحوّل، الأجهزة، مفتاح SSH
المحاكاة الافتراضيةالتحقق من إمكانية تشغيل أجهزة افتراضية محلية (rdc ops)

يُبلغ كل فحص عن OK أو تحذير أو خطأ. استخدم هذا كخطوة أولى عند استكشاف أي مشكلة وإصلاحها.

رموز الخروج: 0 = نجاح الكل، 1 = تحذيرات، 2 = أخطاء.

فحوصات جاهزية الخدمات

أثناء repo up، ينتظر renet حتى تقبل خدمات HTTP الاتصالات قبل إعلانها جاهزة. يراعي هذا الانتظار فحوصات صحة Docker على النحو التالي:

  • الحاويات التي يُبلّغ عنها Docker بأنها سليمة تُقبَل فوراً دون أي فحص TCP.
  • الحاويات التي لا تزال ضمن start_period الخاص بفحص صحتها تُسجَّل كملاحظة إعلامية لا تحذيراً؛ يواصل الوكيل إعادة المحاولة حتى ترتبط بمنفذها.
  • خدمات Compose التي لا تملك حاوية قيد التشغيل (مثل تلك الموجودة خلف ملف تعريف غير نشط) تُتخطى.
  • كل ما عدا ذلك يُفحص عبر TCP لمدة أقصاها 15 ثانية (عيّن REDIACC_READINESS_TIMEOUT، بالثواني، لتغيير هذه القيمة).

تعريف فحص صحة Docker على الخدمات بطيئة الإقلاع يمنح renet إشارة جاهزية موثوقة ويُقلّل من الضجيج في مخرجات النشر.