Parca Agent เป็นตัวสร้างโปรไฟล์การสุ่มตัวอย่างที่ทำงานตลอดเวลาซึ่งใช้ eBPF เพื่อรวบรวมข้อมูลการทำโปรไฟล์ดิบโดยมีค่าใช้จ่ายที่ต่ำมาก โดยจะสังเกตสแต็กเทรซพื้นที่ผู้ใช้และพื้นที่เคอร์เนล 19 ครั้งต่อวินาที และสร้างโปรไฟล์ที่จัดรูปแบบ pprof จากข้อมูลที่แยกออกมา อ่านรายละเอียดเพิ่มเติมในเอกสารประกอบการออกแบบ
ข้อมูลที่รวบรวมสามารถดูได้ในเครื่องผ่านจุดสิ้นสุด HTTP จากนั้นกำหนดค่าให้ส่งไปยังเซิร์ฟเวอร์ Parca เพื่อสอบถามและวิเคราะห์เมื่อเวลาผ่านไป
ดูการเริ่มต้นใช้งาน Kubernetes
Parca Agent ปรับปรุงการรองรับหลายภาษาอย่างต่อเนื่อง รายการภาษาที่เรารองรับในปัจจุบันไม่สมบูรณ์:
โปรดตรวจสอบเอกสารของเราสำหรับข้อมูลเพิ่มเติม
บันทึก
การสนับสนุนภาษาเพิ่มเติมกำลังจะมาในอีกไม่กี่สัปดาห์และเดือนข้างหน้า
ประเภทของโปรไฟล์ที่มีอยู่:
บันทึก
โปรดตรวจสอบเอกสารของเราว่าภาษาของคุณรองรับหรือไม่
โปรไฟล์ประเภทต่อไปนี้จำเป็นต้องมีเครื่องมือที่ชัดเจน:
หากต้องการแก้ไขข้อผิดพลาดที่อาจเกิดขึ้น ให้เปิดใช้งานการบันทึกการแก้ไขข้อบกพร่องโดยใช้ --log-level=debug
Usage: parca-agent
Flags:
-h, --help Show context-sensitive help.
--log-level="info" Log level.
--log-format="logfmt" Configure if structured logging as JSON or as
logfmt
--http-address="127.0.0.1:7071"
Address to bind HTTP server to.
--version Show application version.
--node="hostname" The name of the node that the process is
running on. If on Kubernetes, this must match
the Kubernetes node name.
--config-path="" Path to config file.
--memlock-rlimit=0 The value for the maximum number of bytes
of memory that may be locked into RAM. It is
used to ensure the agent can lock memory for
eBPF maps. 0 means no limit.
--mutex-profile-fraction=0
Fraction of mutex profile samples to collect.
--block-profile-rate=0 Sample rate for block profile.
--profiling-duration=10s The agent profiling duration to use. Leave
this empty to use the defaults.
--profiling-cpu-sampling-frequency=19
The frequency at which profiling data is
collected, e.g., 19 samples per second.
--profiling-perf-event-buffer-poll-interval=250ms
The interval at which the perf event buffer
is polled for new events.
--profiling-perf-event-buffer-processing-interval=100ms
The interval at which the perf event buffer
is processed.
--profiling-perf-event-buffer-worker-count=4
The number of workers that process the perf
event buffer.
--metadata-external-labels=KEY=VALUE;...
Label(s) to attach to all profiles.
--metadata-container-runtime-socket-path=STRING
The filesystem path to the container runtimes
socket. Leave this empty to use the defaults.
--metadata-disable-caching
Disable caching of metadata.
--local-store-directory=STRING
The local directory to store the profiling
data.
--remote-store-address=STRING
gRPC address to send profiles and symbols to.
--remote-store-bearer-token=STRING
Bearer token to authenticate with store
( $ PARCA_BEARER_TOKEN).
--remote-store-bearer-token-file=STRING
File to read bearer token from to
authenticate with store.
--remote-store-insecure Send gRPC requests via plaintext instead of
TLS.
--remote-store-insecure-skip-verify
Skip TLS certificate verification.
--remote-store-batch-write-interval=10s
Interval between batch remote client writes.
Leave this empty to use the default value of
10s.
--remote-store-rpc-logging-enable
Enable gRPC logging.
--remote-store-rpc-unary-timeout=5m
Maximum timeout window for unary gRPC
requests including retries.
--debuginfo-directories=/usr/lib/debug,...
Ordered list of local directories to search
for debuginfo files.
--debuginfo-temp-dir="/tmp"
The local directory path to store the interim
debuginfo files.
--debuginfo-strip Only upload information needed for
symbolization. If false the exact binary the
agent sees will be uploaded unmodified.
--debuginfo-compress Compress debuginfo files' DWARF sections
before uploading.
--debuginfo-upload-disable
Disable debuginfo collection and upload.
--debuginfo-upload-max-parallel=25
The maximum number of debuginfo upload
requests to make in parallel.
--debuginfo-upload-timeout-duration=2m
The timeout duration to cancel upload
requests.
--debuginfo-upload-cache-duration=5m
The duration to cache debuginfo upload
responses for.
--debuginfo-disable-caching
Disable caching of debuginfo.
--symbolizer-jit-disable Disable JIT symbolization.
--otlp-address=STRING The endpoint to send OTLP traces to.
--otlp-exporter="grpc" The OTLP exporter to use.
--object-file-pool-eviction-policy="lru"
The eviction policy to use for the object
file pool.
--object-file-pool-size=100
The maximum number of object files to keep in
the pool. This is used to avoid re-reading
object files from disk. It keeps FDs open,
so it should be kept in sync with ulimits.
0 means no limit.
--dwarf-unwinding-disable Do not unwind using .eh_frame information.
--dwarf-unwinding-mixed Unwind using .eh_frame information and frame
pointers.
--python-unwinding-disable
Disable Python unwinder.
--ruby-unwinding-disable Disable Ruby unwinder.
--analytics-opt-out Opt out of sending anonymous usage
statistics.
--telemetry-disable-panic-reporting
--telemetry-stderr-buffer-size-kb=4096
--bpf-verbose-logging Enable verbose BPF logging.
--bpf-events-buffer-size=8192
Size in pages of the events buffer.
--verbose-bpf-logging [deprecated] Use --bpf-verbose-logging.
Enable verbose BPF logging.
Parca Agent รองรับการติดฉลาก Prometheus ใหม่ ป้ายกำกับต่อไปนี้จะแนบไปกับโปรไฟล์เสมอ:
node
: ชื่อของโหนดที่กระบวนการกำลังทำงานอยู่ตามที่ระบุโดยแฟล็ก --node
comm
: ชื่อคำสั่งของกระบวนการที่กำลังทำโปรไฟล์ และคุณสามารถเลือกแนบป้ายกำกับเพิ่มเติมได้โดยใช้แฟล็ก --metadata-external-labels
การใช้การติดป้ายกำกับใหม่สามารถแนบป้ายกำกับต่อไปนี้กับโปรไฟล์ได้:
__meta_process_pid
: ID กระบวนการของกระบวนการที่กำลังทำโปรไฟล์__meta_process_cmdline
: อาร์กิวเมนต์บรรทัดคำสั่งของกระบวนการที่กำลังทำโปรไฟล์__meta_process_cgroup
: กลุ่ม (หลัก) ของกระบวนการที่กำลังทำโปรไฟล์__meta_process_ppid
: ID กระบวนการหลักของกระบวนการที่กำลังทำโปรไฟล์__meta_process_executable_file_id
: ID ไฟล์ (แฮช) ของไฟล์ปฏิบัติการของกระบวนการที่กำลังทำโปรไฟล์__meta_process_executable_name
: ชื่อฐานของไฟล์เรียกทำงานของกระบวนการที่กำลังทำโปรไฟล์__meta_process_executable_build_id
: build ID ของไฟล์เรียกทำงานของกระบวนการที่กำลังทำโปรไฟล์__meta_process_executable_compiler
: คอมไพเลอร์ที่ใช้ในการสร้างปฏิบัติการของกระบวนการที่กำลังทำโปรไฟล์__meta_process_executable_static
: ไม่ว่าการดำเนินการของกระบวนการที่กำลังทำโปรไฟล์จะเชื่อมโยงแบบคงที่หรือไม่__meta_process_executable_stripped
: ไม่ว่าการเรียกทำงานของกระบวนการที่กำลังทำโปรไฟล์จะถูกแยกออกจาก debuginfo หรือไม่__meta_system_kernel_release
: การเปิดตัวเคอร์เนลของระบบ__meta_system_kernel_machine
: เครื่องเคอร์เนลของระบบ (โดยทั่วไปคือสถาปัตยกรรม)__meta_thread_comm
: ชื่อคำสั่งของเธรดที่กำลังทำโปรไฟล์__meta_thread_id
: PID ของเธรดที่กำลังทำโปรไฟล์__meta_agent_revision
: การแก้ไขตัวแทน__meta_kubernetes_namespace
: เนมสเปซของพ็อดที่กระบวนการกำลังทำงานอยู่__meta_kubernetes_pod_name
: ชื่อของพ็อดที่กระบวนการกำลังทำงานอยู่__meta_kubernetes_pod_label_*
: ค่าของ label *
ของพ็อดที่กระบวนการกำลังทำงานอยู่__meta_kubernetes_pod_labelpresent_*
: มีป้ายกำกับ *
ของพ็อดที่กระบวนการกำลังทำงานอยู่หรือไม่__meta_kubernetes_pod_annotation_*
: ค่าของคำอธิบายประกอบ *
ของพ็อดที่กระบวนการกำลังทำงานอยู่__meta_kubernetes_pod_annotationpresent_*
: มีคำอธิบายประกอบ *
ของพ็อดที่กระบวนการกำลังทำงานอยู่หรือไม่__meta_kubernetes_pod_ip
: IP ของพ็อดที่กระบวนการกำลังทำงานอยู่__meta_kubernetes_pod_container_name
: ชื่อของคอนเทนเนอร์ที่กระบวนการกำลังทำงานอยู่__meta_kubernetes_pod_container_id
: ID ของคอนเทนเนอร์ที่กระบวนการกำลังทำงานอยู่__meta_kubernetes_pod_container_image
: รูปภาพของคอนเทนเนอร์ที่กระบวนการกำลังทำงานอยู่__meta_kubernetes_pod_container_init
: ไม่ว่าคอนเทนเนอร์ที่กระบวนการกำลังทำงานอยู่นั้นเป็นคอนเทนเนอร์ init หรือไม่__meta_kubernetes_pod_ready
: พ็อดที่กระบวนการกำลังทำงานอยู่พร้อมหรือไม่__meta_kubernetes_pod_phase
: เฟสของพ็อดที่กระบวนการกำลังทำงานอยู่__meta_kubernetes_node_name
: ชื่อของโหนดที่กระบวนการกำลังทำงานอยู่__meta_kubernetes_pod_host_ip
: IP โฮสต์ของพ็อดที่กระบวนการกำลังทำงานอยู่__meta_kubernetes_pod_uid
: UID ของพ็อดที่กระบวนการกำลังทำงานอยู่__meta_kubernetes_pod_controller_kind
: ประเภทของคอนโทรลเลอร์ของพ็อดที่กระบวนการกำลังทำงานอยู่__meta_kubernetes_pod_controller_name
: ชื่อของคอนโทรลเลอร์ของพ็อดที่กระบวนการกำลังทำงานอยู่__meta_kubernetes_node_label_*
: ค่าของ label *
ของโหนดที่กระบวนการกำลังทำงานอยู่__meta_kubernetes_node_labelpresent_*
: มีป้ายกำกับ *
ของโหนดที่กระบวนการกำลังทำงานอยู่หรือไม่__meta_kubernetes_node_annotation_*
: ค่าของคำอธิบายประกอบ *
ของโหนดที่กระบวนการกำลังทำงานอยู่__meta_kubernetes_node_annotationpresent_*
: มีคำอธิบายประกอบ *
ของโหนดที่กระบวนการกำลังทำงานอยู่หรือไม่__meta_docker_container_id
: ID ของคอนเทนเนอร์ที่กระบวนการกำลังทำงานอยู่__meta_docker_container_name
: ชื่อของคอนเทนเนอร์ที่กระบวนการกำลังทำงานอยู่__meta_docker_build_kit_container_id
: ID ของคอนเทนเนอร์ที่กระบวนการกำลังทำงานอยู่__meta_containerd_container_id
: ID ของคอนเทนเนอร์ที่กระบวนการกำลังทำงานอยู่__meta_containerd_container_name
: ชื่อของคอนเทนเนอร์ที่กระบวนการกำลังทำงานอยู่__meta_containerd_pod_name
: ชื่อของพ็อดที่กระบวนการกำลังทำงานอยู่__meta_lxc_container_id
: ID ของคอนเทนเนอร์ที่กระบวนการกำลังทำงานอยู่ Parca Agent จำเป็นต้องทำงานในฐานะผู้ใช้ root
(หรือ CAP_SYS_ADMIN
) มีการใช้มาตรการป้องกันด้านความปลอดภัยต่างๆ เพื่อปกป้องผู้ใช้ที่ใช้งาน Parca Agent ดูรายละเอียดในข้อควรพิจารณาด้านความปลอดภัย
หากต้องการรายงานช่องโหว่ด้านความปลอดภัย โปรดดูคำแนะนำนี้
ดูคู่มือการมีส่วนร่วมของเราเพื่อเริ่มต้น!
รหัสพื้นที่ผู้ใช้: Apache 2
รหัสเคอร์เนลสเปซ (ตัวสร้างโปรไฟล์ eBPF): GNU General Public License เวอร์ชัน 2
ขอขอบคุณ: