التنميط المستمر لتحليل وحدة المعالجة المركزية واستخدام الذاكرة بمرور الوقت وصولاً إلى رقم السطر. توفير تكلفة البنية التحتية، وتحسين الأداء، وزيادة الموثوقية.
ملف تعريف eBPF : ملف تعريف واحد، يستخدم eBPF، يكتشف تلقائيًا الأهداف من Kubernetes أو systemd عبر البنية التحتية بأكملها مع حمل منخفض جدًا. يدعم C وC++ وRust وGo والمزيد!
المعايير المفتوحة : إنتاج ملفات تعريف بتنسيق pprof باستخدام ملف التعريف المستند إلى eBPF، واستيعاب أي ملفات تعريف بتنسيق pprof مما يسمح باعتماد اللغة على نطاق واسع وإمكانية التشغيل التفاعلي مع الأدوات الموجودة.
التخزين والاستعلام الأمثل : تخزين بيانات ملفات التعريف بكفاءة مع الاحتفاظ بالبيانات الأولية والسماح بتقطيع البيانات وتقطيعها من خلال بحث قائم على التصنيف. تجميع البنية التحتية لبيانات ملفات التعريف على نطاق واسع، أو عرض ملفات تعريف فردية في الوقت المناسب أو المقارنة على أي بُعد.
إذا كان لديك أي ملاحظات، يرجى فتح مناقشة في مناقشات GitHub لهذا المشروع. نحن نحب أن نتعلم ما هو رأيك!
قم بزيارة موقع Parca الإلكتروني للحصول على أدلة ووثائق التثبيت المحدثة والمتعمقة!
parca.dev
يجب أن يكون لديك Go وNode وPnpm مثبتًا.
استنساخ المشروع
git clone https://github.com/parca-dev/parca.git
انتقل إلى دليل المشروع
cd parca
قم ببناء واجهة المستخدم وتجميع ثنائيات Go
make build
تم تجميع الملف الثنائي إلى bin/parca
.
./bin/parca
الآن يتم تشغيل Parca محليًا وتتوفر واجهة مستخدم الويب الخاصة به على http://localhost:7070/.
افتراضيًا، يقوم Parca بإلغاء نقاط نهاية pprof الخاصة به ويجب أن ترى الملفات الشخصية تظهر بمرور الوقت. يمكن تغيير تكوين الكشط في parca.yaml
في جذر المستودع.
الأعلام:
Usage: parca [flags]
Flags:
-h, --help Show context-sensitive help.
--config-path="parca.yaml"
Path to config file.
--mode="all" Scraper only runs a scraper that sends to a
remote gRPC endpoint. All runs all components.
--http-address=":7070" Address to bind HTTP server to.
--http-read-timeout=5s Timeout duration for HTTP server to read
request body.
--http-write-timeout=1m Timeout duration for HTTP server to write
response body.
--port="" (DEPRECATED) Use http-address instead.
--log-level="info" Log level.
--log-format="logfmt" Configure if structured logging as JSON or as
logfmt
--otlp-address=STRING The endpoint to send OTLP traces to.
--otlp-exporter="grpc" The OTLP exporter to use.
--cors-allowed-origins=CORS-ALLOWED-ORIGINS,...
Allowed CORS origins.
--version Show application version.
--path-prefix="" Path prefix for the UI
--mutex-profile-fraction=0
Fraction of mutex profile samples to collect.
--block-profile-rate=0 Sample rate for block profile.
--enable-persistence Turn on persistent storage for the metastore
and profile storage.
--storage-active-memory=536870912
Amount of memory to use for active storage.
Defaults to 512MB.
--storage-path="data" Path to storage directory.
--storage-enable-wal Enables write ahead log for profile storage.
--storage-snapshot-trigger-size=134217728
Number of bytes to trigger a snapshot. Defaults
to 1/4 of active memory. This is only used if
enable-wal is set.
--storage-row-group-size=8192
Number of rows in each row group during
compaction and persistence. Setting to <= 0
results in a single row group per file.
--storage-index-on-disk Whether to store the index on disk instead
of in memory. Useful to reduce the memory
footprint of the store.
--symbolizer-demangle-mode="simple"
Mode to demangle C++ symbols. Default mode
is simplified: no parameters, no templates,
no return type
--symbolizer-number-of-tries=3
Number of tries to attempt to symbolize an
unsybolized location
--debuginfo-cache-dir="/tmp"
Path to directory where debuginfo is cached.
--debuginfo-upload-max-size=1000000000
Maximum size of debuginfo upload in bytes.
--debuginfo-upload-max-duration=15m
Maximum duration of debuginfo upload.
--debuginfo-uploads-signed-url
Whether to use signed URLs for debuginfo
uploads.
--debuginfod-upstream-servers=debuginfod.elfutils.org,...
Upstream debuginfod servers. Defaults to
debuginfod.elfutils.org. It is an ordered
list of servers to try. Learn more at
https://sourceware.org/elfutils/Debuginfod.html
--debuginfod-http-request-timeout=5m
Timeout duration for HTTP request to upstream
debuginfod server. Defaults to 5m
--profile-share-server="api.pprof.me:443"
gRPC address to send share profile requests to.
--store-address=STRING gRPC address to send profiles and symbols to.
--bearer-token=STRING Bearer token to authenticate with store.
--bearer-token-file=STRING
File to read bearer token from to authenticate
with store.
--insecure Send gRPC requests via plaintext instead of
TLS.
--insecure-skip-verify Skip TLS certificate verification.
--external-label=KEY=VALUE;...
Label(s) to attach to all profiles in
scraper-only mode.
تم تطوير Parca في الأصل بواسطة Polar Signals. اقرأ منشور مدونة الإعلان: https://www.polarsignals.com/blog/posts/2021/10/08/introducing-parca-we-got-funded/
تحقق من دليل المساهمة الخاص بنا للبدء! وهو يشرح كيفية تجميع Parca وتشغيله باستخدام Tilt كحاوية في Kubernetes وإرسال طلب سحب.
الشكر موصول لهؤلاء الأشخاص الرائعين (مفتاح الرموز التعبيرية):
فريدريك برانزيك ؟ | ثور ؟ | ماتياس لويبل ؟ | كمال اقويون | سوميرا بريادارسيني |
جيسيكا لينز | هولجر فريثر | سيرجيوس أوربانياك ؟ | باول كروبا ؟ | بن يي ؟ |
فيليكس ؟ | كريستيان بارجمان | يومي إلواندي | مانوج فيفيك | مونيكا فويتشيتشوسكا |
مانويل روجر ؟ | أفيناش أوبادهيايا KR | إيكو أشيمين | ماكسيم برونيه ؟ | روهيت |
أوجوال جويال | خافيير هوندوفيلا كوتو | مارسيل مافليتكولوف | كوتيليا تريباثي | جون سيجر |
فيليب جوف | بوران سيريف | ون لونج | cui fliter | ألفونسو سوبيوتو ماركيز |
توم هيلير | ستيفان فانبورن | كارلوس تاديو باناتو جونيور ؟ | دانيال (شيجون) تشيان | أليكس فيست |
شوبهام بالريوالا | فابيان رينارتز | كارثيك رجا | com.quit4work | بيرت |
محمد س | نيكيليش سوسارلا | فرانكو سانشيز | أندريا سكاربينو | مكسيم نبوكيخ |
يتبع هذا المشروع مواصفات جميع المساهمين. المساهمات من أي نوع موضع ترحيب!
نحن نستخدم Meticulous لاختبار واجهة المستخدم الخاصة بنا تلقائيًا بحثًا عن أي تغييرات غير مرغوب فيها.