cos-lite docs - Bundle topology

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