Beyond Uptime: Monitoring Business Processes
Traditional status pages show infrastructure health: API up, Database up, Cache up. But users don't care about infrastructure—they care about whether they can complete their tasks.
This post explains how to model business processes in Stentorosaur so your status page reflects user-facing capabilities.
The Problem
Your monitoring dashboard shows all green:
✅ API Server: 200 OK (45ms)
✅ Database: Connected
✅ Redis: Connected
✅ Payment Gateway: 200 OK
Meanwhile, users are reporting:
- "Checkout fails at the payment step"
- "Password reset emails never arrive"
- "CSV export has been 'processing' for 3 hours"
The issue? A bug in your checkout flow is causing payment validation to fail—but all the underlying systems are responding normally to health checks.
Infrastructure is up. The user workflow is broken.
The Data Model
Stentorosaur maps GitHub Issues to status entities using labels. The status of an entity is derived from open issues with matching labels.
Entities
Define entities in your Docusaurus config:
// docusaurus.config.js
entities: [
// Infrastructure (traditional uptime)
{ name: 'api', type: 'system', displayName: 'API' },
{ name: 'database', type: 'system', displayName: 'Database' },
// Business processes
{ name: 'checkout', type: 'process', displayName: 'Checkout Flow' },
{ name: 'email-delivery', type: 'process', displayName: 'Email Delivery' },
{ name: 'data-exports', type: 'process', displayName: 'Data Exports' },
]
Labels → Status Mapping
When you create a GitHub Issue with these labels:
Labels: status, critical, process:checkout
Stentorosaur parses:
status→ This is a status-tracking issuecritical→ Severity levelprocess:checkout→ Affects thecheckoutentity
Result: The "Checkout Flow" entity turns red on your status page.
Severity → Color
| Severity Label | Status | Display |
|---|---|---|
critical | Down | Red |
major | Degraded | Orange |
minor | Partial | Yellow |
| (no open issues) | Operational | Green |
Resolution
Close the GitHub Issue → entity returns to green. Issue state drives status state.
When to Use Process vs System
| Use Case | Entity Type | Why |
|---|---|---|
| API Server | system | Single service, has /health endpoint |
| Checkout | process | Spans API, Payment, Inventory, Email |
| Database | system | Direct health check via connection |
| OAuth Login | process | Depends on third-party (Google, GitHub) |
| Email Delivery | process | Third-party service + async queue |
Heuristic: Use process when the workflow spans multiple services or depends on third parties. Use system when a simple health check suffices.
Complete Example: Checkout Monitoring
1. Define the Entity
// docusaurus.config.js
entities: [
{ name: 'checkout', type: 'process', displayName: 'Checkout Flow' },
]
2. Create the Labels
gh label create "process:checkout" --color 1d76db --description "Checkout flow"
3. Set Up Detection
Option A: Synthetic monitoring
Create a health check that exercises the checkout:
{
"systems": [
{
"system": "checkout",
"url": "https://api.example.com/checkout/test",
"method": "POST",
"body": { "test": true, "items": [{"id": "test-sku", "qty": 1}] },
"expectedCodes": [200],
"timeout": 10000
}
]
}
If this endpoint returns non-200, the monitoring workflow creates an issue automatically.
Option B: Error tracking webhook
app.post('/webhooks/sentry', async (req, res) => {
const { event, issue } = req.body;
if (event === 'issue.created' && issue.tags.process === 'checkout') {
await octokit.issues.create({
owner: 'your-org',
repo: 'your-repo',
title: `Checkout errors: ${issue.title}`,
labels: ['status', 'major', 'process:checkout'],
body: `Error spike: ${issue.count} errors in 5 minutes.`,
});
}
res.sendStatus(200);
});
Option C: Manual creation
gh issue create \
--title "Checkout failing for EU users" \
--label "status,major,process:checkout" \
--body "Users report payment validation errors."
4. Status Page Updates
After the issue is created, your next site build shows:
Processes
🔴 Checkout Flow
└─ Issue #42: Checkout failing for EU users
🟢 Email Delivery
🟢 Data Exports
5. Resolution
Fix the bug. Close the issue:
gh issue close 42 --comment "Fixed in deploy v1.2.3"
Next build:
Processes
🟢 Checkout Flow
🟢 Email Delivery
🟢 Data Exports
Full Configuration
// docusaurus.config.js
{
plugins: [
[
'@amiable-dev/docusaurus-plugin-stentorosaur',
{
owner: 'your-org',
repo: 'your-repo',
// Enable runtime data fetching (v0.16+)
dataSource: {
strategy: 'github',
owner: 'your-org',
repo: 'your-repo',
},
entities: [
// Infrastructure
{ name: 'api', type: 'system', displayName: 'API' },
{ name: 'database', type: 'system', displayName: 'Database' },
{ name: 'cdn', type: 'system', displayName: 'CDN' },
// User workflows
{ name: 'signup', type: 'process', displayName: 'User Registration' },
{ name: 'login', type: 'process', displayName: 'Authentication' },
{ name: 'checkout', type: 'process', displayName: 'Checkout' },
{ name: 'webhooks', type: 'process', displayName: 'Webhook Delivery' },
// Background jobs
{ name: 'email-delivery', type: 'process', displayName: 'Email Delivery' },
{ name: 'data-exports', type: 'process', displayName: 'Data Exports' },
// Partner integrations
{ name: 'stripe', type: 'sla', displayName: 'Stripe Integration' },
{ name: 'salesforce', type: 'sla', displayName: 'Salesforce Sync' },
],
},
],
],
}
Required labels:
# Severity
gh label create status --color 0366d6
gh label create critical --color d73a4a
gh label create major --color ff6f00
gh label create minor --color fbca04
# Systems
gh label create "system:api" --color 0e8a16
gh label create "system:database" --color 0e8a16
gh label create "system:cdn" --color 0e8a16
# Processes
gh label create "process:signup" --color 1d76db
gh label create "process:login" --color 1d76db
gh label create "process:checkout" --color 1d76db
gh label create "process:webhooks" --color 1d76db
gh label create "process:email-delivery" --color 1d76db
gh label create "process:data-exports" --color 1d76db
# SLAs
gh label create "sla:stripe" --color 5319e7
gh label create "sla:salesforce" --color 5319e7
Status Page Grouping
The status page groups entities by type:
Systems
🟢 API (99.95% uptime)
🟢 Database (99.99% uptime)
🟢 CDN (100% uptime)
Processes
🟢 User Registration
🟢 Authentication
🔴 Checkout ← Issue #42
🟡 Webhook Delivery ← Issue #38 (minor)
🟢 Email Delivery
🟢 Data Exports
Partner Integrations
🟢 Stripe Integration
🟡 Salesforce Sync ← Issue #40 (minor)
Summary
Process monitoring answers: "Can users complete their tasks?"
The model:
- Define entities (systems, processes, SLAs)
- Create matching labels
- Open issues with severity + entity labels
- Close issues to resolve
No special workflow. Just GitHub Issues with the right labels.
Quick Start: Setup Guide Contribute: Contributing Guide Repository: GitHub
