Define your service once. NthLayer generates SLOs, alerts, dashboards,
recording rules, and runbooksβwith technology-specific best practices built in.
What you get from one YAML file
Watch NthLayer transform a service definition into complete observability
Simple YAML file describing your service and dependencies:
service:
name: payment-api
tier: critical
description: Payment processing service
dependencies:
databases:
- type: postgresql
name: payments-db
- type: redis
name: session-cache
external:
- name: stripe-api
critical: true
Generate everything with a single unified command:
$ nthlayer apply payment-api.yaml
π Analyzing service: payment-api
β
[1/5] SLOs β 3 created
β’ availability (99.9%)
β’ latency-p95 (500ms)
β’ latency-p99 (1000ms)
β
[2/5] Alerts β 28 created
β’ 8 SLO burn rate alerts
β’ 6 service health alerts
β’ 14 dependency alerts
β
[3/5] Dashboard β 1 created
β’ 12 panels (health, SLOs, dependencies)
β’ Auto-configured for Grafana
β
[4/5] Recording β 21 created
β’ 10x faster dashboard queries
β
[5/5] PagerDuty β configured
β’ Team, schedules, escalation policy
β’ Tier-based timing (5/15/30min for critical)
β¨ Done in 2.3s
Real dashboard running in Grafana Cloud, powered by live metrics from our demo app:
Each dashboard is organized into: SLO Metrics β Service Health β Dependencies
Click any service to view its auto-generated Grafana dashboard
118 production-ready alerts across 6 services, sourced from awesome-prometheus-alerts
Click any service to view its generated Prometheus alert rules on GitHub
Generated alerts are standard Prometheus format β deploy anywhere
Using Prometheus Operator? Apply as a PrometheusRule CRD:
# Wrap in PrometheusRule CRD
cat <<EOF | kubectl apply -f -
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: payment-api-alerts
labels:
release: prometheus
spec:
$(cat generated/payment-api/alerts.yaml | sed 's/^/ /')
EOF
Push directly to Grafana Mimir or Cortex ruler:
# Using mimirtool
mimirtool rules load \
--address=https://mimir.example.com \
--id=your-tenant \
generated/payment-api/alerts.yaml
# Or via API
curl -X POST https://mimir.example.com/prometheus/config/v1/rules/payment-api \
-H "X-Scope-OrgID: your-tenant" \
--data-binary @generated/payment-api/alerts.yaml
Commit to your GitOps repo β ArgoCD or Flux handles the rest:
# Add to your GitOps repository
cp generated/payment-api/alerts.yaml \
k8s/monitoring/rules/payment-api.yaml
git add k8s/monitoring/rules/
git commit -m "Add payment-api alerting rules"
git push
# ArgoCD/Flux automatically syncs to cluster
# No manual kubectl required!
Traditional Prometheus? Copy to rules directory and reload:
# Copy to Prometheus rules directory
cp generated/payment-api/alerts.yaml \
/etc/prometheus/rules/payment-api.yaml
# Validate syntax
promtool check rules /etc/prometheus/rules/*.yaml
# Reload Prometheus config
curl -X POST http://localhost:9090/-/reload
Complete incident response setup with tier-based escalation policies
Auto-creates teams with manager roles assigned to API key owner
Primary, secondary, and manager schedules with weekly rotation
Critical: 5β15β30min | High: 15β30β60min | Low: 60min only
Services linked to escalation policies with urgency settings
Team with manager role
Tier-based escalation (5/15/30min)
Service linked to policy
Install NthLayer and generate your first reliability stack in minutes:
pipx install nthlayer
Alpha
nthlayer init my-service --template api
nthlayer apply my-service.yaml
Or install with pip: pip install nthlayer