Documentation for automated readers
A curated documentation index is available at: https://grafana.com/llms.txt
A complete documentation index is available at: https://grafana.com/llms-full.txt
These indexes can help with page discovery before fetching individual documents.
This page is also available in Markdown, which may be easier for automated readers and AI tools to parse than HTML. The Markdown version is available at https://grafana.com/docs/grafana-cloud/platform/workflows/reference/blueprints/weekly-service-health-summary.md, or by sending Accept: text/markdown to https://grafana.com/docs/grafana-cloud/platform/workflows/reference/blueprints/weekly-service-health-summary/. For broader documentation discovery, the curated index is available at https://grafana.com/llms.txt and the complete index is available at https://grafana.com/llms-full.txt.
Weekly service health summary
Note
Grafana Workflows is currently in public preview. Grafana Labs offers limited support, and breaking changes might occur prior to the feature being made generally available.
Every Friday morning, Grafana Assistant reviews the health of the services you own and posts a summary to Slack.
This Grafana Workflows blueprint is in the Reports category of the Blueprints library.
Before you begin
To use this blueprint, you need:
- Slack connected to Grafana IRM. For details, refer to Configure Slack for Grafana IRM.
- Grafana Assistant in use on your stack.
Steps
Steps run in order from first to last. A step inside a switch branch runs only when Workflows chooses that branch.
| Step | ID | Type | Description |
|---|---|---|---|
| Summarize service health | summarize | assistant.prompt | Asks Grafana Assistant for a structured weekly health review. Replace checkout-api, payments-worker in the first line of the prompt with the services your team owns, as they appear in your telemetry. Adjust the focus areas to match what your team tracks. |
| Post the summary to Slack | post-summary | slack.message.post | Posts the weekly summary. Set channelID to the channel where your team reviews service health. |
For the inputs and outputs of each step type, refer to Step and trigger types reference.
Before you turn on the workflow, customize any steps that need input from you, such as a channel ID or a schedule name. Each step’s description says what to set.
Workflow definition
Save this definition as a YAML file to create the workflow with gcx, the Workflows API, or Terraform, or give it to a coding agent as an example.
Replace FOLDER_UID with the UID of the folder for the workflow.
Blueprints start disabled, so finish customizing the steps before you set enabled to true.
For details, refer to Manage workflows as code.
apiVersion: workflows.ext.grafana.app/v1alpha1
kind: Definition
metadata:
name: weekly-service-health-summary
annotations:
grafana.app/folder: <FOLDER_UID>
spec:
name: Weekly service health summary
enabled: false
startWhen:
matchingRules: []
schedules:
- 'CRON_TZ=America/New_York 0 9 * * 5'
steps:
- id: summarize
type: assistant.prompt
name: Summarize service health
description: >-
Asks Grafana Assistant for a structured weekly health review. Replace checkout-api,
payments-worker in the first line of the prompt with the services your team owns, as they
appear in your telemetry. Adjust the focus areas to match what your team tracks.
inputs:
prompt: |
Produce a weekly health summary for these services: checkout-api, payments-worker
Cover ${now() - duration('168h')} to ${now()}. For each service, check:
- SLO status and how much error budget was burned this week
- Incidents and alert groups that involved the service
- Error rate and latency trends compared with the previous week
- Anything unusual, such as new error types, saturation, or deploy-related regressions
Rate each service healthy, degraded, or at_risk. Then name the top risks for next week.
Write slackMessage in Slack mrkdwn, at most 2500 characters, with one line per service, an emoji for its status, and the top risks at the end.
outputSchema: |
{
"type": "object",
"required": ["overallStatus", "slackMessage"],
"properties": {
"overallStatus": { "type": "string", "enum": ["healthy", "degraded", "at_risk"] },
"slackMessage": { "type": "string" }
}
}
maxRetries: '3'
- id: post-summary
type: slack.message.post
name: Post the summary to Slack
description: Posts the weekly summary. Set channelID to the channel where your team reviews service health.
inputs:
channelID: ''
messageText: |
:bar_chart: *Weekly service health* (overall: *${steps.summarize.outputs.result.overallStatus}*)
${steps.summarize.outputs.result.slackMessage}How it works
This section explains when the workflow runs and how its steps work together.
When it runs
This blueprint runs on the schedule CRON_TZ=America/New_York 0 9 * * 5.
How the steps fit together
These notes cover how the steps connect and which Workflows behaviors the blueprint relies on.
- Schedule trigger using
CRON_TZso it runs at 9:00 AM New York time every Friday, adjusting for daylight saving time. - The
assistant.promptstep asks Grafana Assistant to research SLOs, incidents, alerts, and golden signals for those services over the past 7 days and return JSON that matchesoutputSchema. - The Slack step reads the validated object at
steps.summarize.outputs.result. - Schedule-triggered workflows cannot use
runOnceFor, because scheduled runs are already deduplicated by tick. - Customize the service list, the schedule and timezone, the prompt focus areas, and the Slack channel.
Next steps
Was this page helpful?
Related resources from Grafana Labs


