การทำโปรไฟล์อย่างต่อเนื่องสำหรับการวิเคราะห์ CPU การใช้หน่วยความจำในช่วงเวลาหนึ่ง และลงไปจนถึงหมายเลขบรรทัด ประหยัดต้นทุนโครงสร้างพื้นฐาน ปรับปรุงประสิทธิภาพ และเพิ่มความน่าเชื่อถือ
eBPF Profiler : ตัวสร้างโปรไฟล์เดี่ยวที่ใช้ 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
สร้าง UI และรวบรวมไบนารี Go
make build
ไบนารีถูกคอมไพล์เป็น bin/parca
./bin/parca
ขณะนี้ Parca ทำงานอยู่ในเครื่องและ UI ของเว็บพร้อมใช้งานบน 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/introuring-parca-we-got-funded/
ดูคู่มือการมีส่วนร่วมของเราเพื่อเริ่มต้น! โดยจะอธิบายวิธีการคอมไพล์ Parca รันด้วย Tilt เป็นคอนเทนเนอร์ใน Kubernetes และส่ง Pull Request
ขอขอบคุณผู้คนที่แสนวิเศษเหล่านี้ (คีย์อีโมจิ):
เฟรเดริก แบรนซิค - | ธอร์ - | มัทธิอัส ลอยล์ - | เกมัล อัคโกยุน | สุเมรา ปริยทรรสินี |
เจสสิก้า ลินส์ | โฮลเกอร์ เฟรย์เธอร์ | เซอร์จิอุสซ์ เออร์บาเนียค - | ปาเวล ครูปา - | เบน เย่ - |
เฟลิกซ์ - | คริสเตียน บาร์กมันน์ | โยมิ เอลูวันเด | มาโนจ วิเวก | โมนิก้า วอจเซียโควสกา |
มานูเอล รูเกอร์ - | อวินาช อุปธยายะ KR | อิคโกะ อาชิมิเนะ | แม็กซิม บรูเน็ต - | โรหิต |
อุชวัล โกยัล | ฮาเวียร์ ฮอนดูวิลลา โกโต้ | มาร์เซล มาฟเล็ตคูลอฟ | เกาติลยา ตริปาตี | จอน ซีเกอร์ |
ฟิลิป กอฟ | โบราน เซเรฟ | เหวินหลง | ตัวกรอง Cui | อัลฟองโซ ซูบิออตโต มาร์เกส |
ทอมเฮลลิเออร์ | สเตฟาน แวนบูเรน | คาร์ลอส ตาเดอู ปานาโต จูเนียร์ - | แดเนียล (ซือจุน) เฉียน | อเล็กซ์ เวสท์ |
ชุพฮัม ปาลริวาลา | ฟาเบียน ไรนาร์ตซ์ | คาร์ธิค ราชา | ค่อนข้าง4งาน | เบิร์ต |
โมฮัมหมัด เอส | นิคิเลช ซูซาร์ลา | ฟรังโก ซานเชซ | อันเดรีย สการ์ปิโน | มักซิม นาโบคิก |
โครงการนี้เป็นไปตามข้อกำหนดของผู้มีส่วนร่วมทั้งหมด ยินดีต้อนรับการบริจาคใด ๆ !
เราใช้ Meticulous เพื่อทดสอบ UI ของเราโดยอัตโนมัติสำหรับการเปลี่ยนแปลงที่ไม่ต้องการ