---
title: Charmhub | Deploy Canonical Observability Stack Lite using Charmhub - The Open
  Operator Collection
description: Deploy the latest version of Canonical Observability Stack Lite on any
  cloud.
url: https://charmhub.io/cos-lite/docs/how-to/add-distributed-tracing
---

##### We've discontinued the registration of new Bundles

New Bundle registrations are no longer accepted. Existing bundles remain functional. We recommend using the Juju Terraform Provider for new deployments.

[Learn more](https://discourse.charmhub.io/t/discontinuing-new-charmhub-bundle-registrations/15344)

# Canonical Observability Stack Lite

[Canonical Observability](https://charmhub.io/publisher/observability "View all packages from Canonical Observability")
| bundle

* [Canonical Observability](https://charmhub.io/publisher/observability "View all packages from Canonical Observability")
  | bundle

Platform:

stable 26

```
juju deploy cos-lite
```

[Learn to deploy on juju >](https://juju.is/docs/juju/manage-applications)

---

#### Relevant links

* [Homepage](https://github.com/canonical/cos-lite-bundle)

---

#### Contacts

* [Submit a bug](https://github.com/canonical/cos-lite-bundle/issues)

---

Share your thoughts on this charm with the community on discourse.

[Join the discussion](https://discourse.charmhub.io/)

---

[Add docs to a charm](https://juju.is/docs/sdk/add-docs-to-your-charmhub-page)

**Table of Contents**

* [Deploy tempo-coordinator-k8s](https://charmhub.io/cos-lite/docs/how-to/add-distributed-tracing#heading--deploy-tempo-coordinator-k8s)
* [Deploy tempo-worker-k8s](https://charmhub.io/cos-lite/docs/how-to/add-distributed-tracing#heading--deploy-tempo-worker-k8s)
* [Integrate coordinator and workers](https://charmhub.io/cos-lite/docs/how-to/add-distributed-tracing#heading--integrate-coordinator-and-workers)
* [Integrate with s3](https://charmhub.io/cos-lite/docs/how-to/add-distributed-tracing#heading--integrate-with-s3)
* [Integrate with COS-Lite](https://charmhub.io/cos-lite/docs/how-to/add-distributed-tracing#heading--integrate-with-cos-lite)
* [Integrate with a CA](https://charmhub.io/cos-lite/docs/how-to/add-distributed-tracing#heading--integrate-with-a-ca)

If you have an existing COS-Lite deployment and you wish to add an integration to the Tempo distributed tracing backend, follow these steps.

## [Deploy tempo-coordinator-k8s](https://charmhub.io/cos-lite/docs/how-to/add-distributed-tracing#heading--deploy-tempo-coordinator-k8s)

In the same `juju model` as you have COS-Lite deployed, deploy the `tempo-coordinator-k8s` app.

> `juju deploy tempo-coordinator-k8s --channel edge tempo --trust`

We recommend naming your `tempo-coordinator` app `"tempo"` as that is the single entry point to the tempo deployment as a whole: you will never have to interact with the worker nodes directly.

## [Deploy tempo-worker-k8s](https://charmhub.io/cos-lite/docs/how-to/add-distributed-tracing#heading--deploy-tempo-worker-k8s)

> `juju deploy tempo-worker-k8s --channel edge tempo-worker --trust`

In this tutorial we deploy the ‘monolithic’ version of `tempo`, where a single worker node is assigned all the roles. For alternative deployment modes and a migration guide, refer to [this other doc](https://discourse.charmhub.io/t/15213).

## [Integrate with s3](https://charmhub.io/cos-lite/docs/how-to/add-distributed-tracing#heading--integrate-with-s3)

Tempo uses object storage for storing traces and the charm consequently requires an s3 integration.

If you don’t have an s3 bucket ready at hand, [follow this guide to deploy `minio` in your testing environment.](https://charmhub.io/cos-lite/docs/how-to/deploy-minio-for-s3-testing)

Once you’re done deploying `minio` and `s3`, you can run:

`juju integrate tempo s3`

And wait for `tempo` to go to `active/idle`.

## [Integrate coordinator and workers](https://charmhub.io/cos-lite/docs/how-to/add-distributed-tracing#heading--integrate-coordinator-and-workers)

> `juju integrate tempo tempo-worker`

At this point your `juju status` should look like this:

Coordinator is reporting ‘degraded’ because not all roles are assigned in the recommended number (see [this open bug](https://github.com/canonical/cos-lib/issues/42) for progress on making the status message more informative).

## [Integrate with COS-Lite](https://charmhub.io/cos-lite/docs/how-to/add-distributed-tracing#heading--integrate-with-cos-lite)

You can enable self-monitoring for `tempo` by integrating it with the other COS-Lite components.

> `juju integrate loki:logging tempo:logging`
> `juju integrate s3:s3-credentials tempo:s3`
> `juju integrate tempo:grafana-dashboard grafana:grafana-dashboard`
> `juju integrate tempo:grafana-source grafana:grafana-source`
> `juju integrate tempo:metrics-endpoint prometheus:metrics-endpoint`
> `juju integrate tempo:tempo-cluster tempo-worker:tempo-cluster`
> `juju integrate traefik:traefik-route tempo:ingress`

Similarly, you can enable tracing in COS-Lite by integrating the COS-Lite charms that support it to `tempo` over `tracing`:

> `juju integrate tempo:tracing alertmanager:tracing`
> `juju integrate tempo:tracing catalogue:tracing`
> `juju integrate tempo:tracing grafana:tracing`
> `juju integrate tempo:tracing loki:tracing`
> `juju integrate tempo:tracing prometheus:tracing`
> `juju integrate tempo:tracing traefik:tracing`

You can also achieve the same by running `jhack imatrix fill`.

## [Integrate with a CA](https://charmhub.io/cos-lite/docs/how-to/add-distributed-tracing#heading--integrate-with-a-ca)

If you have a charm offering a `certificates` endpoint such as [`self-signed-certificates`](https://charmhub.io/self-signed-certificates), you can integrate it with `tempo`:

> `juju integrate tempo:certificates ca:certificates`

to enable traces to be sent to `tempo` over https (or grpcs).

Note that for this to work, `tempo` needs to trust the same CA that `traefik` trusts. If you’re using different CAs to provide certificates to `tempo` and `traefik`, you’ll need to integrate the CA charms with `cert-transfer`.

---
