Skip to main content

Parca from Binary

You can download the latest binary release for your architecture from our releases page.

curl -sL https://github.com/parca-dev/parca/releases/download/v0.21.0/parca_0.21.0_`uname -s`_`uname -m`.tar.gz | tar xvfz - parca

We also produce Docker images that can be pulled:

docker pull ghcr.io/parca-dev/parca:v0.21.0

We provide an example configuration file that you can use to get Parca running, and the scrape configuration section should look familiar to anyone familiar with Prometheus.

object_storage:
bucket:
type: "FILESYSTEM"
config:
directory: "./tmp"

scrape_configs:
- job_name: "default"
scrape_interval: "2s"
static_configs:
- targets: ["127.0.0.1:7070"]

You can download from our repository:

curl -sL https://raw.githubusercontent.com/parca-dev/parca/v0.21.0/parca.yaml > parca.yaml

To start Parca, pass this config file with the config-path flag:

parca --config-path="parca.yaml"

You should be greeted with the splash and some log lines:

ooooooooo.
`888 `Y88.
888 .d88' .oooo. oooo d8b .ooooo. .oooo.
888ooo88P' `P )88b `888""8P d88' `"Y8 `P )88b
888 .oP"888 888 888 .oP"888
888 d8( 888 888 888 .o8 d8( 888
o888o `Y888""8o d888b `Y8bod8P' `Y888""8o



{"caller":"log.go:124","level":"info","msg":"loading bucket configuration","name":"parca","ts":"2021-09-16T01:13:18.874904009Z"}
{"caller":"log.go:124","level":"debug","msg":"Starting provider","name":"parca","provider":"static/0","subs":"[default]","ts":"2021-09-16T01:13:18.876115335Z"}
{"addr":":7070","caller":"server.go:84","level":"info","msg":"starting server","name":"parca","ts":"2021-09-16T01:13:18.876178645Z"}
{"caller":"log.go:124","level":"debug","msg":"Discoverer channel closed","name":"parca","provider":"static/0","ts":"2021-09-16T01:13:18.876192954Z"}

This will start the Parca server on port 7070 and configure it to retrieve profiles from itself every 1 second automatically.

Other flags can be found using the help flag.

parca --help

Usage: parca

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.
--log-level="info" log level.
--http-address=":7070" Address to bind HTTP server to.
--port="" (DEPRECATED) Use http-address instead.
--cors-allowed-origins=CORS-ALLOWED-ORIGINS,...
Allowed CORS origins.
--otlp-address=STRING OpenTelemetry collector address to send traces to.
--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-debug-value-log Log every value written to the database into a separate file.
This is only for debugging purposes to produce data to replay
situations in tests.
--storage-granule-size=26265625 Granule size in bytes for 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-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.
--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 unsymbolized location
--metastore="badger" Which metastore implementation to use
--profile-share-server="api.pprof.me:443"
gRPC address to send share profile requests to.
--debug-infod-upstream-servers=https://debuginfod.elfutils.org,...
Upstream debuginfod servers. Defaults to
https://debuginfod.elfutils.org. It is an
ordered list of servers to try. Learn more at
https://sourceware.org/elfutils/Debuginfod.html
--debug-infod-http-request-timeout=5m
Timeout duration for HTTP request to upstream debuginfod server.
Defaults to 5m
--debuginfo-cache-dir="/tmp" Path to directory where debuginfo is cached.
--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.

Once Parca is running, you can navigate to the web interface on the browser.

image

You should shortly see the Select profile... dropdown menu populate with the profiles that Parca is retrieving from itself. Selecting one of these profile types and clicking the Search button will retrieve the profiles of that type for the time selection (default Last Hour)

image

This should result in a time series based on the profile that is interactable. Clicking anywhere on the line graph should then bring up an icicle graph for the profile that you've selected.

image

You can then interact with the icicle graph to better understand how Parca is behaving.