Canonical Observability Stack Lite

  • By Canonical Observability | bundle
Channel Revision Published Runs on
latest/stable 11 21 Oct 2022
latest/candidate 10 21 Oct 2022
latest/beta 9 21 Oct 2022
latest/edge 18 20 Jun 2023
1.0/stable 16 21 Oct 2022
1.0/candidate 14 21 Oct 2022
1.0/beta 13 21 Oct 2022
1.0/edge 12 21 Oct 2022
juju deploy cos-lite --channel edge
Show information

Platform:

A COS Lite deployment is made up of numerous juju relation.

For clarity and readability, the bundle topology is depicted here using several separate diagrams. Each line indicates a separate juju relation.

Ingress view

The workloads that make up COS Lite are servers that need to be reachable from outside the model they are deployed in.

  • Grafana (“ingress-to-leader”) is the main UI, amalgamating telemetry from all datasources into dashboards.
  • Prometheus and Loki (both “ingress-per-unit”), ingest telemetry pushed from grafana agent from another model.
  • Alertmanager (“ingress per app”), has a UI for acknowledging or silencing alerts.
graph LR

subgraph cos_lite["COS Lite"]

  alrt[Alertmanager]
  click alrt "https://github.com/canonical/alertmanager-k8s-operator"
  
  graf[Grafana]
  click graf "https://github.com/canonical/grafana-k8s-operator"

  prom[Prometheus]
  click prom "https://github.com/canonical/prometheus-k8s-operator"

  loki[Loki]
  click loki "https://github.com/canonical/loki-k8s-operator"

  trfk[Traefik]
  click trfk "https://github.com/canonical/traefik-k8s-operator"

  ctlg[Catalogue]
  click ctlg "https://github.com/canonical/catalogue-k8s-operator"

  trfk --- |<a href='https://charmhub.io/traefik-k8s/libraries/ingress_per_unit'>ipu</a>| loki
  trfk --- |ipu| prom
  trfk --- |<a href='https://charmhub.io/traefik-route-k8s/libraries/traefik_route'>route</a>| graf
  trfk --- |<a href='https://charmhub.io/traefik-k8s/libraries/ingress'>ipa</a>| alrt

  prom --- |<a href='https://charmhub.io/catalogue-k8s/libraries/catalogue'>catalogue</a>| ctlg
  alrt --- |catalogue| ctlg
  graf --- |catalogue| ctlg

end

Datasource view

The workloads that make up COS Lite are datasources for each other:

  • Grafana queries loki, prometheus for telemetry and alertmanager for alerts.
  • Promtetheus and loki evaluate alert rules and post alerts to alertmanager.
graph LR

subgraph cos_lite["COS Lite"]

  alrt[Alertmanager]
  click alrt "https://github.com/canonical/alertmanager-k8s-operator"
  
  graf[Grafana]
  click graf "https://github.com/canonical/grafana-k8s-operator"

  prom[Prometheus]
  click prom "https://github.com/canonical/prometheus-k8s-operator"

  loki[Loki]
  click loki "https://github.com/canonical/loki-k8s-operator"

  prom --- |alerting| alrt
  loki --- |alerting| alrt
  graf --- |source| prom
  graf --- |source| alrt
  graf --- |source| loki
end

Self-monitoring view

We need to be made aware if the observability solution itself is functioning properly. Self-monitoring relations within COS Lite, together with cos-alerter, are meant to alert for outages of the observability stack itself.

graph TD

subgraph cos_lite["COS Lite"]

  alrt[Alertmanager]
  click alrt "https://github.com/canonical/alertmanager-k8s-operator"
  
  graf[Grafana]
  click graf "https://github.com/canonical/grafana-k8s-operator"

  prom[Prometheus]
  click prom "https://github.com/canonical/prometheus-k8s-operator"

  loki[Loki]
  click loki "https://github.com/canonical/loki-k8s-operator"

  trfk[Traefik]
  click trfk "https://github.com/canonical/traefik-k8s-operator"

  trfk --- |metrics| prom
  alrt --- |metrics| prom
  loki --- |metrics| prom
  graf --- |metrics| prom

  graf --- |dashboard| loki
  graf --- |dashboard| prom
  graf --- |dashboard| alrt
end