🎙️ حلقة 27606:54١٩ مايو ٢٠٢٦

دليل Cloudflare Workers Observability لعام

استمع إلى هذه الحلقة

مناقشة تم إنشاؤها بالذكاء الاصطناعي بواسطة أليكس وجيمي

عن هذه الحلقة

انضم للمضيفين أليكس وجيمي في الحلقة دي من Nerd Level Tech البودكاست الذكي وهما بيبسطوا مفاهيم observability في Cloudflare Workers لسنة 2026. اكتشف رؤى أساسية عن إعدادات logging، واستراتيجيات sampling، وفن live debugging—وكمان اتعلم إزاي تطور ممارسات logging بتاعتك عشان تضمن إنك بتسجل البيانات المهمة. سواء كنت شغال على production أو بس عايز تبهر زمايلك في dev meetup الجاي، الدردشة دي مليانة نصايح عملية ولمسة فكاهة عشان تخلي serverless أسهل وأقل لخبطة!

النص المكتوب

[أليكس]: أهلاً بكم من جديد في البودكاست الذكي من نيرد ليفل تك، حيث نجعل التقنيات عديمة الخادم (serverless) تبدو أقل... فوضى.

[جيمي]: وأحياناً، نجعلها ممتعة أيضاً! أنا جيمي، الشخص الذي يسأل دائماً "انتظر، ماذا يعني هذا؟".

[أليكس]: وأنا أليكس، موجود هنا لفك تشابك أحدث التقنيات حتى لا تضطر للبحث بغضب في Stack Overflow الساعة 2 صباحاً.

[جيمي]: حلقة اليوم هي كنز حقيقي لأي شخص يشغل Cloudflare Workers في بيئة الإنتاج... أو يريد فقط التباهي في تجمع المطورين القادم. نحن نحلل "القابلية للملاحظة" (observability) في Cloudflare Workers لعام 2026. تنبيه: الأمر يتجاوز مجرد التحديق في السجلات (logs) وتمني الأفضل.

[أليكس]: نعم فعلاً. نحن نتحدث عن Workers Logs، واستراتيجيات أخذ العينات (sampling)، وتصحيح الأخطاء المباشر باستخدام wrangler tail، والمفضل لدي شخصياً — كيفية إرسال التتبعات (traces) مباشرة إلى Sentry، كل ذلك دون الحاجة لصق SDKs في كل مكان.

[جيمي]: انتظر — يعني لا أحتاج لتثبيت حزمة npm أخرى والصلاة لكي تعمل فعلياً؟

[أليكس]: ليس إلا إذا كنت تريد سحر Sentry الكامل. لكنني استبقت الأحداث. لنبدأ من البداية: كيف تفعل خاصية القابلية للملاحظة في Cloudflare Worker الخاص بك، ولماذا يجب أن تهتم.

[جيمي]: حسناً، اعتراف: كنت أفترض دائماً أن Workers Logs تعمل... تلقائياً. مثل، شغلها وانساها.

[أليكس]: لست مخطئاً تماماً. الـ Workers الجديدة لديها خيار التسجيل (logging) "مفعل" في لوحة التحكم، ولكن — وهذا "لكن" كبيرة — تحتاج إلى إضافة `observability = { enabled = true }` في ملف `wrangler.toml` الخاص بك لتبدأ فعلياً في استيعاب تلك السجلات.

[جيمي]: يعني مجرد تفعيل المفتاح في واجهة المستخدم ليس كافياً؟

[أليكس]: لا. إنه أسلوب Cloudflare الكلاسيكي: الوثائق تقول "أضفها إلى إعداداتك وأعد النشر". وإلا، فإن سجلاتك ستتجاهلك تماماً.

[جيمي]: أوه. لقد مررت بذلك. إذاً، ما القصة مع تنسيقات السجلات؟ لقد رأيت أشخاصاً يستخدمون فقط `console.log("user_id: " + 123)` — هل هذه مشكلة؟

[أليكس]: مشكلة كبيرة في الواقع! لوحة تحكم Workers ذكية — إذا قمت بتسجيل "كائنات" (objects)، مثل `console.log({ user_id: 123 })` ، فستقوم تلقائياً بفهرسة تلك الحقول. وهذا يعني أنه يمكنك البحث في السجلات حسب معرف المستخدم، أو الدولة، أو معرف الطلب، وكل تلك الأشياء الجيدة. لكن إذا سجلت "نصاً" (string)، فسيظهر ككتلة واحدة كبيرة — لا يوجد بحث سريع.

[جيمي]: إذاً، الكائنات جيدة، والنصوص... محزنة.

[أليكس]: بالضبط. ودائماً أضف `request_id` فريداً — ستشكر نفسك مستقبلاً عندما تتبع المشكلات عبر Sentry، وقاعدة بياناتك، وواجهات برمجة التطبيقات الخارجية العشوائية.

[جيمي]: فهمت. إذاً، السجلات مفعلة، ومنظمة، ومرصعة بالمعرفات. ماذا عن أخذ العينات (sampling)؟ أسمع "معدل العينات" وأفكر فوراً في سماعات الرأس الرخيصة.

[أليكس]: [يضحك] لست بعيداً! في هذه الحالة، الأمر يتعلق بالتحكم في التكلفة. يتيح لك `head_sampling_rate` تحديد "النسبة المئوية" للاستدعاءات التي يتم تسجيلها. لذا، `head_sampling_rate = 0.1` يعني أن 10% من الطلبات يتم تسجيلها بالكامل — كل سطر سجل، وكل تتبع.

[جيمي]: انتظر، هل يأخذ عينات من الاستدعاءات، وليس أسطر السجل الفردية؟

[أليكس]: بالضبط! إذا تعرض الـ Worker الخاص بك لملايين الطلبات، فإن تسجيل كل شيء قد يفلسك — أو على الأقل يستهلك باقتك المجانية. أخذ العينات على مستوى الاستدعاء يعني أنك تحصل على الصورة الكاملة للطلبات التي تم اختيارها، ولكنك تتجنب الضجيج والتكلفة للبقية.

[جيمي]: ذكي. إذاً، الخطة المجانية تمنحك... ماذا، 200,000 حدث سجل يومياً؟

[أليكس]: نعم، مع الاحتفاظ بها لمدة 3 أيام. الخطط المدفوعة تشمل 20 مليون حدث شهرياً وتمنحك الاحتفاظ لمدة 7 أيام. بعد ذلك، التكلفة هي 60 سنتاً لكل مليون حدث إضافي — لذا اختر عيناتك بحكمة، وإلا ستواجه غضب الفريق المالي.

[جيمي]: حسناً، السجلات تتدفق. ولكن ماذا لو أردت تصحيح شيء ما "الآن"؟ تحديث لوحات التحكم ليس فكرتي عن الوقت الفعلي.

[أليكس]: هنا يأتي دور `wrangler tail`. إنه يبث السجلات مباشرة إلى جهازك (terminal)، بشكل جميل ومنظم. يمكنك التصفية أيضاً — مثلاً، الأخطاء فقط، أو طلبات POST فقط.

[جيمي]: يعني، يمكنني كتابة `npx wrangler tail --status error` ومشاهدة الانفجارات فقط؟

[أليكس]: بالضبط! ممتع في الحفلات أيضاً. وإذا كنت تريد تتبع طلب معين، فقط ابحث عنه بواسطة `request_id` الخاص به. إنه يعمل في الوقت الفعلي، ومثالي لإطفاء الحرائق التقنية أثناء المناوبة.

[جيمي]: ولكن ماذا عن أخذ العينات؟ هل يقوم `wrangler tail` أيضاً بإسقاط السجلات إذا أصبح العمل مكثفاً؟

[أليكس]: يمكنه ذلك، لكنه سيحذرك عندما يبدأ أخذ العينات. لهذا السبب يعد استخدام الفلاتر أمراً أساسياً — فأنت تريد تضييق التدفق قبل أن تبدأ Cloudflare في إسقاط البيانات.

