CtrlK
BlogDocsLog inGet started
Tessl Logo

nitinjain999/platform-skills

Production-grade platform engineering handbook — Kubernetes, Terraform, Flux CD, GitHub Actions, AWS, and more.

67

Quality

84%

Does it follow best practices?

Impact

No eval scenarios have been run

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

README.mdexamples/dora/

DORA Metrics Examples

Status: Stable

Working examples for tracking the four DORA metrics — Deployment Frequency, Lead Time for Changes, Change Failure Rate, and MTTR — using GitHub Actions, Prometheus Pushgateway, Prometheus recording rules, and Grafana.

How it fits together

  1. GitHub Actions pushes raw metric events (deploy timestamps, lead time, incident lifecycle) to a Prometheus Pushgateway.
  2. Prometheus recording rules aggregate those raw events into the four DORA KPIs over a 30-day window.
  3. Grafana visualises the KPIs with DORA performance-band thresholds (Elite / High / Medium / Low).

Files

FileDescription
deployment-event-step.yamlGitHub Actions step: push deploy event to Prometheus Pushgateway
incident-webhook-handler.yamlGitHub Actions workflow triggered by PagerDuty/OpsGenie webhook
prometheus-recording-rules.yamlAll four DORA Prometheus recording rules
grafana-dashboard.jsonGrafana dashboard JSON with four DORA panels and threshold bands
dora-validate.shDomain validator
amp-variant/AMP-specific replacements — see below

Amazon Managed Prometheus (AMP)

AMP has no public Pushgateway endpoint. Use the files in amp-variant/ alongside the standard files:

amp-variant fileWhat it does
pushgateway-helm-values.yamlDeploys in-cluster Pushgateway (GitHub Actions still pushes here)
prometheus-agent-values.yamlPrometheus Agent: scrapes Pushgateway, remote_writes to AMP via SigV4/IRSA
amp-recording-rules-deploy.shAWS CLI script to create/update DORA rules in AMP (replaces kubectl apply)
grafana-amp-datasource.yamlGrafana datasource ConfigMap for self-hosted Grafana → AMP (SigV4)
grafana-amg-datasource.jsonDatasource config for Amazon Managed Grafana

The deployment-event-step.yaml, incident-webhook-handler.yaml, prometheus-recording-rules.yaml, and grafana-dashboard.json files are unchanged — only the infrastructure wiring differs.

Usage

1. Push deployment events

Append deployment-event-step.yaml to your existing production deploy workflow. Set PUSHGATEWAY_URL as a repository secret pointing to your Pushgateway instance.

2. Handle incident events

Deploy incident-webhook-handler.yaml as a GitHub Actions workflow. Configure your PagerDuty or OpsGenie account to send repository_dispatch webhook events to the GitHub API.

3. Apply Prometheus recording rules

kubectl apply -f examples/dora/prometheus-recording-rules.yaml

Or add the file to your Prometheus Operator PrometheusRule CRD if using the kube-prometheus-stack Helm chart.

4. Import Grafana dashboard

Import grafana-dashboard.json via Grafana UI: Dashboards → Import → Upload JSON file, or provision it via your GitOps pipeline into the Grafana provisioning directory.

Validation

Run the domain validator from the repository root:

bash examples/dora/dora-validate.sh

The validator checks all YAML files with yq and the JSON dashboard with python3. It exits non-zero if any file fails.

Prerequisites

ToolMinimum versionPurpose
yqv4+YAML validation
python33.6+JSON validation
Prometheus PushgatewayanyReceives metric pushes from CI
Prometheus2.xEvaluates recording rules
Grafana9+Dashboard rendering (schemaVersion 36)

examples

BEFORE_AFTER.md

CHANGELOG.md

CODE_OF_CONDUCT.md

COMMANDS.md

CONTRIBUTING.md

EDITOR_INTEGRATIONS.md

GETTING_STARTED.md

HOW_IT_WORKS.md

install.sh

INSTALLATION.md

LAUNCH.md

PROMPTS.md

QUICKSTART.md

README.md

renovate.json

SECURITY.md

SKILL.md

tessl.json

tile.json