Install
Kubernetes

Monitoring

Get metrics, traces, logs and dashboards from the chart, with its own monitoring stack or yours.

Every Relic pod serves /metrics on port 8091, which the ingress does not expose. See the Monitoring guide.

Bundled stack

monitoringStack.enabled installs these official charts next to Relic:

ChartContents
kube-prometheus-stackPrometheus Operator, Prometheus (exemplars, 15 days on 20Gi), Alertmanager, Grafana, kube-state-metrics, node-exporter.
TempoTraces, one process.
LokiLogs, one process, filesystem storage.
AlloyShips the namespace's pod logs to Loki, and Relic's OTLP traces and logs to Tempo and Loki.

Relic then sends 10% of traces to Alloy, plus every trace from a caller that is already tracing. Prometheus scrapes Relic and loads its alert rules. Grafana gets Relic's seven dashboards (folder Relic), CloudNativePG's dashboard, and linked Tempo and Loki datasources: exemplars open traces, traces open their logs, and a log line's trace_id opens its trace.

Install Relic with the stack:

helm install relic oci://ghcr.io/relicbuild/charts/relic --version 0.2.0-beta.4 -n relic --create-namespace --set monitoringStack.enabled=true --set credentials.encryptionKey="$RELIC_ENCRYPTION_KEY" --set credentials.adminPassword="$RELIC_ADMIN_PASSWORD"

To also collect PostgreSQL's and SeaweedFS's metrics:

monitoringStack:
  enabled: true
cluster:
  cluster:
    monitoring:
      enabled: true
seaweedfs:
  global:
    seaweedfs:
      monitoring:
        enabled: true

Forward a local port to Grafana:

kubectl -n relic port-forward svc/relic-grafana 3000:80

Print the Grafana admin password, which is generated once:

kubectl -n relic get secret relic-grafana -o jsonpath='{.data.admin-password}' | base64 -d

Subchart values go under kube-prometheus-stack, tempo, loki and alloy; kube-prometheus-stack.grafana.ingress.* exposes Grafana.

This Prometheus selects every monitor and rule in the cluster. If you already run one, use your own stack.

Turning it on for an existing release

helm upgrade installs no CRDs; until the Prometheus Operator's exist, the chart stops and prints these commands.

Download the kube-prometheus-stack chart:

helm pull kube-prometheus-stack --repo https://prometheus-community.github.io/helm-charts --version 92.10.1 --untar -d /tmp

Apply its CRDs:

kubectl apply --server-side -f /tmp/kube-prometheus-stack/charts/crds/crds/

Upgrade the release with the stack turned on:

helm upgrade relic oci://ghcr.io/relicbuild/charts/relic --version 0.2.0-beta.4 -n relic --reset-then-reuse-values --set monitoringStack.enabled=true

Your own stack

ComponentSettings
Prometheus OperatorA ServiceMonitor and PrometheusRule are added when monitoring.coreos.com/v1 exists. metrics.serviceMonitor.labels and metrics.prometheusRule.labels set the labels your Prometheus selects; metrics.prometheusRule.runbookBaseURL prefixes the runbook links.
Grafanagrafana.dashboards.enabled renders the dashboards for the sidecar (grafana.dashboards.label, .folder). The files are in deploy/observability/grafana/dashboards.
Tracestracing.otlpEndpoint: an OTLP/HTTP endpoint, such as http://otel-collector.observability:4318.
LogsPod logs are JSON with trace_id and span_id. logging.otlp also sends them over OTLP.