أود أن أفتح تلقائياً مشكلة في نظام مراقبة Sentry عندما يفشل سير عمل (n8n مستضاف ذاتياً، sentry مستضاف ذاتياً).
توثيق “التعامل مع الأخطاء” يتناول فقط البريد الإلكتروني و Slack و Telegram - وإجراءات عقدة Sentry لا تسمح بإنشاء مشاكل / إرسال أخطاء.
نظام Sentry نفسه قادر على إرسال الأخطاء الداخلية إلى sentry منذ PR 4394، لكن ليس أخطاء سير العمل.
ماذا يمكنني أن أفعل؟
إعجاب واحد (1)
أهلا بك @cweiske!
يمكنك تجاوز عقدة Sentry بالكامل واستخدام Error Trigger + HTTP Request node لإرسال بيانات مباشرة إلى Sentry’s Envelope API (نفس نقطة النهاية التي يستخدمها SDK). قم بإعداد سير عمل منفصل للتعامل مع الأخطاء بـ Error Trigger كعقدة البداية، ثم أضف عقدة HTTP Request تشير إلى https://sentry.example.com/api/<project_id>/envelope/ مع مفتاح DSN الخاص بك في رأس X-Sentry-Auth.
يجب أن يتبع النص (body) صيغة envelope الخاصة بـ Sentry - على الأقل سطر رأس وحمولة حدث في JSON، مفصولة بفواصل أسطر. يمكنك بناء هذا في عقدة Code قبل HTTP Request:
const header = JSON.stringify({event_id: $execution.id.replace(/-/g,''), sent_at: new Date().toISOString(), dsn: 'YOUR_DSN'});
const eventMeta = JSON.stringify({type:'event'});
const event = JSON.stringify({level:'error', message: $json.execution.error.message, logger: $json.workflowData.name});
return [{json: {body: [header, eventMeta, event].join('\n')}}];
اضبط نص HTTP Request على raw/text وأمرّر {{ $json.body }}. هذا يمنحك السيطرة الكاملة على البيانات التي تصل إلى Sentry بدون الحاجة إلى عقدة Sentry على الإطلاق.
إعجاب واحد (1)
حذر صغير واحد قبل ربط هذا بـ Sentry: أرسل حدثًا واتركه Sentry يجمّعه، بدلاً من محاولة إنشاء مشكلة مباشرة. عيّن بصمة مستقرة حتى تنهار المحاولات من نفس سير العمل المعطل/العقدة المعطلة في مشكلة واحدة.
بالنسبة لحمولة Error Trigger، بنِ البصمة من معرّف سير العمل/الاسم، واسم العقدة الفاشلة، ورسالة الخطأ/الفئة. أضف معرّف التنفيذ كعلامة، وليس جزءًا من البصمة. ثم أفشل نفس سير العمل مرتين؛ النتيجة الجيدة هي مشكلة Sentry واحدة بها حدثان، وليس مشكلتان.
هذا يفعل بالضبط ما وصفتموه — Error Trigger -→ بناء مغلف Sentry -→ إرسال POST إلى نقطة /envelope/ الخاصة بك (تخطي عقدة Sentry، كما قال @nguyenthieutoan)، مع بصمة المؤشر المستقرة التي أشار إليها @oimrqs_ops.
البصمة هي [workflow name, failed node, error class + message]، لذا فإن الإخفاقات المتكررة لنفس سير العمل تنهار إلى issue واحد في Sentry؛ معرف التنفيذ يرافقه كوسم، وليس في البصمة. أرسل فشل نفس سير العمل مرتين وتحصل على issue واحد مع حدثين.
تعديلان قبل تشغيله: عنوان URL (your-sentry-host/api/PROJECT_ID/envelope/) و sentry_key في رأس X-Sentry-Auth (مفتاحك العام من DSN). ثم عيّن سير العمل هذا كـ Error Workflow على الأنظمة التي تهتم بها (Settings → Error Workflow) وسيلتقط الأخطاء كلها.
إعجاب واحد (1)