Skip to main content

Observability

Cosmonic Control ships a fully integrated observability stack. No external dependencies are required.

Architecture

Observability architecture diagram

All components export telemetry via OTLP to the opentelemetry-collector, which fans out to:

Accessing the Perses dashboard

Perses is deployed as a ClusterIP service and is not exposed externally by default. Use kubectl port-forward to access it locally:

kubectl port-forward svc/perses 8080:8080 -n cosmonic-system

Open http://localhost:8080 in your browser.

To expose Perses externally (for example, behind an ingress controller), change the service type in your values file:

perses:
  service:
    type: LoadBalancer   # or NodePort, or configure your own ingress

Built-in dashboards

Cosmonic Control provisions the following Perses dashboards automatically:

Host Infrastructure

  • Host Reconciliation Activity
  • Host Controller Errors
  • Workqueue Depth by Controller

Workloads

  • Workload Reconciliation Rate
  • Workload Errors by Type
  • Active Workers by Controller

Operator Resource Usage

  • Memory Usage
  • CPU Usage
  • Goroutines

Accessing backends directly

Each backend is available as a ClusterIP service in the cosmonic-system namespace for direct access or integration with external tooling (e.g. an existing Grafana instance):

ServicePortProtocol
prometheus9090HTTP
loki3100HTTP (Loki API)
tempo3200HTTP / 4317 gRPC (OTLP)
opentelemetry-collector4317 (gRPC) / 4318 (HTTP)OTLP

To disable the built-in Perses dashboard (for example, when integrating with an existing Grafana deployment):

perses:
  uiEnabled: false

Custom dashboards

Perses supports a Dashboard-as-Code approach via provisioning. Add custom dashboards with the perses.provisioning.extraProvisioningFiles Helm value. See the Perses documentation for the dashboard file format.

Further reading