logbrew login قبل أن تبدأ.
المشكلات ومرات الحدوث
تُرجع قائمة المشكلات ملخصًا للمجموعة، وليس حدثًا كاملًا. اقرأ هذه الحقول قبل أن تفتح التفاصيل:
عدد مرات الحدوث ليس عدد المستخدمين المتأثرين. تنطبق الأعداد والأوقات على النطاق
المُرجَع، لا على تاريخ الأخطاء كله. ويحدّ عامل التصفية
--since أو --until
من مرات الحدوث التي يعدّها LogBrew. عندما تُبلغ عن عدد، فاذكر معه عوامل التصفية
التي أنتجته.
قيم الحالة
كان اسم
archived سابقًا ignored. يختار الاسمان المشكلات نفسها، ويُقبل كلاهما
في الإدخال. يعرض logbrew read وlogbrew issues والإصداران 2 و3 من الـ API
القيمة archived. أما الإصدار 1 من الـ API (الافتراضي)، وبثّ المتابعة المباشرة،
واستجابة التحقيق في المشكلة فتعرض ignored. وتعرض لوحة التحكم هذه الحالات
بالأسماء «غير محلولة» و«محلولة» و«مؤرشفة».
تنطبق الحالة على المشكلة كلها، لا على حدوث واحد. تُظهر الخطورة درجة الإلحاح،
وتوثّق الحالة القرار. أبقِ الاثنين منفصلين. يمكن أن تصبح مشكلة critical بالحالة
resolved بعد إصلاح تم التحقق منه. وتحتفظ المشكلة archived بخطورتها الملتقَطة.
لا يعيد LogBrew فتح مشكلة محلولة تلقائيًا. عندما يصل حدوث جديد بعد الحل، يُبلغ
التحقيق عن lifecycle.effective_status بالقيمة regressed. وتبقى قيمة status
هي resolved إلى أن يعيد شخص فتح المشكلة.
الأولوية
تحدد الأولوية الترتيب الذي يفرز به الفريق المشكلات:
لكل مشكلة أولوية. إذا لم يحددها أحد، فإنها تتبع خطورة المشكلة:
error
وcritical تعطيان high، وwarning تعطي medium، وinfo تعطي low.
عندما تغيّر قاعدة مشكلات الخطورة، تتبع الأولوية triage.effective_severity.
وعندها تكون قيمة priority_source هي derived. وعندما يحدد شخص الأولوية، تبقى
ثابتة وتكون قيمة priority_source هي manual.
لعرض المشكلات التي يجب فحصها أولًا:
إسناد المشكلات
أسند المشكلة لتوضّح من المسؤول عن الخطوة التالية. عدد المسؤولين عن المشكلة 0 أو 1: حساب واحد أو فريق واحد.1
اعرف من يمكن إسناد المشكلة إليه
assignees كل حساب يستطيع قراءة المشروع، مع user_id وname
وemail. وتضم teams كل فريق في المؤسسة التي يتبعها المشروع، مع team_id
وslug وname. لا يمكنك إسناد مشكلة إلى حساب لا يستطيع قراءة المشروع، ولا
إلى فريق من مؤسسة أخرى.2
أسند المشكلة
me بدلًا من معرّف المستخدم لإسناد المشكلة إلى نفسك. واستخدم
logbrew issues unassign "<issue_id>" --json لإزالة المسؤول. أضف
--project لتغيير ما يصل إلى 100 مشكلة في مشروع واحد.3
اقرأ مشكلاتك
--assignee my_teams لمشكلات فرقك، و--assignee "team:<team_id>"
لفريق واحد، و--assignee none للمشكلات التي ليس لها مسؤول.--assignee none. إذا استعاد العضو الوصول، تُظهره
المشكلات مسؤولًا مرة أخرى، ما لم يغيّر أحد المسؤول أو يُزِله في هذه الأثناء.
اعرف مالك المشكلة
suggested_assignee. ولكل
مالك قيمة source:
تعدّ
inputs ما فحصه LogBrew من مسارات إطارات المكدّس والوحدات وقالب المسار
والوسوم والقواعد. إذا كانت القائمة فارغة ولم تُظهر inputs أي مسارات، فهذا يعني
أن المشكلة لا تحمل أدلة يمكن مطابقتها، لا أنها بلا مالك.
اكتب قواعد الملكية في ملف نصي، قاعدة واحدة في كل سطر:
path نهاية مسار إطار المكدّس، لذلك يطابق src/payments/** الإطارات
داخل أي مجلد نشر. ويطابق * أي نص. المالكون عناوين بريد إلكتروني لحسابات أو
#team-slug. وتأتي آخر قاعدة مطابِقة أولًا. ثم أرسل القواعد، أو ملف CODEOWNERS
من GitHub، أو كليهما:
@org/team-slug إلى
الفريق الذي يحمل ذلك الـ slug. والقواعد التي تذكر حسابًا بلا وصول إلى المشروع أو
فريقًا غير معروف تفشل مع 422. ومالكو CODEOWNERS الذين لا يشيرون إلى أحد يظهرون
في unresolved_owners. والملف الفارغ يمسح نصه.
اقرأ تاريخ المشكلة
first_seen. والحساب الذي فقد الوصول إلى المشروع
لا يبقى منه إلا معرّفه. استخدم --limit وقيم next_cursor لقراءة المزيد.
اقرأ صندوق الوارد
unread الإسنادات التي جاءت بعد علامة القراءة. ويحرّك
logbrew inbox read علامة القراءة إلى الآن. لا يرسل LogBrew بريدًا إلكترونيًا
عن هذه الإسنادات. ولا يعرض صندوق الوارد إلا المشاريع التي تستطيع قراءتها الآن.
سير العمل الموصى به
1
اعرض المشكلات غير المحلولة في نطاق واحد
2
اقرأ تفاصيل المشكلة
3
حقّق في حدوث واحد
subject.project_id وevent.occurred_at والإصدار والبيئة بنطاقك. قد يكون
الحدوث الموصى به أقدم من أحدث حدوث. اتبع
التحقيق في مشكلة لمراجعة الأدلة كاملة.4
اتبع أدلة التتبّع فقط عندما تكون متاحة
اقرأ التتبّع فقط عندما تكون قيمة لا تقبل قراءة التتبّع عامل تصفية زمنيًا. إذا كانت الحالة
correlations.trace.status هي available.
استخدم معرّف التتبّع الوارد في الاستجابة. لا تختلق معرّفًا أبدًا.not_linked،
فتابع بأدلة المشكلة.5
تحقّق من النشر المرشّح
استخدم الحدوث الذي حقّقت فيه حدوثًا مرجعيًا. احصل على معرّف النشر من أدلة
النشر أو من عملية الإصدار لديك.عدم تكرار المشكلة خلال نافذة المراقبة لا يُثبت أن الإصلاح دائم. إذا كانت
قيمة
status هي insufficient_traffic أو unavailable، فأبقِ المشكلة
unresolved. اتبع الإجراء التالي المُرجَع.6
غيّر الحالة أو الأولوية أو المسؤول
شغّل أمرًا واحدًا. لا تطلب هذه الأوامر تأكيدًا، لذا تحقّق من معرّف المشكلة
أولًا.دون
--project، يقبل كل أمر معرّف مشكلة واحدًا. تحقّق من رمز الخروج ومن
قيم status وpriority وassignee المُرجَعة. إذا غابت النتيجة، فاقرأ
المشكلة مرة أخرى قبل التغيير التالي.يمكن للبرامج النصية الأقدم استخدام logbrew set issue "<issue_id>" resolved
والاختصارات resolve وignore وreopen. يضبط ignore الحالة
archived.تغيير عدة مشكلات دفعة واحدة
أضف--project لتغيير ما يصل إلى 100 مشكلة في مشروع واحد بأمر واحد:
لكل عنصر
issue_id وoutcome وissue. وissue هي المشكلة بحالتها الحالية،
أو null في حالة not_found. يمكنك تشغيل الأمر نفسه مرة أخرى بعد فشل في
الشبكة. فالمشكلات التي تغيّرت تُظهر unchanged. لأكثر من 100 مشكلة، شغّل أوامر
إضافية. وفي حالة النتيجة not_found، انسخ المعرّف مرة أخرى من قائمة مشكلات ذلك
المشروع. راجع
تحديث المشكلات دفعة واحدة
لمعرفة طلب الـ API.
اختر الحالة التالية
- أبقِها
unresolvedعندما يكون الإخفاق نشطًا أو لم يتم التحقق من الإصلاح. غياب التتبّع ليس سببًا لأرشفة المشكلة. - اضبط
resolvedبعد أن يقبل الفريق أدلة الإصلاح. الإصلاح المقترح ليس دليلًا. - اضبط
archivedلحالة مقبولة أو لإشارة خاصة بالاختبار فقط. ينطبق القرار على كل مرات حدوث المشكلة. لا يحتوي الأمر على حقل للسبب، لذا دوّن السبب في قيود العمل لدى فريقك. - أعد الفتح بالقيمة
unresolvedعندما يصل حدوث جديد بعد الحل. يحددهlifecycle.regression.first_reappeared_occurrence. قارنه بالحدوث الذي استُخدم للحل. لا تنشئ مشكلة مختلفة.
تسليم التحقيق
أعطِ الشخص التالي مراجع، لا تفريغًا خامًا للأحداث:- معرّف المشكلة وحالتها وأولويتها والمسؤول عنها وخطورتها.
- المشروع والخدمة والبيئة والإصدار.
- وقت أول ظهور ووقت آخر ظهور وعدد مرات الحدوث.
- معرّف الحدوث المحدد و
occurrence_selection.reason. fix.statusوcause.statusوقيمةprovenanceلكل منهما.- حالة التتبّع ومعرّفه، إن كانا متاحين.
- حالة إعادة الإنتاج والأدلة المفقودة.
- نتيجة التحقق من النشر المرشّح.
- الإجراء التالي الذي أرجعته الاستجابة.
الاستعادة من أخطاء الـ CLI
تحقّق من رمز خروج العملية قبل أن تحلّل المخرجات. عند النجاح، يذهب JSON إلى المخرجات القياسية. خطأ التحليل ينتهي برمز الخروج2. وخطأ وقت التشغيل ينتهي
برمز الخروج 1. تذهب أخطاء JSON إلى الخطأ القياسي وتحتوي على ok: false
وerror وmessage وnext. اعرض next على أنه إرشاد، ولا تشغّله تلقائيًا.
مثلًا، الأمر logbrew issues archive "<issue_id_1>" "<issue_id_2>" --json
لا يحتوي على --project. لذلك ينتهي برمز الخروج 2 قبل إرسال أي طلب، مع الخطأ
invalid_issue_command.
عندما يرفض الـ API طلبًا، تكون قيمة error هي api_error. اقرأ status لمعرفة
حالة HTTP، وapi_code لمعرفة رمز خطأ الـ API.
الاستجابة الفاشلة لا تُثبت أن تغيير الحالة أو الأولوية أو المسؤول لم يُحدث أثرًا.
اقرأ المشكلة قبل أن تحاول مرة أخرى.
ما الذي يجعل المشكلة مفيدة
- عنوان واضح ورسالة مقروءة.
- بصمة ثابتة.
- إطارات المكدّس، عندما تكون متاحة.
- سياق الإصدار والبيئة والخدمة.
- سياق التتبّع، عندما يُلتقَط مع الحدوث.
- سمات صغيرة وذات صلة، لا تفريغات كاملة للحمولة.
