عن المشروع

Grafana Pyroscope هي منصة مفتوحة المصدر للتحليل المستمر (continuous profiling) لجمع وتحليل بيانات أداء التطبيقات. هدفها هو جعل استهلاك الموارد مرئياً: حيث يمكن فحص سلوك CPU والذاكرة وI/O عبر النظام بأكمله، ثم تضييق النطاق إلى خدمة معينة، أو دالة، أو حتى سطر واحد من الكود. الاستخدامات النموذجية الموضحة في ملف README هي استباقية وتفاعلية على حد سواء. استباقياً، يمكن للفرق تقليل استهلاك الموارد، أو تحسين أداء التطبيق، أو منع مشكلات زمن الوصول قبل ظهورها. وتفاعلياً، تهدف المنصة إلى حل الحوادث بسرعة، مع توفير تفاصيل على مستوى السطر لتصحيح اختناقات CPU أو الذاكرة أو I/O النشطة. البنية التحتية يتكون المشروع من ثلاثة أجزاء رئيسية: - Pyroscope Server: يقوم بتخزين ومعالجة بيانات التحليل وخدمة الاستعلامات. - العملاء وأدوات القياس (Clients and instrumentation): تصل ملفات التحليل إلى الخادم من خلال Pyroscope language SDKs (دفع/push)، أو من خلال Grafana Alloy (سحب أو دفع)، أو عبر OTLP من المصادر المتوافقة مع OpenTelemetry مثل OpenTelemetry eBPF profiler. - Grafana Profiles Drilldown: واجهة بدون استعلامات لتصور وتحليل بيانات التحليل، وكانت تُعرف سابقاً باسم Explore Profiles. تجعل Pyroscope 2.0 بنية v2 الجديدة هي الافتراضية. حيث تُكتب ملفات التحليل مباشرة إلى object storage، مما يلغي الحاجة إلى ingesters في الذاكرة والأقراص المحلية، وهو ما يذكر المشروع أنه يبسط العمليات ويقلل من استخدام الموارد على نطاق واسع. تقوم عمال الدمج (Compaction workers) بدمج القطع الصغيرة في كتل أكبر في الخلفية، بينما تنتشر الاستعلامات عبر object storage لبناء flame graphs في Grafana Profiles Drilldown. يمكن لعمليات نشر v1 الحالية اختيار التفعيل عبر علامة (flag) والترحيل، ويشير ملف README إلى ملاحظات الإصدار، ونظرة عامة على البنية، ودليل الترحيل. أدوات القياس ودعم اللغات تتوفر وثائق وأمثلة SDK للغات Go وJava وPython وRuby وNode.js و.NET وRust. وبالإضافة إلى الدفع القائم على SDK، يشير ملف README إلى Grafana Alloy للجمع عن طريق السحب أو الدفع، وإلى auto-instrumentation القائم على eBPF عبر Grafana Alloy، بالإضافة إلى استيعاب OTLP من المحللات المتوافقة مع OpenTelemetry. يوثق المشروع قائمة باللغات المدعومة وأنواع التحليل التي تنطبق على كل منها. البدء يمكن تشغيل الخادم محلياً بعدة طرق: - Docker: docker run -it -p 4040:4040 grafana/pyroscope - Homebrew على macOS/Linux: brew install pyroscope-io/brew/pyroscope، ثم brew services start pyroscope - Binary: تحميل الأرشيف لنظام التشغيل والبنية الخاصة بك من أحدث إصدار، وفك ضغطه وتشغيل ./pyroscope يستمع الخادم على المنفذ 4040. كما يشير ملف README إلى وثائق النشر عبر Kubernetes/Helm، وحزم Linux، والبناء من المصدر، وتكوين الخادم الكامل. يتوفر عرض تجريبي مباشر مستضاف على Grafana Play، ويتم وصف Profiles Drilldown على أنها مثبتة مسبقاً في Grafana Cloud/OSS كطريقة افتراضية لاستكشاف الملفات التعريفية. المجتمع والترخيص المشروع مرخص بموجب AGPLv3، ويحتوي على شارات CI وGo Report Card، وينشر الإصدارات وصور Docker، ويوفر مراجع حزم Go. يتضمن المستودع دليلاً للمساهمين، ويشيد ملف README بالعمل الذي بنيت عليه المنصة، بما في ذلك Flame Graphs لـ Brendan Gregg، ومحللات العينات rbspy وpy-spy وphpspy، وflamebearer وspeedscope، والمساهمات التي جعلت التحليل القائم على BPF في نواة Linux ممكناً. يتم طلب التعليقات حول التكاملات المطلوبة من خلال GitHub issues وGrafana Slack.