Daily Grafana dashboard change audit with Jira tickets

By General Input

Every weekday at 9am, review dashboards edited in the last day, file Jira tickets for risky changes, and post a one-line Slack digest.

Integrations

  • Grafana
  • Jira
  • Slack Bot

Type

Agentic Task

Categories

  • Engineering
  • Operations

Every weekday at 9am in my org timezone, audit Grafana dashboards that were edited in the last 24 hours and surface risky changes for human review. This is an agent workflow because deciding what counts as "risky" requires judgement, not a fixed rule list.

Trigger: cron, weekdays Mon-Fri at 9:00 in the org's timezone.

Steps the agent should run:

1. Use Grafana Search Dashboards and Folders to list dashboards across the org, then for each non-skipped dashboard call List Dashboard Versions and keep the ones whose newest version was created in the last 24 hours. Skip any dashboard tagged "draft" and any dashboard that lives in a personal/user folder so noisy work-in-progress edits do not generate tickets. Also skip folders/tags the user adds to a configurable skip list.

2. For each remaining dashboard, call Compare Dashboard Versions between the newest version and the version that was current 24 hours ago (use Get Dashboard Version if you need to inspect the full JSON to disambiguate). Read the diff.

3. Apply judgement to classify the change as risky or routine. Treat as RISKY: alert thresholds modified, queries swapped or removed, panels deleted, units or time ranges changed on production SLI or revenue panels, data source swaps, variable/template changes that affect what production users see. Treat as ROUTINE: cosmetic edits (titles, descriptions, colors), panel reordering or resizing, new annotations, new non-production panels added at the bottom. When in doubt on a high-traffic production dashboard, lean toward risky.

4. For each risky change, use Jira Create Issue to file a review ticket in the configured Jira project. Assign it to the Grafana user who made the edit (match by email); if no Jira match exists, fall back to the owner indicated by the dashboard's owner tag, then to a configured default assignee. The issue summary should be "Review risky Grafana change: <dashboard name>". The description should include: what changed in plain language (one or two sentences per material change), why it warrants a second look, the editor's name, the version numbers compared, and a link back to the dashboard in Grafana. Use a configurable issue type (default Task) and label the issue "grafana-change-review".

5. After all tickets are filed, post one Slack digest via Slack Bot Send a Message to the designated channel. The digest should include: total dashboards changed in the window, count of risky vs routine, a short list of who changed what (one line per dashboard, name + editor + risky/routine), and links to the new Jira review tickets. If nothing risky was found, post a quiet single-line note: "Grafana dashboard audit ran. N dashboards edited, all routine." Never post per-ticket spam; always one consolidated message.

Configurable inputs the user should be able to edit: the Slack channel, the Jira project key and default assignee, the skip list of folders and tags (defaults: draft tag, personal folders), the run time and timezone, and an optional list of "always-flag" dashboards that should file a ticket even on small edits.

Anchor operations: grafana.search_dashboards_and_folders, grafana.list_dashboard_versions, grafana.compare_dashboard_versions, grafana.get_dashboard_version, jira.create_issue, slackbot.send_a_message.

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountGive your team Looker numbers without buying more seatsPause marketing emails to escalated customers, then restore them