프로젝트 소개

Parca Agent는 eBPF 기반의 상시 샘플링 프로파일러입니다. 낮은 오버헤드로 원시 프로파일링 데이터를 캡처하며, 초당 약 19회 사용자 공간 및 커널 공간 스택 트레이스를 관찰하고 추출된 데이터로 pprof 형식의 프로필을 생성합니다. 수집된 데이터는 로컬 HTTP 엔드포인트를 통해 확인하거나 Parca 서버로 전송하여 쿼리 및 장기 분석에 활용할 수 있습니다. 요구 사항: BTF를 지원하는 Linux 커널 5.3 이상. 에이전트는 root 또는 CAP_SYS_ADMIN 권한으로 실행해야 하며, 프로젝트는 보안 고려 사항과 취약점 보고 절차를 문서화하고 있습니다. 언어 지원은 광범위하며 계속 발전 중으로, C, C++, Go(확장 지원 포함), Rust, .NET, Deno, Erlang, Java, Julia, Node.js, Wasmtime, PHP 8+, Ruby, Python을 포함합니다. On-CPU 프로필을 사용할 수 있으며, 네트워크 사용량과 할당 정보는 계획된 기능으로 명시되어 있습니다. 고루틴과 같은 런타임별 정보는 명시적인 계측이 필요합니다. 설정은 명령줄 플래그 또는 --config-path를 통한 YAML 파일로 제공할 수 있으며, 플래그가 파일 값보다 우선합니다. 문서화된 옵션은 로깅, HTTP 주소, 프로파일링 빈도 및 지속 시간, 확률적 프로파일링, 메타데이터 라벨, 로컬 및 원격 저장소, 디버그 정보 처리, OTLP 내보내기, eBPF 버퍼 및 맵 튜닝, 오프라인 모드, CUDA 실행 계측을 다룹니다. 프로필에는 항상 node, comm, cpu, thread_id, thread_name과 같은 라벨이 포함되며, 선택적으로 외부 라벨을 추가할 수 있습니다. Prometheus 스타일의 리라벨링을 통해 프로세스 세부 정보, 시스템 커널 정보, Kubernetes, Docker, containerd, LXC 컨테이너 속성 등 대규모 디스커버리 메타데이터를 첨부할 수 있습니다. 두 가지 예시 설정이 제공됩니다. 하나는 에이전트 자체 라벨 이름으로 Kubernetes 메타데이터를 승격하는 방식이고, 다른 하나는 OTLP 내보내기를 위해 OpenTelemetry 시맨틱 컨벤션 이름을 사용하는 방식입니다. 사용자 공간 코드는 Apache 2 라이선스이며, 커널 공간 eBPF 프로파일러는 GPLv2입니다. 이 프로젝트는 Inspektor Gadget에서 영감을 받았다고 밝히고 있습니다.