[جيمي]: معلومة جيدة. إذاً، لنفترض أنني أريد إرسال السجلات إلى مكان آخر — إلى S3 أو Datadog أو Sentry. كيف أختار بين Workers Logs و Tail Workers و Logpush؟

[أليكس]: سؤال رائع. إليك ملخص سريع:
- **Workers Logs** هي حل لوحة تحكم Cloudflare — قابلة للبحث، سهلة، لكنها تبقى في ملعبهم.
- **Logpush** مخصص لدفع السجلات إلى مستودع السجلات الخاص بك — مثل Datadog أو S3 أو Splunk.
- **Tail Workers** للتحكم الأقصى. أنت تكتب Worker لمعالجة السجلات قبل خروجها — لمسح البيانات الشخصية، أو تقسيمها، أو أي شيء آخر — لكنها مدفوعة فقط، وإذا كان الـ tail بطيئاً، فقد يصبح مكلفاً.

[جيمي]: إذاً، إذا كان كل ما أريده هو لوحات تحكم Sentry، هل يمكنني تخطي هذه التعقيدات؟

[أليكس]: في عام 2026؟ بالتأكيد. أطلقت Cloudflare خطوط أنابيب OTel — يمكنك تصدير التتبعات والسجلات إلى Sentry بدون أي تغييرات في الكود. فقط وجه إعدادات القابلية للملاحظة إلى نقطة نهاية Sentry OTLP في لوحة تحكم Cloudflare، وانتهيت.

[جيمي]: انتظر، حقاً؟ لا SDK، ولا حزم إضافية؟

[أليكس]: لا حاجة لأي منها — إلا إذا كنت تريد تجربة Sentry الكاملة: الاستثناءات، وتتبع المسار (breadcrumbs)، وتتبع الإصدارات، وكل الميزات الإضافية.

[جيمي]: وعندها سأقوم بتثبيت SDK الخاص بـ `sentrycloudflare` وأغلف المعالج (handler) الخاص بي؟

[أليكس]: بالضبط. فقط تذكر ضبط `compatibility_flags = ["nodejs_compat"]` في إعدادات wrangler الخاصة بك — فـ AsyncLocalStorage ضروري ليعمل سحر Sentry.

[جيمي]: إذاً، من ناحية التكلفة، إذا كان لدي Worker يقوم، لنقل، بـ 15 مليون طلب شهرياً، فما الذي أتوقعه؟

[أليكس]: في الخطة المدفوعة، هذا يقع ضمن باقة الـ 20 مليون حدث، لذا فأنت مغطى — إلا إذا كنت تسجل السجلات بجنون. حافظ على معدل أخذ عينات معقول، وستظل فاتورتك متوقعة.

[جيمي]: أوف. محفظتي يمكنها التنفس الآن.

[أليكس]: حالياً! [يضحك] ولكن حقاً، القابلية للملاحظة في 2026 تسبق الأيام الخوالي بسنوات ضوئية. تحصل على سجلات منظمة، وتصحيح أخطاء في الوقت الفعلي، وخطوط أنابيب مفتوحة لجميع أدوات التتبع الرئيسية — دون تضخم الـ SDKs.

[جيمي]: هذه هي المرة الأولى التي لا أشعر فيها بالضياع التام وأنا أنظر إلى سجلات Cloudflare. شكراً يا أليكس!

[أليكس]: سعيد دائماً بتوضيح غموض الحوسبة الطرفية (edge) — طلباً واحداً في كل مرة.

[جيمي]: حسناً يا نيردز، هذا كل ما لدينا في حلقة اليوم من البودكاست الذكي. إذا تعلمت شيئاً — أو استمتعت بالدردشة فقط — اضغط على زر الاشتراك وشاركنا مع زميلك المفضل في العمل.

[أليكس]: وإذا كانت لديك أسئلة، أو قصص رعب عن سجلات تعطلت بشكل خاطئ، أرسل لنا ملاحظة! نحن نحب قصص "لقد عطلت بيئة الإنتاج".

[جيمي]: حتى المرة القادمة — حافظوا على سجلاتكم منظمة ومعدلات عيناتكم عاقلة! [موسيقى الختام]