Menu
Open source

Configure Grafana Agent Flow on Kubernetes

This page describes how to apply a new configuration to Grafana Agent Flow when running on Kubernetes with the Helm chart. It assumes that:

If instead you’re looking for help in configuring Grafana Agent Flow to perform a specific task, consult the following guides instead:

Configure the Helm chart

To modify Grafana Agent Flow’s Helm chart configuration, perform the following steps:

  1. Create a local values.yaml file with a new Helm chart configuration.

    1. You can use your own copy of the values file or download a copy of the default values.yaml.

    2. Make changes to your values.yaml to customize settings for the Helm chart.

      Refer to the inline documentation in the default values.yaml for more information about each option.

  2. Run the following command in a terminal to upgrade your Grafana Agent Flow installation:

    shell
    helm upgrade --namespace <NAMESPACE> <RELEASE_NAME> grafana/grafana-agent -f <VALUES_PATH>

    Replace the following:

    • <NAMESPACE>: The namespace you used for your Grafana Agent Flow installation.
    • <RELEASE_NAME>: The name you used for your Grafana Agent Flow installation.
    • <VALUES_PATH>: The path to your copy of values.yaml to use.

Kustomize considerations

If you are using Kustomize to inflate and install the Helm chart, be careful when using a configMapGenerator to generate the ConfigMap containing the configuration. By default, the generator appends a hash to the name and patches the resource mentioning it, triggering a rolling update.

This behavior is undesirable for Grafana Agent Flow because the startup time can be significant, for example, when your deployment has a large metrics Write-Ahead Log. You can use the Helm chart sidecar container to watch the ConfigMap and trigger a dynamic reload.

The following is an example snippet of a kustomization that disables this behavior:

yaml
configMapGenerator:
  - name: grafana-agent
    files:
      - config.river
    options:
      disableNameSuffixHash: true

Configure the Grafana Agent Flow

This section describes how to modify the Grafana Agent Flow configuration, which is stored in a ConfigMap in the Kubernetes cluster. There are two methods to perform this task.

Method 1: Modify the configuration in the values.yaml file

Use this method if you prefer to embed your Grafana Agent Flow configuration in the Helm chart’s values.yaml file.

  1. Modify the configuration file contents directly in the values.yaml file:

    yaml
    agent:
      configMap:
        content: |-
          // Write your Agent config here:
          logging {
            level = "info"
            format = "logfmt"
          }
  2. Run the following command in a terminal to upgrade your Grafana Agent Flow installation:

    shell
    helm upgrade --namespace <NAMESPACE> <RELEASE_NAME> grafana/grafana-agent -f <VALUES_PATH>

    Replace the following:

    • <NAMESPACE>: The namespace you used for your Grafana Agent Flow installation.
    • <RELEASE_NAME>: The name you used for your Grafana Agent Flow installation.
    • <VALUES_PATH>: The path to your copy of values.yaml to use.

Method 2: Create a separate ConfigMap from a file

Use this method if you prefer to write your Grafana Agent Flow configuration in a separate file.

  1. Write your configuration to a file, for example, config.river.

    river
    // Write your Agent config here:
    logging {
      level = "info"
      format = "logfmt"
    }
  2. Create a ConfigMap called agent-config from the above file:

    shell
    kubectl create configmap --namespace <NAMESPACE> agent-config "--from-file=config.river=./config.river"

    Replace the following:

    • <NAMESPACE>: The namespace you used for your Grafana Agent Flow installation.
  3. Modify Helm Chart’s configuration in your values.yaml to use the existing ConfigMap:

    yaml
      agent:
      configMap:
        create: false
        name: agent-config
        key: config.river
  4. Run the following command in a terminal to upgrade your Grafana Agent Flow installation:

    shell
    helm upgrade --namespace <NAMESPACE> <RELEASE_NAME> grafana/grafana-agent -f <VALUES_PATH>

    Replace the following:

    • <NAMESPACE>: The namespace you used for your Grafana Agent Flow installation.
    • <RELEASE_NAME>: The name you used for your Grafana Agent Flow installation.
    • <VALUES_PATH>: The path to your copy of values.yaml to use.