Configure instances with Helm
Create a Secret separately from the Helm release. Therootly-private-agent
namespace must already exist; on a first install, run this after the base Helm
installation has created the namespace. This example uses a bearer token and
the X-Scope-OrgID value expected by a multi-tenant deployment:
ca_bundle_file when the endpoint certificate chains to a
CA already trusted by the agent image.
Add the provider and Secret mount to your values:
url can be a direct Pyroscope endpoint or a fixed Grafana data source proxy
prefix. It must use HTTPS by default and can include a path prefix. URLs cannot
contain embedded credentials, query parameters, or fragments. Plain HTTP
requires allow_insecure_http: true and is intended only for deliberately
trusted local test environments.
Choose one application-layer authentication method: bearer authentication,
basic authentication with paired username_file and password_file, or
intentionally unauthenticated access. Mutual TLS is a separate transport
control; configure its paired certificate and key files with any of those
choices. tenant_id_file supplies a fixed X-Scope-OrgID header; use one
provider entry per tenant when Rootly needs to route between tenants explicitly.
enforced_label_matchers is an additional, optional boundary. Configure a fixed
tenant or enforced matchers for a shared deployment; omit both only when the
endpoint itself is intentionally dedicated to the provider’s full scope.
Available tools
All capabilities are version1 sensitive reads. Owner and admin investigations
can use them. Unattended AI SRE investigations can also use them when both AI SRE
and Private Agent are enabled, so scope credentials, tenants, labels, and limits
for unattended access.
Always call
pyroscope.profile_types before profile queries and pass its exact
id as profile_type. Profile type IDs identify the profile name, sample type,
units, period type, and period units; do not guess one from a display label.
For example, query a CPU flame graph after discovering the profile type:
Local scope and result controls
enforced_label_matchers adds customer-controlled matchers to every
selector-based request. The configuration is parsed at startup and is not
reported to Rootly. Equality matchers are a clear default, for example
environment="production",cluster="primary" with or without surrounding
braces.
Series, timeline, flame-graph, and comparison calls must include a selective
positive matcher in addition to any enforced matchers. Empty, catch-all, and
negative-only selectors are rejected. A positive regular expression counts as
selective only when it has a non-empty literal prefix and does not match the
empty string. Profile-type discovery also honors enforced matchers; without
them, discovery operates across the fixed tenant and explicit time window. Use
a narrowly authorized tenant or proxy when tenant-wide discovery is too broad.
Label-name and label-value discovery also inherit enforced matchers; when no
matcher is configured or supplied, they can enumerate across the fixed tenant
and time window.
Every time window uses explicit RFC3339 start and end values. A future start
is rejected, a future end is capped to the current clock, and an empty or
over-limit window is rejected. query_series computes a safe default step when
none is supplied and rejects a step that would exceed the point budget.
Flame-graph node counts, discovery values, returned series, points per series,
response bytes, timeout, and per-instance concurrency are also bounded. See
Private Agent Limits for defaults and hard
ceilings.
The agent sends compact profile names, levels, series, and points to Rootly as
sensitive evidence. It does not expose ingest, delete, raw profile download,
administrative, or arbitrary HTTP capabilities. Results can enter AI model
context, evaluation traces, and investigation or conversation history under the
Private Agent retention model.
TLS, health, and compatibility
- HTTPS verifies hostnames and certificates with TLS 1.2 or newer. There is no skip-verification option.
- A custom CA extends system trust. Paired client certificate and key files enable mutual TLS.
- Credential and tenant files are read for each request so projected-file rotation does not require editing configuration.
- Redirects are rejected, environment HTTP proxy settings are not inherited, and Rootly control-plane credentials are never forwarded upstream.
- Upstream error bodies and endpoint details are not returned to Rootly.
ProfileTypes Querier method for the preceding
minute and validates the response shape. Results are cached for 15 seconds. An
unhealthy Pyroscope instance remains independently visible in AI →
Configurations → Private Agent and does not prevent healthy neighboring
providers from registering, although overall agent readiness remains strict.
Compatibility CI exercises every tool, tenant routing, and both Pyroscope
storage architectures against the latest patch of each upstream-maintained
minor. The current matrix covers Pyroscope 2.1 and 2.2. Re-test authentication,
tenancy, and response contracts before using another compatible service or
version.