Agen Parca adalah profiler pengambilan sampel yang selalu aktif yang menggunakan eBPF untuk menangkap data pembuatan profil mentah dengan overhead yang sangat rendah. Ia mengamati pelacakan tumpukan ruang pengguna dan ruang kernel 19 kali per detik dan membangun profil berformat pprof dari data yang diekstraksi. Baca lebih detail di dokumentasi desain.
Data yang dikumpulkan dapat dilihat secara lokal melalui titik akhir HTTP dan kemudian dikonfigurasi untuk dikirim ke server Parca untuk ditanyakan dan dianalisis seiring waktu.
Lihat Cara Memulai Kubernetes.
Agen Parca terus meningkatkan dukungannya untuk berbagai bahasa. Daftar lengkap bahasa yang saat ini kami dukung:
Silakan periksa dokumen kami untuk informasi lebih lanjut.
Catatan
Dukungan bahasa lebih lanjut akan hadir dalam beberapa minggu dan bulan mendatang.
Jenis profil yang tersedia:
Catatan
Silakan periksa dokumen kami jika bahasa Anda didukung.
Jenis profil berikut memerlukan instrumentasi eksplisit:
Untuk men-debug potensi kesalahan, aktifkan logging debug menggunakan --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.
Agen Parca mendukung pelabelan ulang Prometheus. Label berikut selalu dilampirkan pada profil:
node
: Nama node tempat proses berjalan sebagaimana ditentukan oleh flag --node
.comm
: Nama perintah dari proses yang sedang diprofilkan. Dan secara opsional, Anda dapat melampirkan label tambahan menggunakan tanda --metadata-external-labels
.
Dengan menggunakan pelabelan ulang, label berikut dapat dilampirkan ke profil:
__meta_process_pid
: ID proses dari proses yang sedang diprofilkan.__meta_process_cmdline
: Argumen baris perintah dari proses yang sedang diprofilkan.__meta_process_cgroup
: Cgroup (utama) dari proses yang sedang diprofilkan.__meta_process_ppid
: ID proses induk dari proses yang sedang diprofilkan.__meta_process_executable_file_id
: ID file (hash) dari proses yang dapat dieksekusi yang sedang diprofilkan.__meta_process_executable_name
: Nama dasar proses yang dapat dieksekusi yang sedang diprofilkan.__meta_process_executable_build_id
: ID build dari proses yang dapat dieksekusi yang sedang diprofilkan.__meta_process_executable_compiler
: Kompiler yang digunakan untuk membuat executable dari proses yang sedang diprofilkan.__meta_process_executable_static
: Apakah proses yang dapat dieksekusi yang diprofilkan terhubung secara statis.__meta_process_executable_stripped
: Apakah proses yang dapat dieksekusi dari proses yang diprofilkan dihapus dari debuginfo.__meta_system_kernel_release
: Rilis kernel sistem.__meta_system_kernel_machine
: Mesin kernel sistem (biasanya arsitekturnya).__meta_thread_comm
: Nama perintah thread yang sedang diprofilkan.__meta_thread_id
: PID thread yang sedang diprofilkan.__meta_agent_revision
: Revisi agen.__meta_kubernetes_namespace
: Namespace pod tempat proses berjalan.__meta_kubernetes_pod_name
: Nama pod tempat proses berjalan.__meta_kubernetes_pod_label_*
: Nilai label *
pada pod tempat proses dijalankan.__meta_kubernetes_pod_labelpresent_*
: Apakah ada label *
pada pod tempat proses berjalan.__meta_kubernetes_pod_annotation_*
: Nilai anotasi *
dari pod tempat proses berjalan.__meta_kubernetes_pod_annotationpresent_*
: Apakah anotasi *
pada pod tempat proses dijalankan ada.__meta_kubernetes_pod_ip
: IP pod tempat proses berjalan.__meta_kubernetes_pod_container_name
: Nama container tempat proses berjalan.__meta_kubernetes_pod_container_id
: ID container tempat proses berjalan.__meta_kubernetes_pod_container_image
: Gambar container tempat proses sedang berjalan.__meta_kubernetes_pod_container_init
: Apakah container tempat proses berjalan merupakan container init.__meta_kubernetes_pod_ready
: Apakah pod tempat proses dijalankan sudah siap.__meta_kubernetes_pod_phase
: Fase pod tempat proses berjalan.__meta_kubernetes_node_name
: Nama node tempat proses berjalan.__meta_kubernetes_pod_host_ip
: IP host dari pod tempat proses berjalan.__meta_kubernetes_pod_uid
: UID dari pod tempat proses berjalan.__meta_kubernetes_pod_controller_kind
: Jenis pengontrol pod tempat proses dijalankan.__meta_kubernetes_pod_controller_name
: Nama pengontrol pod tempat proses berjalan.__meta_kubernetes_node_label_*
: Nilai label *
dari node tempat proses berjalan.__meta_kubernetes_node_labelpresent_*
: Apakah label *
dari node tempat proses berjalan ada.__meta_kubernetes_node_annotation_*
: Nilai anotasi *
dari node tempat proses berjalan.__meta_kubernetes_node_annotationpresent_*
: Apakah anotasi *
dari node tempat proses berjalan ada.__meta_docker_container_id
: ID kontainer tempat proses berjalan.__meta_docker_container_name
: Nama container tempat proses berjalan.__meta_docker_build_kit_container_id
: ID kontainer tempat proses berjalan.__meta_containerd_container_id
: ID kontainer tempat proses berjalan.__meta_containerd_container_name
: Nama container tempat proses berjalan.__meta_containerd_pod_name
: Nama pod tempat proses berjalan.__meta_lxc_container_id
: ID kontainer tempat proses berjalan. Agen Parca harus dijalankan sebagai pengguna root
(atau CAP_SYS_ADMIN
). Berbagai tindakan keamanan telah diambil untuk melindungi pengguna yang menjalankan Parca Agent. Lihat detailnya di Pertimbangan Keamanan.
Untuk melaporkan kerentanan keamanan, lihat panduan ini.
Lihat Panduan Berkontribusi kami untuk memulai!
Kode ruang pengguna: Apache 2
Kode ruang kernel (profiler eBPF): Lisensi Publik Umum GNU, versi 2
Berkat: