Tempo

  • By Canonical Observability
Channel Revision Published Runs on
latest/stable 51 01 Aug 2024
Ubuntu 22.04 Ubuntu 20.04
latest/stable 9 16 Feb 2024
Ubuntu 22.04 Ubuntu 20.04
latest/candidate 71 01 Aug 2024
Ubuntu 22.04 Ubuntu 20.04
latest/candidate 9 12 Dec 2023
Ubuntu 22.04 Ubuntu 20.04
latest/beta 75 01 Aug 2024
Ubuntu 22.04 Ubuntu 20.04
latest/beta 9 12 Dec 2023
Ubuntu 22.04 Ubuntu 20.04
latest/edge 80 02 Sep 2024
Ubuntu 22.04 Ubuntu 20.04
latest/edge 9 31 Jul 2023
Ubuntu 22.04 Ubuntu 20.04
juju deploy tempo-k8s --channel edge
Show information

Platform:

Tracing Protocols

By design, Tempo can ingest common open source tracing protocols. These protocols include:

  • "zipkin"
  • "otlp_grpc"
  • "otlp_http"
  • "jaeger_thrift_http"
  • "jaeger_grpc"

For a full list of receivers supported by upstream Tempo, see protocols.

Send traces with desired protocols

When integrating your charmed application with tempo-k8s to send the traces to Tempo (e.g: integrating over tracing), you can specify, as a list, the tracing protocols you want to send traces with like the example below:

In Kubernetes charms

from charms.tempo_k8s.v2.tracing import TracingEndpointRequirer

class FooCharm:
    def __init__(self, *args):
        super().__init__(*args, **kwargs)
        ...
        self.tracing = TracingEndpointRequirer(self, 
            protocols=["otlp_http", "otlp_grpc", "jaeger_thrift_http"])
        ...

The provider will enable receivers for these and only these protocols, so be sure to enable all protocols the charm or its workload are going to need.

However, in charm library charms.tempo_k8s.v1.charm_tracing, which is used to instrument the charm, the traces need to be sent with otlp_http protocol.

In machine charms

Machine charms are using the cos_agent charm library to send traces to grafana-agent charm that relays them further.

See more on cos_agent: cos_agent reference

from charms.tempo_k8s.v0.cos_agent import CosAgentProvider

class FooCharm:
    def __init__(self, *args):
        super().__init__(*args, **kwargs)
        ...
        self.agent = CosAgentProvider(self,
            ... # see cos-agent for more reference
            tracing_protocols=["otlp_http", "otlp_grpc", "jaeger_thrift_http"])
        ...