Skip to main content
With monitoring.enabled the helmfile installs kube-prometheus-stack (Prometheus, Alertmanager, Grafana, node-exporter, kube-state-metrics) and, with monitoring.logs, Loki and Alloy. Grafana is at https://<domains.grafana>; the admin password is in monitoring/grafana-admin.

What is scraped

Who can reach it

NetworkPolicies in monitoring (chart charts/network-policies) admit only Grafana, Prometheus, Alertmanager and Alloy to the monitoring pods, the ingress controller to Grafana, and atoll-server to Prometheus (billing). Loki runs without multi-tenancy (auth_enabled: false), which is fine only because nothing outside the monitoring components can reach it; app and build pods are also stopped by their own egress policies. Grafana is the one entry point, behind its admin login.

Billing data

Billing counts the CPU and memory running app pods request (their size, see Scaling) and reads bandwidth from Prometheus at ATOLL_BILLING_PROMETHEUS_URL. Apps that scale to zero are served through their w--<app> Service, which billing maps to the same project. Traefik labels its metrics with the Kubernetes service of each app Ingress, for example:
service looks like atoll-apps-<project>--<module>-80@kubernetes. Web apps are served by atoll-server, which reports their bytes itself.

App metrics

The panel’s Metrics tab (GET /api/projects/<project>/metrics?module=&preview=&range=1h|24h|7d|30d, members) reads Prometheus at ATOLL_METRICS_PROMETHEUS_URL (unset: ATOLL_BILLING_PROMETHEUS_URL; neither: the tab says metrics are unavailable). For module shop--api in atoll-apps, with a window W of the range’s step but at least 2m: S matches the module’s Service, its wake Service (w--shop--api, while it scales to zero) and the custom-domain Services leading to it, e.g. atoll-apps-(w--)?shop--api-[a-z0-9]+@kubernetes|atoll-domains-shop--domain-…. Traefik’s latency buckets are set finer than its defaults in values/traefik.yaml.gotmpl for useful percentiles. Answers are cached on the server (15 seconds for the last hour, longer for longer ranges).

Logs

Alloy tails every pod through the Kubernetes API and ships to Loki with labels namespace, pod, container and atoll_project (from the atoll.app/project label of app and build pods). In Grafana → Explore → Loki:

Alerts worth adding

kube-prometheus-stack ships general Kubernetes alerts. Add PrometheusRules for the platform: Route Alertmanager to email or chat through kube-prometheus-stack values (alertmanager.config) in your site file’s release overrides.

Without the stack

Turning monitoring.enabled off skips Prometheus, Grafana and Loki. metrics-server stays (HPAs need it), but billing has no bandwidth source then.