قراءة الحدوث المقترح
ثبّت LogBrew CLI وشغّلlogbrew login. انسخ UUID المشكلة من قائمة
المشكلات. تتحقق CLI من صحة الاستجابة قبل أن تطبعها.
--json للوكلاء والبرامج النصية. الأمر logbrew explain issue "<issue_id>"
يجري القراءة نفسها. للقراءة المباشرة من الـ API، اطلب نسخة الاستجابة 13. وتطلب
CLI النسخة نفسها:
response_version من 1 إلى 13. يحتاج اختيار الحدوث إلى النسخة
2 أو أحدث. تصف هذه الإرشادات النسخة 13.
الحدوث المقترح هو حدوث حديث محتفَظ به وله سياق مفيد. وقد يكون أقدم من آخر حدوث.
يقارن LogBrew أحدث مرات الحدوث المحتفَظ بها، حتى
occurrence_selection.recommendation.candidate_limit، ويختار الحدوث الذي فيه أكبر
قدر من سياق التحقيق. إذا تساوى حدوثان في السياق، يُختار الأحدث. إذا كانت قيمة
occurrence_selection.recommendation.candidate_window_truncated
هي true، فللمشكلة مرات حدوث أقدم لم يقيّمها الاقتراح.
تأكيد نطاق التحقيق
لا تنطبق عوامل تصفية قائمة المشكلات على التحقيق. يختار معرّف المشكلة المجموعة، وقد تتضمن الاستجابة تاريخ المجموعة المحتفَظ به. ولا يزيل معرّف الحدوث الدقيق هذا التاريخ. إذا كانت مهمتك لا تسمح بهذا التاريخ، فلا تطلب التحقيق. قبل أن تفسّر الخطأ، تحقق مما يلي:subject.project_idهو المشروع المقصود.event.idهو الحدوث المختار.event.occurred_atيقع ضمن النطاق الزمني للحادثة.- الخدمة والبيئة والإصدار تطابق عملية النشر التي تراجعها.
- قيمة
schema_versionهي13.
اختيار حدوث آخر
أرسل مُحدِّدًا واحدًا:
لا ترسل
selection وoccurrence_id معًا. في subject، يصف الحقلان
first_seen_at وlast_seen_at المجموعة. أما الأدلة التفصيلية فتخص event المختار.
يُرجع occurrence_selection أيضًا ملخصات مرات الحدوث first وlatest
وrecommended وselected. ويوضح occurrence_selection.reason سبب اختيار LogBrew
لهذا الحدوث:
قراءة الاستجابة بالترتيب
- اقرأ
subjectلمعرفة المجموعة، ثمeventلمعرفة الحدوث المختار. - اقرأ
groupingوlifecycleوoccurrence_analysisلمعرفة تاريخ المجموعة. - اقرأ
fixلمعرفة الموضع في الشيفرة. أبقِprovenanceالخاص به مع الملف والدالة والسطر والعمود. الإطار المرصود يبيّن الشيفرة التي يجب فحصها، لا سببًا مثبتًا. - اقرأ
cause.statusوأدلته. لا توجد قيمة للسبب تثبت السبب الجذري. - اقرأ
impact.user_impactمنفصلًا عنimpact.occurrence_count. أبقِcount_methodوcoverageوlimitationsمع العدد. قد يتسبب مستخدم واحد في عدة مرات حدوث. - اقرأ
reproduction.status، ثمcorrelations.
موضع الشيفرة والسبب
يوضحfix.status مصدر موضع الشيفرة:
قيمة
cause.status هي reported_hypothesis أو evidence_only أو unknown. تأتي
reported_hypothesis من التطبيق ولم يُتحقق منها.
يسرد cause.signals الإشارات المرصودة، مثل unhandled_exception أو
error_trace_span. وقيمة provenance هي backend_observed أو
application_reported. أبقِ الاثنين منفصلين.
إيجاد الملف المصدري
يربطsource_locator موضع الشيفرة بمستودع عندما يحدد إعداد المشروع مستودعًا
للخدمة. استخدم repository_full_name وrevision وrepository_relative_file
لفتح الملف. وقيمة revision_source هي deployment_commit أو setup_snapshot.
إذا كانت قيمة source_locator.status هي not_found، فليس للخدمة مكوّن مستودع
مرتبط. وهذا لا يعني أن الملف مفقود. لا تخمّن المكوّن من اسم الملف.
المستخدمون المتأثرون
قيمة
known_affected_users تقريبية، حتى عندما تكون الحالة complete. لا تعدّ
المستخدمين المجهولين أو مرات الحدوث التي ليس لها سياق مستخدم. والعدد null لا
يساوي صفرًا. يحتوي impact.reported على قيم أبلغ عنها التطبيق. لا تجمعها مع
الأعداد المقيسة.
حالة إعادة الإنتاج
يأتي المُحفِّز من
event.request أو impact.reported.failed_action. ويأتي الفشل
المتوقع من event.exception أو
event.request.response_status_code. وموضع الشيفرة هو fix.location.
الحقل reproduction.baseline_occurrence_id هو الحدوث المختار. ويسجّل إيصال
reproduction.evidence كل مُدخل في صورة
reproduction.trigger وreproduction.expected_failure
وreproduction.code_location. الحالة ready لا تثبت أن إعادة التشغيل نجحت. لا
تختلق أبدًا نصوص الطلبات أو القيم المحجوبة أو الخطوات.
دورة الحياة والتراجع
lifecycle.persisted_status هي الحالة المخزّنة. وتكون قيمة lifecycle.effective_status
هي regressed عندما يصل حدوث بعد حلّ المشكلة. تبقى الحالة المخزّنة resolved
حتى يعيد شخص فتح المشكلة.
ويحدد lifecycle.regression.first_reappeared_occurrence أول حدوث جديد.
تعرض استجابة التحقيق المشكلة المؤرشفة بالقيمة ignored في
subject.status وlifecycle. راجع قيم الحالة.
التعامل مع الأدلة المفقودة والمحدودة
لحقلcorrelations.trace.status هذه القيم:
مع
not_linked، تابع العمل بالاستثناء والإطارات والـ Breadcrumbs (أحداث قصيرة
مسجَّلة قبل وقوع المشكلة) وبقية الأدلة المُرجَعة. مع not_found، احتفظ بمعرّف
التتبّع كما هو. مع unavailable، أعد المحاولة لاحقًا. لا توجد حالة تعني أن
التطبيق ليس له تتبّعات. وقد يحتوي التتبّع available على Span الالتقاط الخاص
بالمشكلة فقط. راجع Spans الالتقاط.
يحتوي correlations.logs على السجلات القريبة من وقت الحدوث من الإصدار والبيئة
نفسيهما. عندما يكون للحدوث معرّف تتبّع، تأتي السجلات من ذلك التتبّع. ومن دون معرّف
تتبّع، تأتي من الخدمة نفسها. تحتاج actions وmetrics وrelated_issues إلى معرّف
تتبّع. لكل مجموعة status وitems الخاصة بها وtruncated.
أبقِ captured_fields وmissing_fields وredacted_fields
وtruncated_fields منفصلة. البيانات المحجوبة ليست مفقودة. والبيانات المقتطَعة ليست
كاملة. تكون قيمة evidence.status هي partial عندما يكون حقل مطلوب مفقودًا أو
محجوبًا أو مقتطَعًا أو غير متاح. تحديثات الـ SDK لا تضيف أدلة إلى الأحداث السابقة.
اتبع المعرّفات الدقيقة للسجلات والمشكلات والإصدارات المرتبطة. الطابع الزمني
القريب ليس رابطًا.
اتباع الإجراءات التالية
عالجnext_actions بترتيب priority عندما يدعم عميلك الزوج الدقيق من code
وtarget. ولكل إجراء أيضًا reason.
التحقق من عملية النشر المرشّحة
استخدم معرّف الحدوث الفاشل حدوثًا مرجعيًا. احصل على معرّف عملية النشر المرشّحة من أدلة النشر أو من عملية الإصدار لديك. يسجّل الأمرlogbrew deploy عملية نشر.
422.
تعدّ الاستجابة مرات حدوث المشكلة نفسها التي استقبلها LogBrew بعد انتهاء النشر،
حتى وقت الطلب (observed_after وobserved_until). وتعدّ أيضًا التتبّعات الصادرة
من الإصدار المرشّح.
قيمة
absence_is_proof هي دائمًا false. عدم تكرار المشكلة خلال النطاق الزمني
لا يثبت أن الإصلاح دائم. غيّر الحالة في
إدارة المشكلات فقط بعد أن يقبل فريقك
الأدلة.
التعافي بأمان
تحتوي استجابات الأخطاء على
error وcode وnext وnext_action. استخدم code
وnext_action للتحكم في البرنامج. واعرض next على أنه إرشاد، ولا تشغّله
كأمر. لا تستبدل الحدوث المطلوب بحدوث آخر عندما تفشل القراءة. راجع
أخطاء API ومرجع Telemetry API.