Webhook & Incident Notification Template Studio
Tornado 6.4 Async
Reset
Fire Synthetic Alert
Render & Preview
Tornado Template Source & Tokens
Tokens:
{{user["name"]}}
{{node["hostname"]}}
{{metric["latency_p99"]}}
Alert Headline / Push Notification Title
<!DOCTYPE html> <html> <head> <style> body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; background: #0f172a; padding: 20px; color: #e2e8f0; margin: 0; } .alert-card { max-width: 650px; margin: 0 auto; background: #1e293b; border-radius: 12px; border: 1px solid #334155; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,0.5); } .alert-header { background: #dc2626; color: #ffffff; padding: 20px 24px; display: flex; justify-content: space-between; align-items: center; } .alert-title { font-size: 16px; font-weight: 800; letter-spacing: -0.3px; } .alert-body { padding: 24px; } .metric-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 20px 0; } .metric-card { background: #0f172a; border: 1px solid #334155; border-radius: 8px; padding: 12px; } .metric-label { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; margin-bottom: 4px; } .metric-val { font-size: 16px; font-weight: 700; color: #f8fafc; font-family: monospace; } .info-table { width: 100%; border-collapse: collapse; font-size: 13px; margin-top: 14px; } .info-table td { padding: 8px 0; border-bottom: 1px solid #334155; } .info-table td:first-child { color: #94a3b8; width: 130px; font-weight: 600; } .btn-ack { display: inline-block; background: #2563eb; color: #ffffff !important; padding: 10px 22px; border-radius: 6px; font-weight: 600; text-decoration: none; font-size: 13px; margin-top: 18px; } .alert-footer { background: #0f172a; padding: 14px 24px; font-size: 11px; color: #64748b; border-top: 1px solid #334155; text-align: center; } </style> </head> <body> <div class="alert-card"> <div class="alert-header"> <div class="alert-title"><i class="bi bi-exclamation-triangle-fill me-2"></i> {{incident["severity"]}} Alert</div> <div style="font-size: 12px; opacity: 0.9; font-family: monospace;">{{incident["id"]}}</div> </div> <div class="alert-body"> <h3 style="margin: 0 0 8px 0; font-size: 18px; color: #f8fafc;">{{incident["summary"]}}</h3> <p style="font-size: 13px; color: #94a3b8; margin: 0 0 16px 0;">Automated trigger dispatched to on-call engineer <strong>{{user["name"]}}</strong> ({{user["role"]}}).</p> <div class="metric-grid"> <div class="metric-card"> <div class="metric-label">P99 Latency</div> <div class="metric-val" style="color: #f87171;">{{metric["latency_p99"]}}</div> </div> <div class="metric-card"> <div class="metric-label">Throughput</div> <div class="metric-val" style="color: #38bdf8;">{{metric["throughput"]}}</div> </div> <div class="metric-card"> <div class="metric-label">CPU Load</div> <div class="metric-val" style="color: #fbbf24;">{{metric["cpu_load"]}}</div> </div> </div> <table class="info-table"> <tr> <td>Affected Node</td> <td><strong>{{node["hostname"]}}</strong> ({{node["ip"]}})</td> </tr> <tr> <td>Cloud Region</td> <td>{{node["region"]}}</td> </tr> <tr> <td>Status & Uptime</td> <td><span style="color: #f87171; font-weight: bold;">{{node["status"]}}</span> • {{node["uptime"]}}</td> </tr> <tr> <td>Event Timestamp</td> <td>{{incident["timestamp"]}}</td> </tr> </table> <center> <a href="#" class="btn-ack">Acknowledge Incident in PagerDuty →</a> </center> </div> <div class="alert-footer"> Generated by {{app_title}} • Python Async Microservice Event Pipeline </div> </div> </body> </html>
Engine:
Python 3.12 (Tornado Template Parser)
Re-Render Notification
Dispatch Simulation View
Webhook View
Email View
Origin:
TornadoAlert Telemetry Daemon <alerts@tornado-cloud.io>
Subscriber:
Elena Rostova (On-Call SRE)
Headline:
sh: line 1: python3: command not found
sh: line 1: python3: command not found