إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توفر إمكانية المراقبة رؤى حول الحالة الداخلية وسلوك مهام سير العمل أثناء التنفيذ. يتضمن ذلك إمكانات التسجيل والمقاييس والتتبع التي تساعد في مراقبة مهام سير العمل وتصحيحها.
Tip
تعد إمكانية المراقبة ميزة على مستوى إطار العمل ولا تقتصر على مهام سير العمل. لمزيد من المعلومات، راجع إمكانية الملاحظة.
بصرف النظر عن القياس عن بعد GenAI القياسي، تصدر مهام سير عمل إطار عمل العامل امتدادات وسجلات ومقاييس إضافية لتوفير رؤى أعمق حول تنفيذ سير العمل. تساعد ميزات المراقبة هذه المطورين على فهم تدفق الرسائل وأداء المنفذين وأي أخطاء قد تحدث.
تمكين إمكانية المراقبة
يرجى الرجوع إلى تمكين إمكانية المراقبة للحصول على إرشادات حول تمكين إمكانية المراقبة في تطبيقاتك.
يرجى الرجوع إلى تمكين إمكانية المراقبة للحصول على إرشادات حول تمكين إمكانية المراقبة في تطبيقاتك.
نطاقات سير العمل
يتم إصدار الامتدادات التالية أثناء تنفيذ سير العمل:
| اسم النطاق | Description |
|---|---|
workflow.build |
يتم إصداره لكل بناء سير عمل. |
workflow.session |
النطاق الخارجي الذي يمثل مدة بقاء تنفيذ سير العمل بأكملها، من البداية حتى الإيقاف أو الخطأ. |
workflow_invoke |
يتم إصدارها لكل دورة إدخال إلى توقف داخل جلسة عمل سير العمل. |
executor.process {executor_id} |
يتم إرسالها لكل منفذ يقوم بمعالجة رسالة. يتم إلحاق معرف المنفذ باسم النطاق. |
edge_group.process |
يتم إرسالها لكل مجموعة حافة تعالج رسالة. |
message.send |
يتم إرسالها لكل رسالة يتم إرسالها من منفذ إلى منفذ آخر. |
يتم إصدار الامتدادات التالية أثناء تنفيذ سير العمل:
| اسم النطاق | Description |
|---|---|
workflow.build |
يتم إصداره لكل بناء سير عمل. |
workflow.run |
يتم إصدارها لكل تنفيذ لسير العمل. |
executor.process {executor_id} |
يتم إرسالها لكل منفذ يقوم بمعالجة رسالة. يتم إلحاق معرف المنفذ باسم النطاق. |
edge_group.process {edge_group_type} |
يتم إرسالها لكل مجموعة حافة تعالج رسالة. يتم إلحاق نوع مجموعة الحافة باسم النطاق. |
message.send |
يتم إرسالها لكل رسالة يتم إرسالها من منفذ إلى منفذ آخر. |
يتم إصدار الامتدادات التالية أثناء تنفيذ سير العمل:
| اسم النطاق | Description |
|---|---|
workflow.build |
يتم إصداره لكل بناء سير عمل. |
workflow.session |
النطاق الخارجي الذي يمثل مدة بقاء جلسة تنفيذ سير العمل. |
workflow_invoke |
يتم إصدارها لكل دورة إدخال إلى توقف داخل جلسة عمل سير العمل. |
executor.process {executor_id} |
يتم إرسالها لكل منفذ يقوم بمعالجة رسالة. يتم إلحاق معرف المنفذ باسم النطاق. |
edge_group.process |
يتم إرسالها لكل مجموعة حافة تعالج رسالة. |
message.send |
يتم إرسالها لكل رسالة يتم إرسالها من منفذ إلى آخر. |
خصائص المدى
تحمل الامتدادات سمات توفر سياقا إضافيا حول العملية. يتم تعيين السمات التالية على نطاقات سير العمل:
| Attribute | امتداد (امتدادات) | Description |
|---|---|---|
workflow.id |
workflow.build، workflow.session |
المعرف الفريد لسير العمل. |
workflow.name |
workflow.session |
اسم سير العمل. |
workflow.description |
workflow.session |
وصف سير العمل. |
workflow.definition |
workflow.build |
تعريف JSON للرسم البياني لسير العمل. |
session.id |
workflow.session |
معرف جلسة العمل الفريد. |
executor.id |
executor.process |
المعرف الفريد للمنفذ. |
executor.type |
executor.process |
اسم نوع المنفذ. |
executor.input |
executor.process |
رسالة الإدخال. تعيين فقط عند تمكين البيانات الحساسة. |
executor.output |
executor.process |
إخراج المنفذ. تعيين فقط عند تمكين البيانات الحساسة. |
message.type |
executor.process، message.send |
اسم نوع الرسالة. |
message.content |
message.send |
محتوى الرسالة. تعيين فقط عند تمكين البيانات الحساسة. |
message.source_id |
message.send |
معرف المنفذ الذي أرسل الرسالة. |
message.target_id |
message.send |
معرف المنفذ الهدف، إذا تم تحديده. |
edge_group.type |
edge_group.process |
نوع مجموعة الحافة. |
edge_group.delivered |
edge_group.process |
ما إذا كان قد تم تسليم الرسالة (منطقي). |
edge_group.delivery_status |
edge_group.process |
نتيجة التسليم (راجع حالة تسليم مجموعة Edge). |
error.type |
أي امتداد عند الخطأ | اسم نوع الاستثناء. |
| Attribute | امتداد (امتدادات) | Description |
|---|---|---|
workflow.id |
workflow.build، workflow.run |
المعرف الفريد لسير العمل. |
workflow.name |
workflow.run |
اسم سير العمل. |
workflow.description |
workflow.run |
وصف سير العمل. |
workflow.definition |
workflow.build |
تعريف JSON للرسم البياني لسير العمل. |
workflow_builder.name |
workflow.build |
اسم منشئ سير العمل. |
workflow_builder.description |
workflow.build |
وصف منشئ سير العمل. |
executor.id |
executor.process |
المعرف الفريد للمنفذ. |
executor.type |
executor.process |
اسم نوع المنفذ. |
message.type |
executor.process، message.send |
اسم نوع الرسالة. |
message.payload_type |
executor.process |
نوع بيانات حمولة الرسالة. |
message.destination_executor_id |
message.send |
معرف المنفذ الهدف، إذا تم تحديده. |
message.source_id |
edge_group.process |
معرف المنفذ الذي أرسل الرسالة. |
message.target_id |
edge_group.process |
معرف المنفذ الهدف، إذا تم تحديده. |
edge_group.type |
edge_group.process |
نوع مجموعة الحافة. |
edge_group.id |
edge_group.process |
المعرف الفريد لمجموعة الحافة. |
edge_group.delivered |
edge_group.process |
ما إذا كان قد تم تسليم الرسالة (منطقي). |
edge_group.delivery_status |
edge_group.process |
نتيجة التسليم (راجع حالة تسليم مجموعة Edge). |
| Attribute | امتداد (امتدادات) | Description |
|---|---|---|
workflow.id |
workflow.build، workflow.session، workflow_invoke |
يبدأ سير العمل معرف المنفذ. |
workflow.name |
workflow.session، workflow_invoke |
اسم سير العمل، عند تعيينه. |
workflow.description |
workflow.session، workflow_invoke |
وصف سير العمل، عند تعيينه. |
workflow.definition |
workflow.build |
تعريف JSON للرسم البياني لسير العمل. |
session.id |
workflow.session، workflow_invoke |
معرف جلسة عمل سير العمل. |
executor.id |
executor.process |
معرف المنفذ. |
executor.implementation.id |
executor.process |
معرف تنفيذ المنفذ. |
executor.input |
executor.process |
رسالة الإدخال. تعيين فقط عند تمكين البيانات الحساسة. |
executor.output |
executor.process |
إخراج المنفذ. تعيين فقط عند تمكين البيانات الحساسة. |
message.type |
executor.process |
اسم نوع الرسالة التي تمت معالجتها. |
message.content |
message.send |
محتوى الرسالة. تعيين فقط عند تمكين البيانات الحساسة. |
message.source_id |
edge_group.process، message.send |
معرف المنفذ الذي أرسل الرسالة. |
message.target_id |
edge_group.process، message.send |
معرف المنفذ الهدف، عند تحديده. |
edge_group.type |
edge_group.process |
نوع مجموعة الحافة التي تتم معالجتها. |
edge_group.delivered |
edge_group.process |
ما إذا كان قد تم تسليم الرسالة أم لا. |
edge_group.delivery_status |
edge_group.process |
نتيجة التسليم (راجع حالة تسليم مجموعة Edge). |
error.type |
أي امتداد عند الخطأ | اسم نوع الاستثناء. |
error.message |
أي امتداد عند الخطأ | رسالة الاستثناء. |
أحداث النطاق
أحداث الامتداد هي إدخالات سجل منظمة مرفقة بالامتدادات، ما يوفر مخططا زمنيا لللحظات الرئيسية داخل كل امتداد.
| اسم الحدث | امتداد (امتدادات) | Description |
|---|---|---|
build.started |
workflow.build |
يتم إصداره عند بدء عملية الإنشاء. |
build.validation_completed |
workflow.build |
يتم إصداره عند اجتياز التحقق من صحة البنية. |
build.completed |
workflow.build |
يتم إصداره عند اكتمال البناء بنجاح. |
build.error |
workflow.build |
يتم إصداره عند فشل البنية. |
session.started |
workflow.session |
يتم إصداره عند بدء جلسة عمل سير العمل. |
session.completed |
workflow.session |
يتم إصداره عند اكتمال جلسة عمل سير العمل. |
session.error |
workflow.session |
يتم إصداره عندما تواجه جلسة سير العمل خطأ. |
workflow.started |
workflow_invoke |
يتم إصداره عند بدء استدعاء سير العمل. |
workflow.completed |
workflow_invoke |
يتم إصداره عند اكتمال استدعاء سير العمل. |
workflow.error |
workflow_invoke |
يتم إصداره عندما يواجه استدعاء سير العمل خطأ. |
| اسم الحدث | امتداد (امتدادات) | Description |
|---|---|---|
build.started |
workflow.build |
يتم إصداره عند بدء عملية الإنشاء. |
build.validation_completed |
workflow.build |
يتم إصداره عند اجتياز التحقق من صحة البنية. |
build.completed |
workflow.build |
يتم إصداره عند اكتمال البناء بنجاح. |
build.error |
workflow.build |
يتم إصداره عند فشل البنية. |
workflow.started |
workflow.run |
يتم إصداره عند بدء تشغيل سير العمل. |
workflow.completed |
workflow.run |
يتم إصداره عند اكتمال تشغيل سير العمل. |
workflow.error |
workflow.run |
يتم إصداره عندما يواجه تشغيل سير العمل خطأ. |
| اسم الحدث | امتداد (امتدادات) | Description |
|---|---|---|
build.started |
workflow.build |
يتم إصداره عند بدء عملية الإنشاء. |
build.validation_completed |
workflow.build |
يتم إصداره عند اجتياز التحقق من صحة البنية. |
build.completed |
workflow.build |
يتم إصداره عند اكتمال البناء بنجاح. |
build.error |
workflow.build |
يتم إصداره عند فشل البنية. |
session.started |
workflow.session |
يتم إصداره عند بدء جلسة عمل سير العمل. |
session.completed |
workflow.session |
يتم إصداره عند اكتمال جلسة عمل سير العمل. |
session.error |
workflow.session |
يتم إصداره عندما تواجه جلسة سير العمل خطأ. |
workflow.started |
workflow_invoke |
يتم إصداره عند بدء استدعاء سير العمل. |
workflow.completed |
workflow_invoke |
يتم إصداره عند اكتمال استدعاء سير العمل. |
workflow.error |
workflow_invoke |
يتم إصداره عندما يواجه استدعاء سير العمل خطأ. |
الارتباطات بين الامتدادات
عندما يرسل منفذ رسالة إلى منفذ آخر، يتم إنشاء النطاق message.send كامتداد فرعي للامتداد executor.process . ومع ذلك، فإن executor.process امتداد المنفذ الهدف ليس تابعا للامتداد message.send لأن التنفيذ غير متداخل. بدلا من ذلك، executor.process يتم ربط امتداد المنفذ الهدف بامتداد message.send المنفذ المصدر. ينشئ هذا الارتباط مسارا قابلا للتتبع من خلال تنفيذ سير العمل دون الإشارة إلى تسلسل هرمي للاتصالات المتداخلة.
ينطبق نفس نهج الربط على edge_group.process الامتدادات، والتي ترتبط بامتدادات المصدر message.send لتتبع السببية. يدعم هذا سيناريوهات المروحة حيث تساهم امتدادات المصدر المتعددة في نطاق معالجة واحد.
حالة تسليم مجموعة Edge
تتضمن امتدادات معالجة مجموعة Edge سمات حالة التسليم التي تشير إلى نتيجة توجيه الرسائل عبر كل مجموعة حافة.
edge_group.delivery_status يتم تعيين السمة إلى إحدى القيم التالية:
| Status | Description |
|---|---|
delivered |
تم تسليم الرسالة إلى المنفذ الهدف. |
dropped type mismatch |
لا يمكن للمنفذ الهدف معالجة نوع الرسالة. |
dropped target mismatch |
حددت الرسالة هدفا لا يتطابق مع هذه الحافة. |
dropped condition false |
تم تقييم شرط توجيه الحافة إلى خطأ. |
exception |
حدث استثناء أثناء معالجة الحافة. |
buffered |
تم تخزين الرسالة مؤقتا، في انتظار رسائل إضافية (fan-in). |
edge_group.delivered توفر السمة المنطقية فحصا سريعا لمعرفة ما إذا تم تسليم الرسالة بنجاح.
تكوين بيانات تتبع الاستخدام
يمكن تمكين بيانات تتبع الاستخدام لسير العمل من خلال أسلوب الملحق WithOpenTelemetry على منشئ سير العمل.
WorkflowTelemetryOptions توفر الفئة تحكما دقيقا في الامتدادات التي يتم إصدارها:
| خيار | Default | Description |
|---|---|---|
EnableSensitiveData |
false |
يتضمن المدخلات الأولية والمخرجات ومحتوى الرسالة في سمات النطاق. |
DisableWorkflowBuild |
false |
تعطيل الامتدادات workflow.build . |
DisableWorkflowRun |
false |
workflow.session التعطيل والامتداداتworkflow_invoke. |
DisableExecutorProcess |
false |
تعطيل الامتدادات executor.process . |
DisableEdgeGroupProcess |
false |
تعطيل الامتدادات edge_group.process . |
DisableMessageSend |
false |
تعطيل الامتدادات message.send . |
تحذير
يؤدي تمكين البيانات الحساسة إلى تضمين محتوى الرسائل الأولية ومدخلات المنفذ ومخرجات المنفذ في بيانات تتبع الاستخدام. قم بتمكين ذلك فقط في بيئات آمنة حيث تكون بيانات تتبع الاستخدام محمية بشكل مناسب.
يتم تمكين بيانات تتبع الاستخدام لسير العمل من خلال الوظيفة العمومية enable_instrumentation() . عند تمكين تقرير عن حالة النظام، يتم إصدار جميع نطاقات سير العمل تلقائيا.
configure_otel_providers() يمكن استخدام الدالة لإعداد المصدرين للتتبعات والمقاييس والسجلات.
تحذير
راجع تكوين مسار بيانات تتبع الاستخدام للتأكد من حماية البيانات الحساسة بشكل مناسب عند تصدير التتبعات.
إمكانية مراقبة سير العمل
يمكن تمكين بيانات تتبع الاستخدام لسير العمل باستخدام WithTelemetry على منشئ سير العمل. استخدم حزمة تتبع OpenTelemetry لسير العمل لتوصيل الامتدادات بموفر OpenTelemetry.
تمكين تتبع سير العمل
import workflowotel "github.com/microsoft/agent-framework-go/workflow/observability/opentelemetry"
wf, err := workflow.NewBuilder(startExecutor).
AddEdge(startExecutor, nextExecutor).
WithTelemetry(
workflowotel.New(workflowotel.Config{}),
workflow.TelemetryOptions{EnableSensitiveData: true},
).
Build()
TelemetryOptions يمكن تعطيل إنشاء/تشغيل سير العمل أو عملية المنفذ أو مجموعة الحافة أو نطاقات إرسال الرسائل، ويمكن أن تتضمن مدخلات ومخرجات متسلسلة عند EnableSensitiveData تعيينها.
مراقبة أحداث سير العمل
مراقبة تنفيذ سير العمل من خلال تدفقات الأحداث:
for evt := range run.NewEvents() {
switch e := evt.(type) {
case workflow.ExecutorCompletedEvent:
log.Printf("Executor %s completed", e.ExecutorID)
}
}