- Implemented `MongoIndexModelTests` to verify index models for various stores. - Created `OpenApiMetadataFactory` with methods to generate OpenAPI metadata. - Added tests for `OpenApiMetadataFactory` to ensure expected defaults and URL overrides. - Introduced `ObserverSurfaceSecrets` and `WebhookSurfaceSecrets` for managing secrets. - Developed `RuntimeSurfaceFsClient` and `WebhookSurfaceFsClient` for manifest retrieval. - Added dependency injection tests for `SurfaceEnvironmentRegistration` in both Observer and Webhook contexts. - Implemented tests for secret resolution in `ObserverSurfaceSecretsTests` and `WebhookSurfaceSecretsTests`. - Created `EnsureLinkNotMergeCollectionsMigrationTests` to validate MongoDB migration logic. - Added project files for MongoDB tests and NuGet package mirroring.
92 lines
3.1 KiB
JSON
92 lines
3.1 KiB
JSON
{
|
|
"id": null,
|
|
"title": "StellaOps Findings Ledger",
|
|
"timezone": "utc",
|
|
"schemaVersion": 39,
|
|
"version": 1,
|
|
"refresh": "30s",
|
|
"tags": ["ledger", "findings", "stellaops"],
|
|
"panels": [
|
|
{
|
|
"type": "timeseries",
|
|
"title": "Ledger Write Latency (P50/P95)",
|
|
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 0 },
|
|
"targets": [
|
|
{ "expr": "histogram_quantile(0.5, sum(rate(ledger_write_latency_seconds_bucket{tenant=\"$tenant\"}[5m])) by (le))", "legendFormat": "p50" },
|
|
{ "expr": "histogram_quantile(0.95, sum(rate(ledger_write_latency_seconds_bucket{tenant=\"$tenant\"}[5m])) by (le))", "legendFormat": "p95" }
|
|
],
|
|
"fieldConfig": { "defaults": { "unit": "s" } }
|
|
},
|
|
{
|
|
"type": "timeseries",
|
|
"title": "Write Throughput",
|
|
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 0 },
|
|
"targets": [
|
|
{ "expr": "sum(rate(ledger_events_total{tenant=\"$tenant\"}[5m])) by (event_type)", "legendFormat": "{{event_type}}" }
|
|
],
|
|
"fieldConfig": { "defaults": { "unit": "ops" } }
|
|
},
|
|
{
|
|
"type": "timeseries",
|
|
"title": "Projection Lag",
|
|
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 8 },
|
|
"targets": [
|
|
{ "expr": "max(ledger_projection_lag_seconds{tenant=\"$tenant\"})", "legendFormat": "lag" }
|
|
],
|
|
"fieldConfig": { "defaults": { "unit": "s" } }
|
|
},
|
|
{
|
|
"type": "timeseries",
|
|
"title": "Merkle Anchor Duration",
|
|
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 8 },
|
|
"targets": [
|
|
{ "expr": "histogram_quantile(0.95, sum(rate(ledger_merkle_anchor_duration_seconds_bucket{tenant=\"$tenant\"}[5m])) by (le))", "legendFormat": "p95" }
|
|
],
|
|
"fieldConfig": { "defaults": { "unit": "s" } }
|
|
},
|
|
{
|
|
"type": "stat",
|
|
"title": "Merkle Anchor Failures (5m)",
|
|
"gridPos": { "h": 4, "w": 6, "x": 0, "y": 16 },
|
|
"targets": [
|
|
{ "expr": "sum(rate(ledger_merkle_anchor_failures_total{tenant=\"$tenant\"}[5m]))", "legendFormat": "fail/s" }
|
|
],
|
|
"options": { "reduceOptions": { "calcs": ["lastNotNull"] } }
|
|
},
|
|
{
|
|
"type": "stat",
|
|
"title": "Attachment Failures (5m)",
|
|
"gridPos": { "h": 4, "w": 6, "x": 6, "y": 16 },
|
|
"targets": [
|
|
{ "expr": "sum(rate(ledger_attachments_encryption_failures_total{tenant=\"$tenant\"}[5m])) by (stage)", "legendFormat": "{{stage}}" }
|
|
],
|
|
"options": { "reduceOptions": { "calcs": ["lastNotNull"] } }
|
|
},
|
|
{
|
|
"type": "stat",
|
|
"title": "Ledger Backlog",
|
|
"gridPos": { "h": 4, "w": 6, "x": 12, "y": 16 },
|
|
"targets": [
|
|
{ "expr": "sum(ledger_ingest_backlog_events{tenant=\"$tenant\"})", "legendFormat": "events" }
|
|
]
|
|
}
|
|
],
|
|
"templating": {
|
|
"list": [
|
|
{
|
|
"name": "tenant",
|
|
"type": "query",
|
|
"label": "Tenant",
|
|
"datasource": null,
|
|
"query": "label_values(ledger_events_total, tenant)",
|
|
"refresh": 1,
|
|
"multi": false,
|
|
"includeAll": false
|
|
}
|
|
]
|
|
},
|
|
"annotations": { "list": [] },
|
|
"time": { "from": "now-6h", "to": "now" },
|
|
"timepicker": { "refresh_intervals": ["30s", "1m", "5m", "15m", "1h"] }
|
|
}
|