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
: 프로파일링되는 프로세스의 (기본) cgroup입니다.__meta_process_ppid
: 프로파일링되는 프로세스의 상위 프로세스 ID입니다.__meta_process_executable_file_id
: 프로파일링 중인 프로세스 실행 파일의 파일 ID(해시)입니다.__meta_process_executable_name
: 프로파일링 중인 프로세스 실행 파일의 기본 이름입니다.__meta_process_executable_build_id
: 프로파일링 중인 프로세스 실행 파일의 빌드 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
: 프로세스가 실행 중인 Pod의 네임스페이스입니다.__meta_kubernetes_pod_name
: 프로세스가 실행 중인 Pod의 이름입니다.__meta_kubernetes_pod_label_*
: 프로세스가 실행 중인 Pod의 레이블 *
값입니다.__meta_kubernetes_pod_labelpresent_*
: 프로세스가 실행 중인 Pod의 레이블 *
이 있는지 여부입니다.__meta_kubernetes_pod_annotation_*
: 프로세스가 실행 중인 Pod의 주석 *
값입니다.__meta_kubernetes_pod_annotationpresent_*
: 프로세스가 실행 중인 Pod의 주석 *
이 있는지 여부입니다.__meta_kubernetes_pod_ip
: 프로세스가 실행 중인 Pod의 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
: 프로세스가 실행 중인 Pod가 준비되었는지 여부입니다.__meta_kubernetes_pod_phase
: 프로세스가 실행 중인 Pod의 단계입니다.__meta_kubernetes_node_name
: 프로세스가 실행 중인 노드의 이름입니다.__meta_kubernetes_pod_host_ip
: 프로세스가 실행 중인 Pod의 호스트 IP입니다.__meta_kubernetes_pod_uid
: 프로세스가 실행 중인 Pod의 UID입니다.__meta_kubernetes_pod_controller_kind
: 프로세스가 실행 중인 Pod의 컨트롤러 종류입니다.__meta_kubernetes_pod_controller_name
: 프로세스가 실행 중인 Pod의 컨트롤러 이름입니다.__meta_kubernetes_node_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
: 프로세스가 실행 중인 Pod의 이름입니다.__meta_lxc_container_id
: 프로세스가 실행 중인 컨테이너의 ID입니다. Parca Agent는 root
사용자(또는 CAP_SYS_ADMIN
)로 실행되어야 합니다. Parca Agent를 실행하는 사용자를 보호하기 위해 다양한 보안 예방 조치가 취해졌습니다. 보안 고려 사항에서 자세한 내용을 참조하세요.
보안 취약점을 보고하려면 이 가이드를 참조하세요.
시작하려면 기여 가이드를 확인하세요!
사용자 공간 코드: Apache 2
커널 공간 코드(eBPF 프로파일러): GNU General Public License, 버전 2
덕분에: