Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
Export Center CI / export-ci (push) Has been cancelled
Findings Ledger CI / build-test (push) Has been cancelled
Findings Ledger CI / migration-validation (push) Has been cancelled
Findings Ledger CI / generate-manifest (push) Has been cancelled
Manifest Integrity / Validate Schema Integrity (push) Has been cancelled
Lighthouse CI / Lighthouse Audit (push) Has been cancelled
Lighthouse CI / Axe Accessibility Audit (push) Has been cancelled
Manifest Integrity / Validate Contract Documents (push) Has been cancelled
Manifest Integrity / Validate Pack Fixtures (push) Has been cancelled
Manifest Integrity / Audit SHA256SUMS Files (push) Has been cancelled
Manifest Integrity / Verify Merkle Roots (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
Policy Simulation / policy-simulate (push) Has been cancelled
- Implemented tests for Cryptographic Failures (A02) to ensure proper handling of sensitive data, secure algorithms, and key management. - Added tests for Security Misconfiguration (A05) to validate production configurations, security headers, CORS settings, and feature management. - Developed tests for Authentication Failures (A07) to enforce strong password policies, rate limiting, session management, and MFA support. - Created tests for Software and Data Integrity Failures (A08) to verify artifact signatures, SBOM integrity, attestation chains, and feed updates.
553 lines
14 KiB
JSON
553 lines
14 KiB
JSON
{
|
|
"annotations": {
|
|
"list": [
|
|
{
|
|
"builtIn": 1,
|
|
"datasource": {
|
|
"type": "datasource",
|
|
"uid": "grafana"
|
|
},
|
|
"enable": true,
|
|
"hide": true,
|
|
"iconColor": "rgba(0, 211, 255, 1)",
|
|
"name": "Annotations & Alerts",
|
|
"type": "dashboard"
|
|
}
|
|
]
|
|
},
|
|
"description": "Time to First Signal (TTFS) observability dashboard for StellaOps",
|
|
"editable": true,
|
|
"fiscalYearStartMonth": 0,
|
|
"graphTooltip": 0,
|
|
"id": null,
|
|
"links": [],
|
|
"liveNow": false,
|
|
"panels": [
|
|
{
|
|
"title": "TTFS P50/P95/P99 by Surface",
|
|
"type": "timeseries",
|
|
"gridPos": { "x": 0, "y": 0, "w": 12, "h": 8 },
|
|
"id": 1,
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${datasource}"
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "histogram_quantile(0.50, sum(rate(ttfs_latency_seconds_bucket[5m])) by (le, surface))",
|
|
"legendFormat": "P50 - {{surface}}",
|
|
"refId": "A"
|
|
},
|
|
{
|
|
"expr": "histogram_quantile(0.95, sum(rate(ttfs_latency_seconds_bucket[5m])) by (le, surface))",
|
|
"legendFormat": "P95 - {{surface}}",
|
|
"refId": "B"
|
|
},
|
|
{
|
|
"expr": "histogram_quantile(0.99, sum(rate(ttfs_latency_seconds_bucket[5m])) by (le, surface))",
|
|
"legendFormat": "P99 - {{surface}}",
|
|
"refId": "C"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "s",
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{ "value": null, "color": "green" },
|
|
{ "value": 2, "color": "yellow" },
|
|
{ "value": 5, "color": "red" }
|
|
]
|
|
},
|
|
"custom": {
|
|
"lineWidth": 1,
|
|
"fillOpacity": 10,
|
|
"showPoints": "auto"
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"legend": {
|
|
"displayMode": "table",
|
|
"placement": "bottom",
|
|
"calcs": ["mean", "max", "lastNotNull"]
|
|
},
|
|
"tooltip": {
|
|
"mode": "multi",
|
|
"sort": "desc"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"title": "Cache Hit Rate",
|
|
"type": "stat",
|
|
"gridPos": { "x": 12, "y": 0, "w": 6, "h": 4 },
|
|
"id": 2,
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${datasource}"
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "sum(rate(ttfs_cache_hit_total[5m])) / sum(rate(ttfs_signal_total[5m]))",
|
|
"legendFormat": "Hit Rate",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "percentunit",
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{ "value": null, "color": "red" },
|
|
{ "value": 0.7, "color": "yellow" },
|
|
{ "value": 0.9, "color": "green" }
|
|
]
|
|
},
|
|
"mappings": []
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"reduceOptions": {
|
|
"values": false,
|
|
"calcs": ["lastNotNull"],
|
|
"fields": ""
|
|
},
|
|
"orientation": "auto",
|
|
"textMode": "auto",
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "auto"
|
|
}
|
|
},
|
|
{
|
|
"title": "SLO Breaches (P95 > 5s)",
|
|
"type": "stat",
|
|
"gridPos": { "x": 18, "y": 0, "w": 6, "h": 4 },
|
|
"id": 3,
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${datasource}"
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "sum(increase(ttfs_slo_breach_total[1h]))",
|
|
"legendFormat": "Breaches (1h)",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{ "value": null, "color": "green" },
|
|
{ "value": 1, "color": "yellow" },
|
|
{ "value": 10, "color": "red" }
|
|
]
|
|
},
|
|
"mappings": []
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"reduceOptions": {
|
|
"values": false,
|
|
"calcs": ["lastNotNull"],
|
|
"fields": ""
|
|
},
|
|
"orientation": "auto",
|
|
"textMode": "auto",
|
|
"colorMode": "background",
|
|
"graphMode": "none",
|
|
"justifyMode": "auto"
|
|
}
|
|
},
|
|
{
|
|
"title": "Signal Source Distribution",
|
|
"type": "piechart",
|
|
"gridPos": { "x": 12, "y": 4, "w": 6, "h": 4 },
|
|
"id": 4,
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${datasource}"
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "sum by (signal_source) (rate(ttfs_signal_total[1h]))",
|
|
"legendFormat": "{{signal_source}}",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"mappings": []
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"legend": {
|
|
"displayMode": "list",
|
|
"placement": "right"
|
|
},
|
|
"pieType": "pie",
|
|
"tooltip": {
|
|
"mode": "single"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"title": "Failure Signature Matches",
|
|
"type": "stat",
|
|
"gridPos": { "x": 18, "y": 4, "w": 6, "h": 4 },
|
|
"id": 5,
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${datasource}"
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "sum(rate(ttfs_failure_signature_match_total[5m]))",
|
|
"legendFormat": "Matches/s",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "reqps",
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{ "value": null, "color": "blue" }
|
|
]
|
|
}
|
|
},
|
|
"overrides": []
|
|
}
|
|
},
|
|
{
|
|
"title": "Signals by Kind",
|
|
"type": "timeseries",
|
|
"gridPos": { "x": 0, "y": 8, "w": 12, "h": 6 },
|
|
"id": 6,
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${datasource}"
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "sum by (kind) (rate(ttfs_signal_total[5m]))",
|
|
"legendFormat": "{{kind}}",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "reqps",
|
|
"custom": {
|
|
"lineWidth": 1,
|
|
"fillOpacity": 20,
|
|
"stacking": {
|
|
"mode": "normal",
|
|
"group": "A"
|
|
}
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"legend": {
|
|
"displayMode": "list",
|
|
"placement": "bottom"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"title": "Error Rate",
|
|
"type": "timeseries",
|
|
"gridPos": { "x": 12, "y": 8, "w": 12, "h": 6 },
|
|
"id": 7,
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${datasource}"
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "sum(rate(ttfs_error_total[5m])) / sum(rate(ttfs_signal_total[5m]))",
|
|
"legendFormat": "Error Rate",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "percentunit",
|
|
"max": 0.1,
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{ "value": null, "color": "green" },
|
|
{ "value": 0.01, "color": "yellow" },
|
|
{ "value": 0.05, "color": "red" }
|
|
]
|
|
},
|
|
"custom": {
|
|
"lineWidth": 2,
|
|
"fillOpacity": 10
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"options": {
|
|
"legend": {
|
|
"displayMode": "list",
|
|
"placement": "bottom"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"title": "TTFS Latency Heatmap",
|
|
"type": "heatmap",
|
|
"gridPos": { "x": 0, "y": 14, "w": 12, "h": 8 },
|
|
"id": 8,
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${datasource}"
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "sum(increase(ttfs_latency_seconds_bucket[1m])) by (le)",
|
|
"legendFormat": "{{le}}",
|
|
"format": "heatmap",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"options": {
|
|
"calculate": false,
|
|
"yAxis": {
|
|
"axisPlacement": "left",
|
|
"unit": "s"
|
|
},
|
|
"color": {
|
|
"scheme": "Spectral",
|
|
"mode": "scheme"
|
|
},
|
|
"cellGap": 1
|
|
}
|
|
},
|
|
{
|
|
"title": "First Signal Endpoint Latency",
|
|
"type": "timeseries",
|
|
"gridPos": { "x": 12, "y": 14, "w": 12, "h": 8 },
|
|
"id": 9,
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${datasource}"
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "histogram_quantile(0.50, sum(rate(http_request_duration_seconds_bucket{route=~\"/api/v1/orchestrator/runs/.*/first-signal\"}[5m])) by (le))",
|
|
"legendFormat": "P50",
|
|
"refId": "A"
|
|
},
|
|
{
|
|
"expr": "histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket{route=~\"/api/v1/orchestrator/runs/.*/first-signal\"}[5m])) by (le))",
|
|
"legendFormat": "P95",
|
|
"refId": "B"
|
|
},
|
|
{
|
|
"expr": "histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket{route=~\"/api/v1/orchestrator/runs/.*/first-signal\"}[5m])) by (le))",
|
|
"legendFormat": "P99",
|
|
"refId": "C"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "s",
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{ "value": null, "color": "green" },
|
|
{ "value": 0.3, "color": "yellow" },
|
|
{ "value": 0.5, "color": "red" }
|
|
]
|
|
},
|
|
"custom": {
|
|
"lineWidth": 1,
|
|
"fillOpacity": 10
|
|
}
|
|
},
|
|
"overrides": []
|
|
}
|
|
},
|
|
{
|
|
"title": "Open→Action Time Distribution",
|
|
"type": "histogram",
|
|
"gridPos": { "x": 0, "y": 22, "w": 8, "h": 6 },
|
|
"id": 10,
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${datasource}"
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "sum(increase(ttfs_open_to_action_seconds_bucket[5m])) by (le)",
|
|
"legendFormat": "{{le}}",
|
|
"format": "heatmap",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "s"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"title": "Bounce Rate (< 10s)",
|
|
"type": "stat",
|
|
"gridPos": { "x": 8, "y": 22, "w": 4, "h": 6 },
|
|
"id": 11,
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${datasource}"
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "sum(rate(ttfs_bounce_total[5m])) / sum(rate(ttfs_page_view_total[5m]))",
|
|
"legendFormat": "Bounce Rate",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "percentunit",
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{ "value": null, "color": "green" },
|
|
{ "value": 0.3, "color": "yellow" },
|
|
{ "value": 0.5, "color": "red" }
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"title": "Top Failure Signatures",
|
|
"type": "table",
|
|
"gridPos": { "x": 12, "y": 22, "w": 12, "h": 6 },
|
|
"id": 12,
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${datasource}"
|
|
},
|
|
"targets": [
|
|
{
|
|
"expr": "topk(10, sum by (error_token, error_code) (ttfs_failure_signature_hit_total))",
|
|
"legendFormat": "{{error_token}} ({{error_code}})",
|
|
"format": "table",
|
|
"instant": true,
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {
|
|
"align": "auto"
|
|
}
|
|
},
|
|
"overrides": [
|
|
{
|
|
"matcher": { "id": "byName", "options": "Value" },
|
|
"properties": [
|
|
{ "id": "displayName", "value": "Hit Count" }
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"transformations": [
|
|
{
|
|
"id": "organize",
|
|
"options": {
|
|
"excludeByName": {
|
|
"Time": true
|
|
},
|
|
"renameByName": {
|
|
"error_token": "Token",
|
|
"error_code": "Code"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"refresh": "30s",
|
|
"schemaVersion": 38,
|
|
"style": "dark",
|
|
"tags": ["ttfs", "ux", "slo", "stellaops"],
|
|
"templating": {
|
|
"list": [
|
|
{
|
|
"current": {
|
|
"selected": false,
|
|
"text": "Prometheus",
|
|
"value": "prometheus"
|
|
},
|
|
"hide": 0,
|
|
"includeAll": false,
|
|
"label": "Datasource",
|
|
"multi": false,
|
|
"name": "datasource",
|
|
"options": [],
|
|
"query": "prometheus",
|
|
"refresh": 1,
|
|
"regex": "",
|
|
"skipUrlSync": false,
|
|
"type": "datasource"
|
|
},
|
|
{
|
|
"allValue": ".*",
|
|
"current": {
|
|
"selected": true,
|
|
"text": "All",
|
|
"value": "$__all"
|
|
},
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${datasource}"
|
|
},
|
|
"definition": "label_values(ttfs_latency_seconds_bucket, surface)",
|
|
"hide": 0,
|
|
"includeAll": true,
|
|
"label": "Surface",
|
|
"multi": true,
|
|
"name": "surface",
|
|
"options": [],
|
|
"query": {
|
|
"query": "label_values(ttfs_latency_seconds_bucket, surface)",
|
|
"refId": "PrometheusVariableQueryEditor-VariableQuery"
|
|
},
|
|
"refresh": 2,
|
|
"regex": "",
|
|
"skipUrlSync": false,
|
|
"sort": 1,
|
|
"type": "query"
|
|
}
|
|
]
|
|
},
|
|
"time": {
|
|
"from": "now-6h",
|
|
"to": "now"
|
|
},
|
|
"timepicker": {},
|
|
"timezone": "utc",
|
|
"title": "TTFS - Time to First Signal",
|
|
"uid": "ttfs-overview",
|
|
"version": 1,
|
|
"weekStart": ""
|
|
}
|