# Daily Grafana dashboard change audit with Jira tickets

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

- Workflow type: agent
- Services: Grafana, Jira, Slack Bot
- Categories: Engineering, Operations
- Published: 2026-06-26

## What it does

- Each weekday morning, finds every Grafana dashboard that was edited in the last 24 hours.
- Reads the diff between the old and new version and uses judgement to separate risky changes (alert thresholds, swapped queries, deleted panels, data source swaps on SLI or revenue boards) from routine edits like panel reordering or cosmetics.
- Opens a Jira ticket for each risky change, assigned to the person who made the edit, with a short explanation of what changed and a link back to the dashboard.
- Posts one Slack digest to your designated channel with totals, who changed what, and links to the new review tickets, or a quiet "no risky changes today" note when everything looks routine.

## What you'll need

- A Grafana login that can search dashboards and read version history.
- A Jira project where review tickets should be filed, with permission to create issues and assign them.
- A Slack workspace with a bot installed in the channel where the daily digest should land.

## Prompt

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.

## How to customize

- Change the schedule, for example move it to 8am or run it Monday only.
- Edit the list of dashboard folders or tags to skip, such as draft dashboards or personal sandboxes.
- Tune what counts as risky, for example add specific board names that should always file a ticket even on small edits.
- Pick the Slack channel for the digest and the Jira project, issue type, and default assignee for the review tickets.

## FAQ

### Will this generate a ticket every time someone tweaks a panel title?

No. The agent reads each diff and only files a Jira ticket when the change looks meaningful, like a modified alert threshold, a swapped query, a deleted panel, or a data source change. Cosmetic edits and panel reordering are reported as routine and stay out of Jira.

### How does it know who to assign the Jira ticket to?

It assigns the ticket to whoever made the edit in Grafana. If that person cannot be matched in Jira, it falls back to the dashboard tag owner or a default assignee you configure.

### How do I stop draft dashboards from creating noise?

The workflow skips dashboards tagged draft and dashboards that live in personal folders by default. You can add other folders or tags to the skip list when you set it up.

### What happens on a quiet day with no risky changes?

You still get one short Slack message confirming the audit ran and that nothing looked risky, so the team knows the check happened. No empty Jira tickets are created.

### Can I send the digest to more than one Slack channel?

Yes. Add the extra channels when you set up the workflow and the same digest will be posted to each one.

Use this prompt in General Input: https://www.generalinput.com/prompts/daily-grafana-dashboard-change-audit-with-jira-tickets