منصوبے کے بارے میں

Grafana Pyroscope ایپلی کیشن کی کارکردگی کے ڈیٹا کو جمع کرنے اور تجزیہ کرنے کے لیے ایک اوپن سورس مسلسل پروفائلنگ پلیٹ فارم ہے۔ اس کا مقصد وسائل کے استعمال کو واضح بنانا ہے: CPU، میموری اور I/O کے رویے کا پورے سسٹم میں جائزہ لیا جا سکتا ہے اور پھر اسے ایک مخصوص سروس، فنکشن یا کوڈ کی ایک واحد لائن تک محدود کیا جا سکتا ہے۔ README میں بیان کردہ عام استعمال فعال اور ردعمل دونوں ہیں۔ فعال طور پر، ٹیمیں وسائل کے استعمال کو کم کر سکتی ہیں، ایپلی کیشن کی کارکردگی کو بہتر بنا سکتی ہیں، یا مسائل کے سامنے آنے سے پہلے لیٹنسی کے مسائل کو روک سکتی ہیں۔ ردعمل کے طور پر، پلیٹ فارم کا مقصد فعال CPU، میموری یا I/O رکاوٹوں کی ڈیبگنگ کے لیے لائن لیول کی تفصیلات کے ساتھ واقعات کو تیزی سے حل کرنا ہے۔ Architecture اس پروجیکٹ کے تین اہم حصے ہیں: - Pyroscope Server: پروفائلنگ ڈیٹا کو اسٹور اور پروسیس کرتا ہے اور کوئریز فراہم کرتا ہے۔ - Clients and instrumentation: پروفائلز Pyroscope language SDKs (push)، Grafana Alloy (pull یا push)، یا OpenTelemetry-مطابق ذرائع جیسے OpenTelemetry eBPF profiler سے OTLP کے ذریعے سرور تک پہنچتے ہیں۔ - Grafana Profiles Drilldown: پروفائلنگ ڈیٹا کے تصور اور تجزیہ کے لیے ایک کوئری لیس انٹرفیس، جسے پہلے Explore Profiles کے نام سے جانا جاتا تھا۔ Pyroscope 2.0 ایک نئے v2 architecture کو ڈیفالٹ بناتا ہے۔ پروفائلز براہ راست object storage میں لکھے جاتے ہیں، جس سے in-memory ingesters اور مقامی ڈسکوں کی ضرورت ختم ہو جاتی ہے، جس کے بارے میں پروجیکٹ کا کہنا ہے کہ اس سے آپریشنز سادہ ہو جاتے ہیں اور بڑے پیمانے پر وسائل کا استعمال کم ہو جاتا ہے۔ Compaction workers پس منظر میں چھوٹے سیگمنٹس کو بڑے بلاکس میں ضم کرتے ہیں، جبکہ کوئریز object storage میں پھیل کر Grafana Profiles Drilldown میں flame graphs بناتی ہیں۔ موجودہ v1 تعیناتیاں ایک جھنڈے (flag) کے ذریعے آپشن منتخب کر سکتی ہیں اور منتقل ہو سکتی ہیں، اور README ریلیز نوٹس، آرکیٹیکچر جائزہ اور مائیگریشن گائیڈ کے لنکس فراہم کرتا ہے۔ Instrumentation and language support Go, Java, Python, Ruby, Node.js, .NET اور Rust کے لیے SDK دستاویزات اور مثالیں دی گئی ہیں۔ SDK- tabased push کے علاوہ، README pull یا push کلیکشن کے لیے Grafana Alloy اور Grafana Alloy کے ذریعے eBPF- tabased auto-instrumentation، cũng as OpenTelemetry-مطابق پروفائلرز سے OTLP ingestion کی طرف اشارہ کرتا ہے۔ پروجیکٹ supported languages کی فہرست اور یہ کہ ہر ایک پر کون سی پروفائلنگ اقسام لاگو ہوتی ہیں، کی دستاویزات فراہم کرتا ہے۔ Getting started سرور کو مقامی طور پر کئی طریقوں سے چلایا جا سکتا ہے: - Docker: docker run -it -p 4040:4040 grafana/pyroscope - Homebrew on macOS/Linux: brew install pyroscope-io/brew/pyroscope, پھر brew services start pyroscope - Binary: تازہ ترین ریلیز سے اپنے OS اور آرکیٹیکچر کے لیے آرکائیو ڈاؤن لوڈ کریں، اسے ان پیک کریں اور ./pyroscope چلائیں۔ سرور پورٹ 4040 پر سنتا ہے۔ README میں Kubernetes/Helm تعیناتی، Linux پیکیجز، سورس سے بنانے اور مکمل سرور کنفیگریشن کے لیے دستاویزات کا حوالہ بھی دیا گیا ہے۔ Grafana Play پر ایک ہوسٹڈ لائیو ڈیمو دستیاب ہے، اور Profiles Drilldown کو Grafana Cloud/OSS میں پروفائلز کو تلاش کرنے کے ڈیفالٹ طریقے کے طور پر پہلے سے انسٹال شدہ بیان کیا گیا ہے۔ Community and licensing پروجیکٹ AGPLv3 کے تحت لائسنس شدہ ہے، اس میں CI اور Go Report Card بیجز ہیں، ریلیزز اور Docker images شائع کرتا ہے، اور Go پیکیج حوالہ جات فراہم کرتا ہے۔ ریپوزٹری میں ایک کنٹری بیوٹر گائیڈ شامل ہے، اور README اس کام کو کریڈٹ دیتا ہے جس پر پلیٹ فارم بنایا گیا ہے، بشمول Brendan Gregg's Flame Graphs، rbspy, py-spy اور phpspy sampling profilers, flamebearer, speedscope، اور وہ شراکتیں جنہوں نے Linux kernel میں BPF-based profiling کو ممکن بنایا۔ مطلوبہ انٹیگریشنز پر فیڈ بیک GitHub issues اور Grafana Slack کے ذریعے طلب کیا جاتا ہے۔