Parca Agent est un profileur d'échantillonnage permanent qui utilise eBPF pour capturer des données de profilage brutes avec une très faible surcharge. Il observe les traces de pile dans l'espace utilisateur et dans l'espace noyau 19 fois par seconde et crée des profils au format pprof à partir des données extraites. Lisez plus de détails dans la documentation de conception.
Les données collectées peuvent être visualisées localement via des points de terminaison HTTP, puis configurées pour être envoyées à un serveur Parca pour être interrogées et analysées au fil du temps.
Consultez la section Mise en route de Kubernetes.
Parca Agent améliore continuellement sa prise en charge de plusieurs langues. Liste incomplète des langues que nous prenons actuellement en charge :
Veuillez consulter nos documents pour plus d'informations.
Note
D’autres langues seront prises en charge dans les semaines et les mois à venir.
Types de profils disponibles :
Note
Veuillez consulter nos documents si votre langue est prise en charge.
Les types de profils suivants nécessitent une instrumentation explicite :
Pour déboguer les erreurs potentielles, activez la journalisation du débogage à l'aide de --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 prend en charge le réétiquetage de Prometheus. Les étiquettes suivantes sont toujours attachées aux profils :
node
: Le nom du nœud sur lequel le processus s'exécute, comme spécifié par l'indicateur --node
.comm
: Le nom de commande du processus en cours de profilage. Et éventuellement, vous pouvez attacher des étiquettes supplémentaires à l'aide de l'indicateur --metadata-external-labels
.
En utilisant le réétiquetage, les étiquettes suivantes peuvent être attachées aux profils :
__meta_process_pid
: ID de processus du processus en cours de profilage.__meta_process_cmdline
: Les arguments de ligne de commande du processus en cours de profilage.__meta_process_cgroup
: Le groupe de contrôle (principal) du processus en cours de profilage.__meta_process_ppid
: ID de processus parent du processus en cours de profilage.__meta_process_executable_file_id
: L'ID de fichier (un hachage) de l'exécutable du processus en cours de profilage.__meta_process_executable_name
: Le nom de base de l'exécutable du processus en cours de profilage.__meta_process_executable_build_id
: L'ID de build de l'exécutable du processus en cours de profilage.__meta_process_executable_compiler
: Le compilateur utilisé pour construire l'exécutable du processus en cours de profilage.__meta_process_executable_static
: indique si l'exécutable du processus en cours de profilage est lié statiquement.__meta_process_executable_stripped
: indique si l'exécutable du processus en cours de profilage est supprimé de debuginfo.__meta_system_kernel_release
: La version du noyau du système.__meta_system_kernel_machine
: La machine noyau du système (généralement l'architecture).__meta_thread_comm
: Le nom de commande du thread en cours de profilage.__meta_thread_id
: Le PID du thread en cours de profilage.__meta_agent_revision
: La révision de l'agent.__meta_kubernetes_namespace
: L'espace de noms du pod dans lequel le processus s'exécute.__meta_kubernetes_pod_name
: Le nom du pod dans lequel le processus s'exécute.__meta_kubernetes_pod_label_*
: La valeur du label *
du pod dans lequel le processus s'exécute.__meta_kubernetes_pod_labelpresent_*
: Si l'étiquette *
du pod dans lequel le processus s'exécute est présente.__meta_kubernetes_pod_annotation_*
: La valeur de l'annotation *
du pod dans lequel le processus s'exécute.__meta_kubernetes_pod_annotationpresent_*
: Si l'annotation *
du pod dans lequel le processus s'exécute est présente.__meta_kubernetes_pod_ip
: L'adresse IP du pod dans lequel le processus s'exécute.__meta_kubernetes_pod_container_name
: Le nom du conteneur dans lequel le processus s'exécute.__meta_kubernetes_pod_container_id
: L'ID du conteneur dans lequel le processus s'exécute.__meta_kubernetes_pod_container_image
: L'image du conteneur dans lequel le processus s'exécute.__meta_kubernetes_pod_container_init
: indique si le conteneur dans lequel le processus s'exécute est un conteneur d'initialisation.__meta_kubernetes_pod_ready
: indique si le pod dans lequel le processus s'exécute est prêt.__meta_kubernetes_pod_phase
: La phase du pod dans lequel le processus s'exécute.__meta_kubernetes_node_name
: Le nom du nœud sur lequel le processus s'exécute.__meta_kubernetes_pod_host_ip
: L'adresse IP de l'hôte du pod dans lequel le processus s'exécute.__meta_kubernetes_pod_uid
: L'UID du pod dans lequel le processus s'exécute.__meta_kubernetes_pod_controller_kind
: le type de contrôleur du pod dans lequel le processus s'exécute.__meta_kubernetes_pod_controller_name
: Le nom du contrôleur du pod dans lequel le processus s'exécute.__meta_kubernetes_node_label_*
: La valeur du label *
du nœud sur lequel le processus s'exécute.__meta_kubernetes_node_labelpresent_*
: Si l'étiquette *
du nœud sur lequel le processus s'exécute est présente.__meta_kubernetes_node_annotation_*
: La valeur de l'annotation *
du nœud sur lequel le processus s'exécute.__meta_kubernetes_node_annotationpresent_*
: Si l'annotation *
du nœud sur lequel le processus s'exécute est présente.__meta_docker_container_id
: L'ID du conteneur dans lequel le processus s'exécute.__meta_docker_container_name
: Le nom du conteneur dans lequel le processus s'exécute.__meta_docker_build_kit_container_id
: L'ID du conteneur dans lequel le processus s'exécute.__meta_containerd_container_id
: L'ID du conteneur dans lequel le processus s'exécute.__meta_containerd_container_name
: Le nom du conteneur dans lequel le processus s'exécute.__meta_containerd_pod_name
: Le nom du pod dans lequel le processus s'exécute.__meta_lxc_container_id
: L'ID du conteneur dans lequel le processus s'exécute. Parca Agent doit être exécuté en tant qu'utilisateur root
(ou CAP_SYS_ADMIN
). Diverses précautions de sécurité ont été prises pour protéger les utilisateurs exécutant Parca Agent. Voir les détails dans Considérations sur la sécurité.
Pour signaler une faille de sécurité, consultez ce guide.
Consultez notre guide de contribution pour commencer !
Code de l'espace utilisateur : Apache 2
Code de l'espace noyau (profileurs eBPF) : GNU General Public License, version 2
Grâce à: