This is documentation for the next version of Grafana Beyla documentation. For the latest stable release, go to the latest version.

Documentationbreadcrumb arrow Beylabreadcrumb arrow Set upbreadcrumb arrow Beyla Helm chart for Grafana Cloud
Open source

Deploy Beyla with the Beyla Helm chart for Grafana Cloud

Grafana Cloud Application Observability and Knowledge Graph use span metrics and service graph metrics. Other instrumentation usually derives these metrics from traces. Beyla generates them directly, so you can sample traces or turn traces off and still get complete request rate, error, and duration (RED) metrics.

With the Beyla Helm chart, Beyla sends these metrics and traces directly to the Grafana Cloud OTLP endpoint, with no collector in between.

Before you begin

Before you deploy Beyla, make sure you have the following:

With the default chart values, Beyla runs as a privileged DaemonSet in the host process ID (PID) and network namespaces of each node.

Deploy Beyla for Grafana Cloud

To deploy Beyla for Grafana Cloud, complete the following steps:

  1. If the beyla namespace doesn’t exist, create it with kubectl create namespace beyla.

  2. Save the following Secret as grafana-secret.yml, and create it with kubectl apply -f grafana-secret.yml:

    YAML
    apiVersion: v1
    kind: Secret
    metadata:
      name: grafana-secret
      namespace: beyla
    type: Opaque
    stringData:
      otlp-headers: "Authorization=Basic <BASE64_CREDENTIALS>"

    Replace <BASE64_CREDENTIALS> with your instance ID and token, joined by a colon and Base64-encoded. For example, run echo -n '<INSTANCE_ID>:<TOKEN>' | base64 | tr -d '\n'.

  3. Create a helm-beyla.yml file:

    YAML
    config:
      data:
        metrics:
          features:
            - application_span
            - application_service_graph
            - application_host
        prometheus_export: null
    env:
      OTEL_EXPORTER_OTLP_ENDPOINT: "<OTLP_ENDPOINT>"
    envValueFrom:
      OTEL_EXPORTER_OTLP_HEADERS:
        secretKeyRef:
          key: otlp-headers
          name: grafana-secret

    Replace <OTLP_ENDPOINT> with the OTLP endpoint that you copied from your stack, for example https://otlp-gateway-prod-eu-west-0.grafana.net/otlp. Beyla appends /v1/metrics and /v1/traces.

  4. Add the Grafana Helm repository and update your local chart index:

    sh
    helm repo add grafana https://grafana.github.io/helm-charts
    helm repo update
  5. Install the chart:

    sh
    helm upgrade --install beyla grafana/beyla --namespace beyla -f helm-beyla.yml
  6. Check that the Beyla Pods are running:

    sh
    kubectl get pods --namespace beyla

    If a Pod isn’t running, check its logs with kubectl logs --namespace beyla <POD_NAME>, where <POD_NAME> is the Pod name from the previous command.

After your applications receive requests, their services appear in Application Observability in your Grafana Cloud stack.

With this configuration, Beyla does the following:

  • Instruments applications in every namespace, except Kubernetes system namespaces and other namespaces that Beyla excludes by default
  • Exports span metrics, service graph metrics, and traces to Grafana Cloud
  • Exports the application_host metric, which Grafana Cloud uses for host-based pricing
  • Adds Kubernetes metadata attributes, for example k8s.namespace.name and k8s.pod.name
  • Doesn’t export network-level metrics or Prometheus metrics

The features list replaces the default Beyla application feature, so Beyla exports span metrics instead of OpenTelemetry semantic-convention RED metrics.

Customize the deployment

To change the chart defaults, add chart values or Beyla options to your helm-beyla.yml file and run the helm upgrade --install command again. Keep the metrics.features list and the OTLP settings in the file.

Next steps