Merged
Conversation
Contributor
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Files Reviewed (3 files)
Reviewed by gpt-5.5-2026-04-23 · 1,593,757 tokens |
pandemicsyn
approved these changes
Apr 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Expands both kiloclaw Grafana dashboards under
dev/grafana/dashboards/and cleans up the local dev datasource provisioning yaml.Events dashboard
$eventfilter from panels that already constrain via LIKE (Reconcile Actions, Restore Activity, Capacity Evictions, Recent Lifecycle Events). Previously, picking an event that the panel's LIKE clause excludes would silently empty those panels.Controller telemetry dashboard
Cloudflare Analytics Engine SQL compatibility
These were the most surprising part of this work. CF AE rejects several SQL constructs that the original dashboard relied on, and one of them (
NULLIF) was silently failing the Error Rate panel on main as well.SELECT DISTINCT colrewritten asSELECT col ... GROUP BY colin every template variable definition. CF AE returns 422 for the DISTINCT query modifier. This is why every dropdown was stuck at "All" with no other options.argMax(value, timestamp)replaced withMAX(value)in the disk fill table. Columns renamed topeak_*to reflect that the values are window peak rather than most recent.NULLIF(x, 0)replaced with WHERE clause guards orIF()wrappers. CF AE does not supportNULLIF. Side benefit: the Error Rate stat inkiloclaw-events.json, which had been returning "No data" on main, now renders.Other
extrapolate: falseon stat / table panels and on AVG / quantile timeseries. The vertamedia plugin extrapolation flag corrects partial buckets on rate metrics, but distorts ratios and quantiles.secureJsonData.xHeaderKeytoken from the datasource yaml.tlsSkipVerifymust remain false in production, since the URL points at api.cloudflare.com.Verification
docker compose --profile grafana up grafana) and confirmed every panel renders with real data.pnpm run format:checkpasses against the changed files.Visual Changes
N/A. Grafana dashboards only, rendered locally. No app UI changes.
Reviewer Notes
The CF AE supported function list is short and worth bookmarking for any future Grafana panel work: https://developers.cloudflare.com/analytics/analytics-engine/sql-api/
Notably absent:
SELECT DISTINCT(the query modifier)argMax,argMin,topK,groupArray,uniq,uniqExactNULLIFNotably present and used here:
COUNT(DISTINCT col)as an aggregate (distinct from the rejected query modifier)quantileWeighted(level)(value, weight)IF(cond, then, else)The two dashboards live under
dev/grafana/dashboards/and are local dev only. The newservices/kilo-ops/Grafana shipped via Worker container atops.kiloapps.io(added in #2769) does not yet host these kiloclaw dashboards. Promoting them to that production Grafana is a sensible next step once these prove out.