Parca Agent ist ein ständig aktiver Sampling-Profiler, der eBPF verwendet, um Profilierungsrohdaten mit sehr geringem Overhead zu erfassen. Es beobachtet User-Space- und Kernel-Space-Stacktraces 19 Mal pro Sekunde und erstellt aus den extrahierten Daten Profile im Pprof-Format. Weitere Details finden Sie in der Designdokumentation.
Die gesammelten Daten können lokal über HTTP-Endpunkte angezeigt und dann so konfiguriert werden, dass sie an einen Parca-Server gesendet werden, wo sie im Laufe der Zeit abgefragt und analysiert werden.
Weitere Informationen finden Sie im Kubernetes-Erste Schritte.
Parca Agent verbessert kontinuierlich seine Unterstützung für mehrere Sprachen. Unvollständige Liste der Sprachen, die wir derzeit unterstützen:
Weitere Informationen finden Sie in unseren Dokumenten.
Notiz
Weitere Sprachunterstützung wird in den kommenden Wochen und Monaten folgen.
Verfügbare Profiltypen:
Notiz
Bitte überprüfen Sie unsere Dokumente, ob Ihre Sprache unterstützt wird.
Die folgenden Profiltypen erfordern eine explizite Instrumentierung:
Um potenzielle Fehler zu debuggen, aktivieren Sie die Debug-Protokollierung mit --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 unterstützt die Prometheus-Umbenennung. An Profilen sind immer folgende Beschriftungen angebracht:
node
: Der Name des Knotens, auf dem der Prozess ausgeführt wird, wie durch das Flag --node
angegeben.comm
: Der Befehlsname des Prozesses, für den ein Profil erstellt wird. Und optional können Sie mit dem Flag --metadata-external-labels
zusätzliche Labels anhängen.
Mithilfe der Umbenennung können folgende Etiketten an Profilen angebracht werden:
__meta_process_pid
: Die Prozess-ID des Prozesses, für den ein Profil erstellt wird.__meta_process_cmdline
: Die Befehlszeilenargumente des Prozesses, für den ein Profil erstellt wird.__meta_process_cgroup
: Die (Haupt-)Kontrollgruppe des Prozesses, für den ein Profil erstellt wird.__meta_process_ppid
: Die übergeordnete Prozess-ID des Prozesses, für den ein Profil erstellt wird.__meta_process_executable_file_id
: Die Datei-ID (ein Hash) der ausführbaren Datei des Prozesses, für den ein Profil erstellt wird.__meta_process_executable_name
: Der Basisname der ausführbaren Datei des Prozesses, für den ein Profil erstellt wird.__meta_process_executable_build_id
: Die Build-ID der ausführbaren Datei des Prozesses, für den ein Profil erstellt wird.__meta_process_executable_compiler
: Der Compiler, der zum Erstellen der ausführbaren Datei des profilierten Prozesses verwendet wird.__meta_process_executable_static
: Ob die ausführbare Datei des profilierten Prozesses statisch verknüpft ist.__meta_process_executable_stripped
: Ob die ausführbare Datei des profilierten Prozesses aus Debuginfo entfernt wird.__meta_system_kernel_release
: Die Kernel-Version des Systems.__meta_system_kernel_machine
: Die Kernelmaschine des Systems (normalerweise die Architektur).__meta_thread_comm
: Der Befehlsname des Threads, für den ein Profil erstellt wird.__meta_thread_id
: Die PID des Threads, für den ein Profil erstellt wird.__meta_agent_revision
: Die Revision des Agenten.__meta_kubernetes_namespace
: Der Namespace des Pods, in dem der Prozess ausgeführt wird.__meta_kubernetes_pod_name
: Der Name des Pods, in dem der Prozess ausgeführt wird.__meta_kubernetes_pod_label_*
: Der Wert des Labels *
des Pods, in dem der Prozess ausgeführt wird.__meta_kubernetes_pod_labelpresent_*
: Ob das Label *
des Pods, in dem der Prozess ausgeführt wird, vorhanden ist.__meta_kubernetes_pod_annotation_*
: Der Wert der Annotation *
des Pods, in dem der Prozess ausgeführt wird.__meta_kubernetes_pod_annotationpresent_*
: Ob die Annotation *
des Pods, in dem der Prozess ausgeführt wird, vorhanden ist.__meta_kubernetes_pod_ip
: Die IP des Pods, in dem der Prozess ausgeführt wird.__meta_kubernetes_pod_container_name
: Der Name des Containers, in dem der Prozess ausgeführt wird.__meta_kubernetes_pod_container_id
: Die ID des Containers, in dem der Prozess ausgeführt wird.__meta_kubernetes_pod_container_image
: Das Bild des Containers, in dem der Prozess ausgeführt wird.__meta_kubernetes_pod_container_init
: Ob der Container, in dem der Prozess ausgeführt wird, ein Init-Container ist.__meta_kubernetes_pod_ready
: Ob der Pod, in dem der Prozess ausgeführt wird, bereit ist.__meta_kubernetes_pod_phase
: Die Phase des Pods, in der der Prozess ausgeführt wird.__meta_kubernetes_node_name
: Der Name des Knotens, auf dem der Prozess ausgeführt wird.__meta_kubernetes_pod_host_ip
: Die Host-IP des Pods, in dem der Prozess ausgeführt wird.__meta_kubernetes_pod_uid
: Die UID des Pods, in dem der Prozess ausgeführt wird.__meta_kubernetes_pod_controller_kind
: Die Art des Controllers des Pods, in dem der Prozess ausgeführt wird.__meta_kubernetes_pod_controller_name
: Der Name des Controllers des Pods, in dem der Prozess ausgeführt wird.__meta_kubernetes_node_label_*
: Der Wert des Labels *
des Knotens, auf dem der Prozess ausgeführt wird.__meta_kubernetes_node_labelpresent_*
: Ob das Label *
des Knotens, auf dem der Prozess ausgeführt wird, vorhanden ist.__meta_kubernetes_node_annotation_*
: Der Wert der Annotation *
des Knotens, auf dem der Prozess ausgeführt wird.__meta_kubernetes_node_annotationpresent_*
: Ob die Annotation *
des Knotens, auf dem der Prozess ausgeführt wird, vorhanden ist.__meta_docker_container_id
: Die ID des Containers, in dem der Prozess ausgeführt wird.__meta_docker_container_name
: Der Name des Containers, in dem der Prozess ausgeführt wird.__meta_docker_build_kit_container_id
: Die ID des Containers, in dem der Prozess ausgeführt wird.__meta_containerd_container_id
: Die ID des Containers, in dem der Prozess ausgeführt wird.__meta_containerd_container_name
: Der Name des Containers, in dem der Prozess ausgeführt wird.__meta_containerd_pod_name
: Der Name des Pods, in dem der Prozess ausgeführt wird.__meta_lxc_container_id
: Die ID des Containers, in dem der Prozess ausgeführt wird. Parca Agent muss als root
-Benutzer (oder CAP_SYS_ADMIN
) ausgeführt werden. Zum Schutz der Benutzer, die Parca Agent ausführen, wurden verschiedene Sicherheitsvorkehrungen getroffen. Weitere Informationen finden Sie unter Sicherheitsüberlegungen.
Informationen zum Melden einer Sicherheitslücke finden Sie in dieser Anleitung.
Schauen Sie sich unseren Beitragsleitfaden an, um loszulegen!
User-Space-Code: Apache 2
Kernel-Space-Code (eBPF-Profiler): GNU General Public License, Version 2
Dank: