Observability
Cosmonic Control ships a fully integrated observability stack. No external dependencies are required.
Architecture
All components export telemetry via OTLP to the opentelemetry-collector, which fans out to:
- Prometheus — metrics
- Loki — logs
- Tempo — distributed traces
- Perses — unified dashboard over all three backends
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-systemOpen 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 ingressBuilt-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):
| Service | Port | Protocol |
|---|---|---|
prometheus | 9090 | HTTP |
loki | 3100 | HTTP (Loki API) |
tempo | 3200 | HTTP / 4317 gRPC (OTLP) |
opentelemetry-collector | 4317 (gRPC) / 4318 (HTTP) | OTLP |
To disable the built-in Perses dashboard (for example, when integrating with an existing Grafana deployment):
perses:
uiEnabled: falseCustom 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.