grafana: provision Loki/Prometheus datasources + log dashboards

Bind two ready-to-use dashboards at grafana.t4t-gateway.com:

- Logs — All services: per-service log volume timeseries + live tail,
  with a service selector and a free-text search box.
- Hosted-gateway API — errors & PSS inbox: error rate, ack/deliver
  counters, and a live tail filtered to PSS inbox traffic so the
  webhook fallback is observable.

Datasources + dashboard providers are mounted via Docker configs from
hostinger/grafana/ so they survive grafana container restarts and live
in git rather than the Grafana UI.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Felix FaerberandClaude Opus 4.7 committed 2026-05-29 10:53:26 +03:00
1 parent 9b58c2e76e
commit 7fcd9df9d3
5 files changed
+209

No files matched your search

@@ -0,0 +1,78 @@
{
"title": "Logs — All services",
"uid": "t4t-logs-overview",
"schemaVersion": 39,
"version": 1,
"editable": true,
"graphTooltip": 0,
"refresh": "10s",
"tags": ["t4t", "loki"],
"time": {"from": "now-30m", "to": "now"},
"timepicker": {},
"templating": {
"list": [
{
"name": "service",
"type": "query",
"datasource": {"type": "loki", "uid": "loki"},
"label": "Service",
"refresh": 2,
"includeAll": true,
"multi": true,
"current": {"text": "All", "value": "$__all"},
"query": "label_values(swarm_service)",
"sort": 1
},
{
"name": "search",
"type": "textbox",
"label": "Search",
"current": {"text": "", "value": ""}
}
]
},
"panels": [
{
"type": "timeseries",
"title": "Log volume per service",
"gridPos": {"h": 8, "w": 24, "x": 0, "y": 0},
"datasource": {"type": "loki", "uid": "loki"},
"targets": [
{
"expr": "sum by (swarm_service) (count_over_time({swarm_service=~\"$service\"} |~ \"(?i)$search\" [1m]))",
"legendFormat": "{{swarm_service}}",
"refId": "A"
}
],
"fieldConfig": {
"defaults": {
"custom": {"drawStyle": "bars", "lineWidth": 1, "fillOpacity": 60, "stacking": {"mode": "normal"}},
"unit": "logs"
}
},
"options": {"legend": {"displayMode": "table", "placement": "right", "calcs": ["sum"]}}
},
{
"type": "logs",
"title": "Live logs",
"gridPos": {"h": 22, "w": 24, "x": 0, "y": 8},
"datasource": {"type": "loki", "uid": "loki"},
"targets": [
{
"expr": "{swarm_service=~\"$service\"} |~ \"(?i)$search\"",
"refId": "A"
}
],
"options": {
"showTime": true,
"showLabels": false,
"showCommonLabels": false,
"wrapLogMessage": true,
"prettifyLogMessage": false,
"enableLogDetails": true,
"dedupStrategy": "none",
"sortOrder": "Descending"
}
}
]
}