Perfil contínuo para análise de CPU, uso de memória ao longo do tempo e até o número da linha. Economizando custos de infraestrutura, melhorando o desempenho e aumentando a confiabilidade.
eBPF Profiler : Um único profiler, usando eBPF, descobrindo automaticamente alvos do Kubernetes ou systemd em toda a infraestrutura com sobrecarga muito baixa. Suporta C, C++, Rust, Go e muito mais!
Padrões abertos : ambos produzem perfis formatados em pprof com o criador de perfil baseado em eBPF e ingerem quaisquer perfis formatados em pprof, permitindo ampla adoção de linguagem e interoperabilidade com ferramentas existentes.
Armazenamento e consulta otimizados : armazenamento eficiente de dados de criação de perfil, ao mesmo tempo em que retém dados brutos e permite fatiar e dividir dados por meio de uma pesquisa baseada em rótulos. Agregue perfis de dados em toda a infraestrutura, visualize perfis únicos em tempo hábil ou compare em qualquer dimensão.
Se você tiver algum comentário, abra uma discussão nas discussões do GitHub deste projeto. Adoraríamos saber o que você pensa!
Verifique o site da Parca para guias de instalação e documentação atualizados e detalhados!
parque.dev
Você precisa ter Go, Node e Pnpm instalados.
Clonar o projeto
git clone https://github.com/parca-dev/parca.git
Vá para o diretório do projeto
cd parca
Construa a UI e compile os binários Go
make build
O binário foi compilado para bin/parca
.
./bin/parca
Agora o Parca está rodando localmente e sua UI web está disponível em http://localhost:7070/.
Por padrão, o Parca está copiando seus próprios endpoints pprof e você deverá ver os perfis aparecerem ao longo do tempo. A configuração do scrape pode ser alterada em parca.yaml
na raiz do repositório.
Bandeiras:
Usage: parca [flags]
Flags:
-h, --help Show context-sensitive help.
--config-path="parca.yaml"
Path to config file.
--mode="all" Scraper only runs a scraper that sends to a
remote gRPC endpoint. All runs all components.
--http-address=":7070" Address to bind HTTP server to.
--http-read-timeout=5s Timeout duration for HTTP server to read
request body.
--http-write-timeout=1m Timeout duration for HTTP server to write
response body.
--port="" (DEPRECATED) Use http-address instead.
--log-level="info" Log level.
--log-format="logfmt" Configure if structured logging as JSON or as
logfmt
--otlp-address=STRING The endpoint to send OTLP traces to.
--otlp-exporter="grpc" The OTLP exporter to use.
--cors-allowed-origins=CORS-ALLOWED-ORIGINS,...
Allowed CORS origins.
--version Show application version.
--path-prefix="" Path prefix for the UI
--mutex-profile-fraction=0
Fraction of mutex profile samples to collect.
--block-profile-rate=0 Sample rate for block profile.
--enable-persistence Turn on persistent storage for the metastore
and profile storage.
--storage-active-memory=536870912
Amount of memory to use for active storage.
Defaults to 512MB.
--storage-path="data" Path to storage directory.
--storage-enable-wal Enables write ahead log for profile storage.
--storage-snapshot-trigger-size=134217728
Number of bytes to trigger a snapshot. Defaults
to 1/4 of active memory. This is only used if
enable-wal is set.
--storage-row-group-size=8192
Number of rows in each row group during
compaction and persistence. Setting to <= 0
results in a single row group per file.
--storage-index-on-disk Whether to store the index on disk instead
of in memory. Useful to reduce the memory
footprint of the store.
--symbolizer-demangle-mode="simple"
Mode to demangle C++ symbols. Default mode
is simplified: no parameters, no templates,
no return type
--symbolizer-number-of-tries=3
Number of tries to attempt to symbolize an
unsybolized location
--debuginfo-cache-dir="/tmp"
Path to directory where debuginfo is cached.
--debuginfo-upload-max-size=1000000000
Maximum size of debuginfo upload in bytes.
--debuginfo-upload-max-duration=15m
Maximum duration of debuginfo upload.
--debuginfo-uploads-signed-url
Whether to use signed URLs for debuginfo
uploads.
--debuginfod-upstream-servers=debuginfod.elfutils.org,...
Upstream debuginfod servers. Defaults to
debuginfod.elfutils.org. It is an ordered
list of servers to try. Learn more at
https://sourceware.org/elfutils/Debuginfod.html
--debuginfod-http-request-timeout=5m
Timeout duration for HTTP request to upstream
debuginfod server. Defaults to 5m
--profile-share-server="api.pprof.me:443"
gRPC address to send share profile requests to.
--store-address=STRING gRPC address to send profiles and symbols to.
--bearer-token=STRING Bearer token to authenticate with store.
--bearer-token-file=STRING
File to read bearer token from to authenticate
with store.
--insecure Send gRPC requests via plaintext instead of
TLS.
--insecure-skip-verify Skip TLS certificate verification.
--external-label=KEY=VALUE;...
Label(s) to attach to all profiles in
scraper-only mode.
Parca foi originalmente desenvolvido pela Polar Signals. Leia a postagem do blog de anúncio: https://www.polarsignals.com/blog/posts/2021/10/08/introduzindo-parca-we-got-funded/
Confira nosso Guia de contribuição para começar! Explica como compilar o Parca, executá-lo com Tilt como contêiner no Kubernetes e enviar um Pull Request.
Os agradecimentos vão para essas pessoas maravilhosas (chave emoji):
Frederico Branczyk ? | Thor ? | Matthias Loibl ? | Kemal Akkoyun | Sumera Priyadarsini |
Jéssica Lins | Holger Freyther | Sérgio Urbaniak ? | Paweł Krupa ? | Ben Ye ? |
Félix ? | Christian Bargmann | Yomi Eluwande | Manoj Vivek | Mônica Wojciechowska |
Manuel Ruger ? | Avinash Upadhyaya KR | Ikko Ashimine | Maxime Brunet ? | rohit |
Ujjwal Goyal | Javier Honduvilla Coto | Marsel Mavletkulov | Kautilya Tripathi | Jon Seager |
Filipe Gough | Boran Seref | Wen Long | filtro cui | Alfonso Subiotto Marques |
Tom Hellier | Stefan Van Buren | Carlos Tadeu Panato Júnior ? | Daniel (Shijun) Qian | Alex Colete |
Shubham Palriwala | Fabian Reinartz | Karthick Raja | bastante4work | Bert |
Mohammad S. | Nikhilesh Susarla | Franco Sánchez | Andreia Scarpino | Maksim Nabokikh |
Este projeto segue a especificação de todos os contribuidores. Contribuições de qualquer tipo são bem-vindas!
Usamos Meticulous para testar automaticamente nossa IU em busca de quaisquer alterações indesejadas.