OpenTelemetry، أو OTel، هو إطار عمل مفتوح المصدر لقابلية الملاحظة يشمل مجموعة من مجموعات تطوير البرمجيات (SDKs)، وواجهات برمجة التطبيقات (APIs) غير المرتبطة بمزوِّد محدد، وأدوات أخرى لأدوات القياس والتتبُّع للتطبيقات والأنظمة والأجهزة.
يعمل OTel على تبسيط عملية جمع بيانات القياس عن بُعد، بغض النظر عن لغة البرمجة أو البنية التحتية أو بيئة التشغيل، ويُتيح للمطورين إنشاء وجمع وتصدير بيانات قياس معيارية لأي نظام مراقبة. يعمل هذا الإطار الموحَّد على تعزيز قابلية الملاحظة وتوسيعها، ويوفر لفرق تكنولوجيا المعلومات وعمليات التطوير مرونة أكبر.
يتم تنفيذ OTel بين التطبيقات والأنظمة والأجهزة وحلول الخلفية، مع ترك التخزين والتصور لأدوات أخرى عمدًا، ما يمنح المؤسسات حرية اختيار الأدوات الأنسب لها.
قابلية الملاحظة هي القدرة على اكتساب رؤى حول طريقة العمل الداخلية للنظام من خلال تحليل مخرجاته الخارجية. في عمليات تكنولوجيا المعلومات (ITOps) والحوسبة السحابية، تُستخدم بيانات القياس عن بُعد (مثل السجلات والمقاييس والتتبُّع) لتقييم أداء النظام وحالته الصحية. يعتمد متخصصو عمليات التطوير على أدوات القياس -إضافة تعليمات برمجية إلى التطبيقات والأنظمة لإنتاج وجمع بيانات القياس عن بُعد- لبناء أنظمة قابلة للمراقبة.
غالبًا ما يكون هذا القياس البرمجي مهمة معقدة عند العمل في بيئات حديثة، مثل البيئات السحابية الهجينة ومتعددة السحابات، والتطبيقات القائمة على الخدمات المصغرة، وحاويات Kubernetes، وغيرها من ميزات بيئات الحوسبة الحالية. تمثِّل هذه الأنظمة الموزعة ولغات البرمجة وأوقات التشغيل المختلفة التي تتضمنها مجموعة معقدة من الأدوات للتشغيل والتصدير للتخزين الخلفي والتصور والتحليل.
للحصول على فهم شامل لأداء خدمات الشبكة والتطبيقات، يجب على المهندسين تكوين أدوات قياس مخصصة للتطبيقات والأنظمة عبر كامل البنية التحتية. يساعد OpenTelemetry على حل هذه المشكلة.
يوفر OTel طريقة معيارية لجمع ونقل بيانات قابلية الملاحظة، ما يُسهم في تبسيط عملية المراقبة في الأنظمة الموزعة. فهو يستخدم مكتبات وواجهات برمجة تطبيقات موحَّدة وغير مرتبطة بأي مزوِّد لجمع بيانات القياس عن بُعد وإرسالها إلى الأنظمة الخلفية. من خلال اعتماد OpenTelemetry، يمكن للفرق جمع ومعالجة بيانات القياس عن بُعد بشكل موحَّد عبر الأنظمة المعقدة، بغض النظر عن التطبيقات التي يديرونها أو أدوات المراقبة التي يستخدمونها.
كان كود القياس البرمجي يختلف بشكل كبير. ونظرًا لعدم وجود مزوِّد تجاري واحد يوفر أداة تجمع البيانات من جميع التطبيقات والخدمات على الشبكة، واجهت الشركات صعوبةً في جمع البيانات بتنسيقات ولغات متعددة أو تبديل الأنظمة الخلفية.
على سبيل المثال، إذا أراد فريق تطوير استبدال أدوات الخلفية، فسيضطر إلى إعادة قياس الكود بالكامل وتكوين وكلاء جُدُد لإرسال بيانات القياس عن بُعد إلى الخوادم الجديدة. وعلاوةً على ذلك، أدَّى هذا النهج المجزأ إلى إنشاء صوامع بيانات وإرباك، ما جعل من الصعب استكشاف مشكلات الأداء وحلها بفاعلية.
مثَّل OpenTelemetry تقدُّمًا كبيرًا في أدوات قابلية الملاحظة؛ لأنه قام بتوحيد الطريقة التي يتم بها جمع وتحليل ونقل بيانات القياس عن بُعد إلى الأنظمة الخلفية. فهو يوفر حلًا مفتوح المصدر، قائمًا على معايير مجتمعية، لجمع البيانات حول سلوك النظام وأمانه، ما يساعد الفرق على تبسيط عمليات المراقبة وقابلية الملاحظة في الأنظمة الموزعة. وبالتالي، يوفر OTel للشركات نهجًا مفتوحًا ومتسقًا لجمع البيانات المهمة من تطبيقات وخدمات الشبكة.
تم إنشاء OpenTelemetry من خلال الجمع بين إمكانات التتبُّع الموزعة لكلٍّ من OpenTracing وOpenCensus في أداة واحدة. يُعَد OpenTracing مشروعًا مفتوح المصدر صممته مؤسسة الحوسبة السحابية الأصلية (CNCF) لتزويد المهندسين بواجهة برمجة تطبيقات محايدة من حيث المورِّدين لإضافة أدوات تتبُّع موزعة إلى التطبيقات. وقد أرسى المشروع مجموعة من القواعد الدلالية للمساعدة على ضمان اتساق بيانات القياس عن بُعد.
ومع ذلك، على عكس OpenTelemetry، لم يكن OpenTracing في حد ذاته تنفيذًا للتتبُّع. بل يوفر واجهات يمكن لأنظمة التتبُّع تنفيذها لزيادة التوافق عبر المنصات. أصبح مشروع OpenTracing متوقفًا (ويشجِّع الآن المستخدمين على الانتقال إلى OpenTelemetry)، لكن العديد من البرمجيات وحلول التتبُّع لا تزال تعتمد على واجهات برمجة التطبيقات الخاصة به.
OpenCensus هو مجموعة من مكتبات القياس البرمجي-طوَّرتها Google لجمع مقاييس التطبيقات وتتبُّع العمليات الموزعة- ويمكنها تصدير البيانات إلى منصات خلفية مختلفة في الوقت الفعلي. يجمع البيانات باستخدام علامات التتبُّع والبيانات الوصفية بشكل متسق - وهي فكرة موجودة الآن في OpenTelemetry تحت مُسمَّى "الموارد".
باستخدام OpenCensus، يمكن للتطبيقات استيراد وتصدير البيانات وفقًا لمتطلباتها الخاصة، ما يضمن مرونة في طريقة إرسال المقاييس والتتبُّع إلى منصات قابلية الملاحظة. لم يتم إيقاف OpenCensus رسميًا مثل OpenTracing؛ فهو لا يزال يتلقى تحديثات منتظمة للصيانة والأمان. ومع ذلك، فقد تحوَّل التطوير النشط إلى حد كبير إلى OpenTelemetry.
يهدف كِلا المشروعين إلى معالجة المشكلة نفسها. في ذلك الوقت، لم تكن لدى فرق التطوير طريقة قياسية لتنفيذ التعليمات البرمجية ونقل بيانات القياس عن بُعد إلى أدوات قابلية الملاحظة.
ومع ذلك، لا يمكن لأي مشروع حل هذه المشكلة بمفرده. لذا قامت CNCF برعاية مشروع OpenTelemetry، حيث يجمع بين أفضل الميزات من كل حل. يجمع OpenTelemetry بين توحيد واجهة برمجة التطبيقات في OpenTracing وإمكانيات جمع البيانات في OpenCensus لتوفير منصة واحدة موحَدة لإرسال بيانات القياس عن بُعد وجمعها ونقلها إلى أنظمة قابلية الملاحظة الخلفية.
إن الجزء الأساسي من إدارة الشبكات والتطبيقات السريعة ذات التوافر العالي هو تحقيق إمكانية قابلية الملاحظة (أو الرؤية) للبنية بأكملها، والتي تتطلب الوصول إلى بيانات القياس عن بُعد. تجمع حلول قابلية الملاحظة بيانات القياس عن بُعد وتقوم بمراقبتها وتحليلها لتحديد السلامة، ثم توفِّر فرق تكنولوجيا المعلومات رؤًى قابلة للتنفيذ للإصلاحات والتحسينات.
للحصول على فهم أعمق حول OpenTelemetry، دعنا نتعمَّق في ماهية بيانات القياس عن بُعد وكيف تستخدمها المؤسسات. يدعم OpenTelemetry أنواعًا معينة من البيانات، أي المخرجات التي يتم جمعها من السجلات والمقاييس والتتبُّعات (غالبًا ما يطلق عليها "الركائز الثلاث لقابلية الملاحظة").
المقاييس هي تقييمات رقمية لأداء النظام واستخدام الموارد. توفِّر هذه المقاييس نظرة عامة عالية المستوى عن سلامة الشبكة من خلال جمع مؤشرات الأداء الرئيسية (KPIs) مثل زمن الانتقال، وفقدان الحِزَم، واستخدام النطاق الترددي، واستخدام وحدة المعالجة المركزية للأجهزة.
عادةً ما يتم تلخيص المقاييس باستخدام لوحات المعلومات والتصورات الأخرى. وغالبًا ما تزوِّد الفرق بأولى المؤشرات على وجود مشكلة في أداء النظام أو التطبيق.
السجلات هي سجلات تفصيلية لكل حدث أو إجراء يحدث داخل البيئة. وهي توفِّر معلومات تفصيلية حول ما حدث، ومتى حدث، وأين حدث في الشبكة، ما يمنح الفرق سياقًا قيمًا لاستكشاف الأخطاء وإصلاحها، وتصحيح الأخطاء، والتحليل الجنائي.
تكشف السجلات عن الأسباب الأساسية للمشكلات من خلال تفصيل أحداث النظام مثل تغييرات تكوين الجهاز والمصادقات الفاشلة وانقطاع الاتصالات.
أما التتبعات، فهي تلتقط تدفّق البيانات عبر الشبكة، وتوفّر رؤى حول المسار وسلوك الحزم أثناء انتقالها بين أجهزة وأنظمة متعددة. وتُعد هذه التتبعات ضرورية لفهم الأنظمة الموزعة وتشخيص مشكلات زمن الانتقال.
يُتيح تتبُّع البيانات لفرق تكنولوجيا المعلومات رؤية الرحلة الكاملة للمعاملة، من البداية إلى النهاية، ما يساعد على تحديد التأخيرات والأعطال التي تحدث داخل البيئات المعقدة ومتعددة الطبقات.
يعتمد OpenTelemetry على العديد من العناصر والعمليات لإنجاح جمع البيانات، بما في ذلك:
واجهة برمجة التطبيقات (API) هي مجموعة من القواعد أو البروتوكولات التي تمكِّن تطبيقات البرامج من التواصل مع بعضها لتبادل البيانات والميزات والوظائف.
يوفِّر OpenTelemetry واجهات برمجة تطبيقات خاصةً بكل لغة -مثل Java وRuby وJavaScript وPython وغيرها- يمكن للمطورين استخدامها لإضافة أدوات القياس إلى تطبيقاتهم لجمع بيانات القياس عن بُعد. تفصِل واجهات برمجة التطبيقات في OpenTelemetry التطبيقات عن بنية الشبكة التحتية، ما يمنح الفرق مرونة استخدام أي نقطة نهاية تتوافق مع كود القياس الخاص بهم.
تمكِّن حزم SDKs OpenTelemetry SDKs المهندسين من تكوين سلوك واجهة برمجة التطبيقات وتخصيصها. تشكِّل مجموعات تطوير البرمجيات (SDKs) الجسر بين واجهات برمجة التطبيقات والمجمِّعين وتُتيح إمكانية ربط الأجهزة اليدوية للمكتبات المشتركة بأجهزة التطبيق اليدوية.
يوفر OTel مجموعات SDKs لمجموعة من لغات البرمجة، ليتمكَّن المطورون من استخدام واجهات OTel لإنشاء وتصدير بيانات القياس عن بُعد بما يتوافق مع لغتهم ونظام الخلفية المُختار. تدعم مجموعات SDK الخاصة بـ OTel أيضًا الأجهزة المخصصة لأطر العمل الداخلية التي لم يغطِها مجتمع OpenTelemetry بعد.
المجمِّع هو وكيل يجمع بيانات القياس عن بُعد من التطبيقات التي تم تزويدها بأدوات OpenTelemetry. يتكون المجمِّع من أجهزة استقبال (receivers) ومعالجات (processors) ومجمِّعات (aggregates) ومصدِّرين (exporters)، ويعمل كوسيط مستقل عن المورِّد، حيث يستقبل البيانات من التطبيقات ويحوِّلها إلى منصات قابلية الملاحظة أو وجهات أخرى للتحليل.
يدعم مجمِّع OpenTelemetry حِزَم contrib التي تمكِّنه من استقبال البيانات بعدة تنسيقات -بما في ذلك بروتوكول OpenTelemetry (OTLP) وPrometheus وJaeger- وتصديرها إلى خلفيات مختلفة، أحيانًا بشكل متزامن (لزيادة الاعتمادية). حِزَم contrib هي امتدادات تابعة لجهة خارجية توفِّر لفرق التطوير أدوات القياس، وأجهزة جمع العينات، ووسائل الانتشار، وكاشفات الموارد في شكل وحدات فرعية.
يمكن للمجمِّعات أيضًا معالجة بيانات القياس عن بُعد وتصفيتها قبل تصديرها، بهدف إعطاء أولوية لتسليم البيانات الأكثر أهمية وتسريع عمليات استكشاف الأخطاء وإصلاحها.
المصدِّرات (Exporters) هي جزء من المجمِّع، وتتمثل مسؤوليتها في إرسال بيانات القياس عن بُعد الخاصة بالتطبيق إلى منصة قابلية ملاحظة واحدة أو أكثر محددة. بينما يدير المجمِّع تدفق البيانات العام، تُعطي المصدِّرات الأولوية لنقل البيانات إلى وجهتها.
تقوم مصدِّرات بيانات OpenTelemetry بفصل أدوات القياس عن إعدادات الخلفية، وتحويل البيانات إلى التنسيق المناسب لكل منصة قابلية ملاحظة (مثل تحويل التتبُّع إلى بروتوكول Zipkin). تُتيح هذه الديناميكيات للمجمِّع إرسال بيانات القياس عن بُعد نفسها إلى عدة خلفيات، ما يجعل من السهل تغيير الوجهات دون تعديل منطق أدوات القياس في الكود.
توفِّر الأدوات التلقائية مكتبات وأطر عمل جاهزة تمكِّن التطبيقات من إنشاء بيانات القياس عن بُعد تلقائيًّا مع الحد الأدنى من تغييرات الكود أو دونها. تبسِّط هذه العملية أدوات القياس للمطورين، ما يقلل، وأحيانًا يُلغي، المهام البرمجية اليدوية.
مع ذلك، قد توفِّر الأدوات التلقائية للقياس تحكُّمًا أقل في أنواع معينة من جمع البيانات مقارنةً بالقياس اليدوي. يمكن أن يختلف نطاق القياس التلقائي أيضًا اعتمادًا على بيئات تشغيل اللغة، وبيئات الحوسبة، ومستوى دعم المجتمع لأطر عمل قابلية الملاحظة.
يعمل OpenTelemetry من خلال الجمع بين واجهات برمجة التطبيقات (APIs)، ومجموعات تطوير البرمجيات (SDKs)، والمجمِّعات (collectors)، وعمليات القياس التلقائي لسحب البيانات وإرسالها إلى النظام المستهدف.
أولًا، يضيف فريق عمليات التطوير أدوات القياس إلى كود التطبيق باستخدام واجهات OTel، حيث يحدِّد المقاييس والتتبُّعات والسجلات المُراد جمعها وكيفية جمعها. يعمل مجمِّع OTel SDK على جمع البيانات وتجهيزها للمعالجة والتصدير، ثم يقوم بأخذ عينات منها، وتصفيتها، وربطها بالاعتمادات ومصادر البيانات الأخرى.
عندما يتم تنسيق البيانات التي تمت معالجتها بشكل صحيح، تقوم مجموعة SDK بتجميعها في دفعات زمنية (حيث تخضع لمزيد من التصفية إذا لزم الأمر) ثم إرسالها إلى نظام الخلفية المحدد.
الهدف الرئيسي من OpenTelemetry هو جمع وتصدير بيانات القياس عن بُعد وتعزيز القدرة على المراقبة، لتزويد المؤسسات بأداة تُتيح الحياد من حيث المورِّدين وتسهِّل التكامل مع المنصات والأدوات. يساعد ذلك فرق عمليات التطوير ومهندسي موثوقية المواقع (SREs) على إدارة وتصحيح التطبيقات والأنظمة، ما يمكِّنهم من اتخاذ قرارات أكثر وعيًا والحفاظ على المرونة مع تغيُّر احتياجات العمل.
تشمل فوائد OTel ما يلي: