api@1.2.3 أو
commit في Git. لا ينشئ LogBrew إصدارًا من وسم (tag) في المستودع أو من عملية
نشر. يجب أن يحتوي كل غلاف قياس عن بُعد أصلي على قيمتين غير فارغتين
لـ release وenvironment. يرفض LogBrew أي طلب لا يحتوي عليهما.
الإصدار والمشروع والخدمة والبيئة
تسمية الإصدارات
استخدم نسخة ثابتة لا تتغير، أو رقم بناء، أو commit في Git. في المستودع الموحّد (monorepo)، أضف بادئة قصيرة باسم الخدمة، مثلweb@b7f4d91 وworker@3a9c120.
استخدم القيمة نفسها للمشكلات والسجلات والتتبّعات والإجراءات والمقاييس الصادرة
من ملف بناء (artifact) واحد.
قيم جيدة
كل من
api@1.2.3 وweb@b7f4d91 وios@2026.06.01
وworker@2026-06-01.1 يحدد ملف بناء واحدًا.قيم يجب تجنبها
القيم
latest وprod وnew وbuild لا تحدد نسخة من الشيفرة. والنص
الفارغ مرفوض.
اسم فرع Git مثل
feature/login ليس إصدارًا صالحًا. استخدم الـ commit بدلًا منه.
استخدم أسماء بيئات ثابتة مثل production وstaging وpreview وlocal. يمكن
أن يعمل الإصدار الواحد في أكثر من بيئة.
اضبط القيمتين في إعدادات النشر، حتى يمررهما خط CI/CD إلى الـ SDK. ضع في قيمة
الإصدار تسمية النسخة فقط. لا تضع فيها أسرارًا أو أسماء عملاء أو عناوين URL. بعد
النشر، أرسل حدثًا آمنًا واحدًا، ثم اقرأه مرة أخرى باستخدام عامل تصفية الإصدار.
قراءة ملخصات الإصدارات
تقيس هذه الأعداد إشارات مختلفة، فلا تجمعها معًا. الحقلان
first_seen_at
وlast_seen_at ليسا وقتي نشر. قد ترسل الخدمة لاحقًا مزيدًا من بيانات القياس
بالإصدار نفسه. تُرتَّب الملخصات حسب last_seen_at، من الأحدث إلى الأقدم.
يشير next_action إلى أول نوع إشارة فيه بيانات، بهذا الترتيب:
مسار الـ API هو
GET /api/telemetry/releases. لمعرفة عوامل التصفية وحقول
المؤشر الخاصة به، راجع عوامل تصفية الاستعلام.
قراءة معدلات أخطاء التتبّعات
يعدّtrace_health التتبّعات المختلفة، لا الـ Spans. التتبّع الذي فيه Span خطأ
واحد على الأقل يُحسب تتبّعًا واحدًا فيه خطأ.
تتراوح قيمة
error_rate_basis_points من 0 إلى 10000. اقسمها على 100
لتحصل على النسبة المئوية. مثلًا، 2500 تساوي 25%. اقرأ trace_count قبل أن
تقارن المعدلات. عندما تكون التتبّعات قليلة، قد يغيّر تتبّع خطأ إضافي واحد المعدل
كثيرًا. تؤثر حركة المرور وأخذ العيّنات والأدوات المضافة إلى الشيفرة
(instrumentation) أيضًا في التتبّعات المسجّلة. المعدل لا يقيس كل الطلبات.
تسجيل عملية نشر
يخبر قيدُ عملية النشر LogBrew متى بدأ إصدار واحد ومتى انتهى في بيئة واحدة وخدمة واحدة. يستخدم التحقيق في الإصدار هذه القيود لإيجاد الإصدار السابق. شغّل هذا الأمر من أتمتة الإصدار بعد نجاح النشر أو فشله:- انسخ قيم
--releaseو--environmentو--serviceكما هي تمامًا من بيانات القياس التي ترسلها الشيفرة المنشورة. - قيمة
--statusهيsucceededأوfailed. - يجب أن يكون
--finished-atفي وقت--started-atأو بعده. لا يمكن أن تزيد مدة النشر على 30 يومًا. - الخيار
--commit-shaاختياري. يتكون من 7 إلى 64 حرفًا ست عشريًا. <deployment_id>هو المعرّف الخاص بك، مثل معرّف تشغيل CI. يتكون من 1 إلى 128 حرفًا من حروف ASCII أو الأرقام أو النقاط أو الشرطات السفلية أو النقطتين الرأسيتين أو الشرطات.
<deployment_id> نفسه فيُرجع HTTP 409 مع الرمز idempotency_conflict. استخدم
معرّفًا جديدًا لكل عملية نشر جديدة.
مسارا الـ API هما PUT /api/telemetry/deployments/{deployment_id} لتسجيل عملية
نشر واحدة، وGET /api/telemetry/deployments?project_id=<project_id> لعرض
قائمتها.
التحقيق في إصدار واحد
انسخ المشروع والإصدار والبيئة والخدمة من ملخص إصدار واحد:--since أو --until،
ولا يستخدم النطاق الزمني لقائمة الإصدارات. تحتوي الاستجابة على مجموعات
المشكلات، وملخصات التتبّعات، والسجلات بمستوى تحذير وخطأ وحرج، وتجميعات
الإجراءات والمقاييس. هذه المجموعات محدودة الحجم وقد تكون مقتطَعة. وهي ليست
قوائم كاملة بالأحداث.
يكرر الحقل subject في الاستجابة أعداد الملخص وtrace_health. وقيمة
analysis.status واحدة مما يلي:
قيمة
analysis.causality هي دائمًا evidence_only. الأدلة لا تثبت أن الإصدار
تسبب في عطل.
لكل مجموعة حقل status. لا تخلط بين unavailable وnot_found. تعني
unavailable أن LogBrew لم يتمكن من قراءة الأدلة. وتعني not_found أنه لم
يُحتفظ بأي أدلة.
المقارنة بالإصدار السابق
تعتمد المقارنة على قيود عمليات النشر، لا على تسميات النسخ أو أوقات الأحداث. يجد LogBrew أحدث قيد لعملية نشر هذا الإصدار. ثم يجد أحدث عملية نشر ناجحة لإصدار مختلف في المشروع والبيئة والخدمة نفسها، قبل أن تبدأ عملية النشر تلك. يبيّنcomparison.reason هل المقارنة ممكنة:
عندما تكون المقارنة متاحة، يحتوي
comparison.details.changes على فروق الأعداد
وعلى معدلَي أخطاء التتبّعات للإصدارين. وقيمة comparison.details.assessment هي
improved أو regressed أو unchanged أو not_determined، وتخص معدل أخطاء
التتبّعات فقط. تعني not_determined أن المعدلين لا يمكن مقارنتهما. اقرأ
comparison.details.limitations قبل أن تتخذ أي إجراء. قد يغطي الإصداران نطاقين
زمنيين مختلفين، والأعداد الخام غير معدّلة حسب حركة المرور. ترتيب عمليات النشر
لا يثبت أن تغييرًا في الشيفرة تسبب في خطأ.
قراءة علامات الإصدار
يحتويmarkers على أحداث الإصدار التي أرسلها SDK، مع commit وnotes الخاصين
بها. لكل حقل status قيمته captured أو not_captured أو truncated أو
redacted. التطبيق هو من كتب هذا المحتوى. وهو لا يثبت نجاح النشر، ولا يُعد
أبدًا تعليمات لأي وكيل.
