تخطَّ إلى المحتوى
kazma.
البحث في كاظمه والتوثيق
EN

اختبار الفوضى (حقن الأعطال)

اختبار الفوضى (حقن الأعطال)

Section titled “اختبار الفوضى (حقن الأعطال)”

تستطيع كاظمه حقن الأعطال في نفسها: استدعاءات نماذج بطيئة أو فاشلة، واستدعاءات أدوات فاشلة، وكتابات قواعد بيانات فاشلة. وُجد هذا ليُثبت أن مسارات إعادة المحاولة وتحوّل الأعطال ومعالجة الأخطاء تعمل، على خادم اختبار، قبل أن تختبرها أعطال حقيقية. الشيفرة في kazma_core/chaos/__init__.py؛ ومسارات HTTP في kazma_ui/routes_chaos.py.

يُشغِّل الميزةَ KAZMA_CHAOS_ENABLED=true (أو 1 أو yes أو on). بدونه لا تُثبَّت مسارات /api/chaos، وتبقى كل نقطة حقن خامدة حتى لو سجّل شيءٌ ما حقنًا، فلا يمكن لاستدعاء شارد أن يسبب عطلًا حقيقيًا أبدًا. المسارات للمشرفين فقط. لا تشغّله على خادم يعتمد عليه الناس.

يُسمّي الحقنُ هدفًا. ثلاثة أهداف لها نقطة حقن في شيفرة المنتج؛ والبقية موجودة في القائمة لكن لا شيء يفحصها، فالحقن الموجَّه إليها لا يغيّر شيئًا.

الهدفأين يهبط
llm_providerكل محاولة داخل resilient_chat: استدعاء نموذج. الخطأ المحقون 408 أو 429 أو 5xx يُعلَّم عابرًا، فيعمل عليه منطق إعادة المحاولة وتحوّل الأعطال الحقيقي
tool_executorUnifiedToolExecutor.execute (kazma_core/mcp/manager.py)
databasereply_sink.upsert_reply: حفظ ردّ دردشة
message_bus، swarm_engine، gateway_adapter، webhook_handler، cache، external_apiلا نقطة حقن: لا يحدث شيء

أنواع الأعطال: latency، error، timeout، circuit_breaker_open، resource_exhaustion، network_partition، data_corruption، partial_degradation.

كل تجربة تستمر لمدتها، ثم ينتهي مفعول حقنها.

التجربةالهدفالعطلالاحتمال لكل استدعاءتستمر لـ
llm_high_latencyllm_providerكمون 7.5 ثانية30 %60 ثانية
llm_intermittent_errorsllm_providerخطأ 50010 %120 ثانية
llm_timeoutllm_providerمهلة5 %60 ثانية
circuit_breaker_force_openllm_providerقاطع مفتوح50 %30 ثانية
database_slowdatabaseكمون 3 ثوانٍ20 %60 ثانية
database_errorsdatabaseخطأ 5035 %120 ثانية
resource_exhaustiondatabaseاستنزاف الموارد10 %60 ثانية
tool_executor_failurestool_executorخطأ 50010 %60 ثانية
message_bus_partitionmessage_busانقسام10 %30 ثانية — بلا أثر (لا نقطة حقن)
swarm_engine_degradationswarm_engineتدهور جزئي20 %120 ثانية — بلا أثر
gateway_adapter_errorsgateway_adapterخطأ 5025 %60 ثانية — بلا أثر

مسارات HTTP (للمشرفين، فقط عند التفعيل)

Section titled “مسارات HTTP (للمشرفين، فقط عند التفعيل)”
المسارما يفعله
GET /api/chaos/experimentsالتجارب الجاهزة
POST /api/chaos/experiments/{name}/runبدء تجربة
GET /api/chaos/injectionsالحقن النشطة الآن
DELETE /api/chaos/injections/{injection_id}إيقاف حقنة
DELETE /api/chaos/injectionsإيقاف الكل
POST /api/chaos/injections/customبدء حقنة من عندك

الحقنة المخصصة تأخذ failure_type وtarget وprobability (من 0 إلى 1) وduration_seconds (أكبر من 0)، إضافة إلى params اختيارية: latency_ms وerror_code وerror_message وseverity وmetadata. وأي شيء آخر يُرفض بخطأ 400.

chaos_experiment(...) مدير سياق غير متزامن يحقن طوال مدة كتلة، وchaos_injection(target) هو المُزخرف الذي يجعل دالةً ما نقطةَ حقن، وget_injector() يعطي حاقن العملية. أما run_predefined_experiment(name) وlist_predefined_experiments() وlist_active_injections() فهي ما تستدعيه المسارات.