Grafana Agent

  • Canonical Observability
Channel Revision Published Runs on
latest/stable 260 10 Dec 2024
Ubuntu 24.04 Ubuntu 22.04 Ubuntu 20.04
latest/stable 225 03 Dec 2024
Ubuntu 24.04 Ubuntu 22.04 Ubuntu 20.04
latest/stable 223 03 Dec 2024
Ubuntu 24.04 Ubuntu 22.04 Ubuntu 20.04
latest/stable 226 03 Dec 2024
Ubuntu 24.04 Ubuntu 22.04 Ubuntu 20.04
latest/stable 224 03 Dec 2024
Ubuntu 24.04 Ubuntu 22.04 Ubuntu 20.04
latest/candidate 319 10 Dec 2024
Ubuntu 24.04 Ubuntu 22.04 Ubuntu 20.04
latest/candidate 224 01 Aug 2024
Ubuntu 24.04 Ubuntu 22.04 Ubuntu 20.04
latest/candidate 226 01 Aug 2024
Ubuntu 24.04 Ubuntu 22.04 Ubuntu 20.04
latest/candidate 225 01 Aug 2024
Ubuntu 24.04 Ubuntu 22.04 Ubuntu 20.04
latest/candidate 223 01 Aug 2024
Ubuntu 24.04 Ubuntu 22.04 Ubuntu 20.04
latest/beta 335 03 Dec 2024
Ubuntu 22.04 Ubuntu 20.04
latest/beta 332 03 Dec 2024
Ubuntu 22.04 Ubuntu 20.04
latest/beta 334 03 Dec 2024
Ubuntu 22.04 Ubuntu 20.04
latest/beta 333 03 Dec 2024
Ubuntu 22.04 Ubuntu 20.04
latest/edge 364 17 Dec 2024
Ubuntu 24.04 Ubuntu 22.04 Ubuntu 20.04
latest/edge 363 17 Dec 2024
Ubuntu 24.04 Ubuntu 22.04 Ubuntu 20.04
latest/edge 362 17 Dec 2024
Ubuntu 24.04 Ubuntu 22.04 Ubuntu 20.04
latest/edge 361 17 Dec 2024
Ubuntu 24.04 Ubuntu 22.04 Ubuntu 20.04
latest/edge 356 10 Dec 2024
Ubuntu 24.04 Ubuntu 22.04 Ubuntu 20.04
juju deploy grafana-agent --channel edge
Show information

Platform:

Ubuntu
24.04 22.04 20.04

The grafana-agent charm has two limitations:

  1. Only one instance of the charm should be related to each application.
  2. Only one instance should run per machine.

Failing to enforce these constraints can lead to configuration conflicts and errors.

When applications allow multiple relations with different instances of grafana-agent (e.g., ga-one and ga-two), or several instances of grafana-agent are running in the same machine, several issues can arise:

  1. Single service and config file: Even if multiple grafana-agent charms are related, only one service and one configuration file are installed on the machine, overwritten by all related charms.

  2. Conflicting confinement settings: If different grafana-agent instances use different confinement types (classic vs strict), the snap will apply only one type, potentially causing inconsistencies.

  3. Errors when removing relations: Removing a relation may uninstall the grafana-agent snap entirely, leaving other related charms in an error state as they attempt to manage a service that no longer exists.

More information about this, can be found in this post.

Recommended Implementation and Safeguards

  • Applications should use a limit in their metadata.yaml / charmcraft.yaml to restrict relations to only one instance of grafana-agent.

      cos-agent:
        interface: cos_agent
        limit: 1
    
  • Ensure that only one grafana-agent instance runs per machine to avoid configuration conflicts and unexpected behaviour.

  • Two probes (in draft state right now) can be executed in order to verify whether only one grafana-agent is related to a charm or only one grafana-agent deployed in a machine:

    juju export-bundle | ./probe_bundle.py
    juju status --format=yaml | ./probe_status.py
    

Following these practices ensures stable and predictable deployments in production environments.