2026-02-08 10:05:38 -08:00
|
|
|
apiVersion: v1
|
|
|
|
|
kind: ConfigMap
|
|
|
|
|
metadata:
|
|
|
|
|
name: grafana-dashboard-flyio
|
|
|
|
|
namespace: monitoring
|
|
|
|
|
labels:
|
|
|
|
|
grafana_dashboard: "1"
|
|
|
|
|
data:
|
|
|
|
|
flyio.json: |
|
|
|
|
|
{
|
|
|
|
|
"annotations": { "list": [] },
|
|
|
|
|
"editable": true,
|
|
|
|
|
"fiscalYearStartMonth": 0,
|
|
|
|
|
"graphTooltip": 1,
|
|
|
|
|
"id": null,
|
|
|
|
|
"links": [],
|
|
|
|
|
"panels": [
|
|
|
|
|
{
|
|
|
|
|
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
|
|
|
|
"fieldConfig": {
|
|
|
|
|
"defaults": {
|
|
|
|
|
"color": { "mode": "thresholds" },
|
|
|
|
|
"mappings": [
|
|
|
|
|
{ "options": { "0": { "color": "red", "text": "DOWN" }, "1": { "color": "green", "text": "UP" } }, "type": "value" }
|
|
|
|
|
],
|
|
|
|
|
"thresholds": { "mode": "absolute", "steps": [{ "color": "red", "value": null }, { "color": "green", "value": 1 }] },
|
|
|
|
|
"unit": "short"
|
|
|
|
|
},
|
|
|
|
|
"overrides": []
|
|
|
|
|
},
|
|
|
|
|
"gridPos": { "h": 6, "w": 6, "x": 0, "y": 0 },
|
|
|
|
|
"id": 1,
|
|
|
|
|
"options": {
|
|
|
|
|
"colorMode": "background",
|
|
|
|
|
"graphMode": "none",
|
|
|
|
|
"justifyMode": "center",
|
|
|
|
|
"orientation": "auto",
|
|
|
|
|
"reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false },
|
|
|
|
|
"textMode": "value"
|
|
|
|
|
},
|
|
|
|
|
"targets": [
|
|
|
|
|
{ "datasource": { "type": "prometheus", "uid": "prometheus" }, "expr": "up{instance=\"flyio-proxy\"}", "refId": "A" }
|
|
|
|
|
],
|
|
|
|
|
"title": "Alloy Health",
|
|
|
|
|
"type": "stat"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
|
|
|
|
"fieldConfig": {
|
|
|
|
|
"defaults": {
|
|
|
|
|
"color": { "mode": "thresholds" },
|
|
|
|
|
"thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] },
|
|
|
|
|
"unit": "reqps"
|
|
|
|
|
},
|
|
|
|
|
"overrides": []
|
|
|
|
|
},
|
|
|
|
|
"gridPos": { "h": 6, "w": 6, "x": 6, "y": 0 },
|
|
|
|
|
"id": 2,
|
|
|
|
|
"options": {
|
|
|
|
|
"colorMode": "value",
|
|
|
|
|
"graphMode": "area",
|
|
|
|
|
"justifyMode": "center",
|
|
|
|
|
"orientation": "auto",
|
|
|
|
|
"reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false },
|
|
|
|
|
"textMode": "auto"
|
|
|
|
|
},
|
|
|
|
|
"targets": [
|
|
|
|
|
{ "datasource": { "type": "prometheus", "uid": "prometheus" }, "expr": "sum(rate(flyio_nginx_http_requests_total{instance=\"flyio-proxy\"}[5m]))", "refId": "A" }
|
|
|
|
|
],
|
|
|
|
|
"title": "Total RPS",
|
|
|
|
|
"type": "stat"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
|
|
|
|
"fieldConfig": {
|
|
|
|
|
"defaults": {
|
|
|
|
|
"color": { "mode": "thresholds" },
|
|
|
|
|
"thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }, { "color": "yellow", "value": 0.01 }, { "color": "red", "value": 0.05 }] },
|
|
|
|
|
"unit": "percentunit"
|
|
|
|
|
},
|
|
|
|
|
"overrides": []
|
|
|
|
|
},
|
|
|
|
|
"gridPos": { "h": 6, "w": 6, "x": 12, "y": 0 },
|
|
|
|
|
"id": 3,
|
|
|
|
|
"options": {
|
|
|
|
|
"colorMode": "background",
|
|
|
|
|
"graphMode": "area",
|
|
|
|
|
"justifyMode": "center",
|
|
|
|
|
"orientation": "auto",
|
|
|
|
|
"reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false },
|
|
|
|
|
"textMode": "auto"
|
|
|
|
|
},
|
|
|
|
|
"targets": [
|
|
|
|
|
{ "datasource": { "type": "prometheus", "uid": "prometheus" }, "expr": "sum(rate(flyio_nginx_http_requests_total{instance=\"flyio-proxy\",status=~\"5..\"}[5m])) / sum(rate(flyio_nginx_http_requests_total{instance=\"flyio-proxy\"}[5m]))", "refId": "A" }
|
|
|
|
|
],
|
|
|
|
|
"title": "Error Rate (5xx)",
|
|
|
|
|
"type": "stat"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
|
|
|
|
"fieldConfig": {
|
|
|
|
|
"defaults": {
|
|
|
|
|
"color": { "mode": "thresholds" },
|
2026-02-12 18:40:48 -08:00
|
|
|
"mappings": [{ "type": "special", "options": { "match": "null+nan", "result": { "text": "No traffic", "color": "text" } } }],
|
2026-02-08 10:05:38 -08:00
|
|
|
"thresholds": { "mode": "absolute", "steps": [{ "color": "red", "value": null }, { "color": "yellow", "value": 0.5 }, { "color": "green", "value": 0.8 }] },
|
|
|
|
|
"unit": "percentunit"
|
|
|
|
|
},
|
|
|
|
|
"overrides": []
|
|
|
|
|
},
|
|
|
|
|
"gridPos": { "h": 6, "w": 6, "x": 18, "y": 0 },
|
|
|
|
|
"id": 7,
|
|
|
|
|
"options": {
|
|
|
|
|
"colorMode": "background",
|
|
|
|
|
"graphMode": "none",
|
|
|
|
|
"justifyMode": "center",
|
|
|
|
|
"orientation": "auto",
|
|
|
|
|
"reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false },
|
|
|
|
|
"textMode": "auto"
|
|
|
|
|
},
|
|
|
|
|
"targets": [
|
2026-02-12 18:40:48 -08:00
|
|
|
{ "datasource": { "type": "prometheus", "uid": "prometheus" }, "expr": "sum(increase(flyio_nginx_cache_requests_total{instance=\"flyio-proxy\",cache_status=\"HIT\"}[$__range])) / sum(increase(flyio_nginx_cache_requests_total{instance=\"flyio-proxy\"}[$__range]))", "refId": "A" }
|
2026-02-08 10:05:38 -08:00
|
|
|
],
|
|
|
|
|
"title": "Cache Hit Ratio",
|
|
|
|
|
"type": "stat"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
|
|
|
|
"fieldConfig": {
|
|
|
|
|
"defaults": {
|
|
|
|
|
"color": { "mode": "palette-classic" },
|
|
|
|
|
"custom": {
|
|
|
|
|
"axisBorderShow": false,
|
|
|
|
|
"axisCenteredZero": false,
|
|
|
|
|
"axisColorMode": "text",
|
|
|
|
|
"axisLabel": "req/s",
|
|
|
|
|
"axisPlacement": "auto",
|
|
|
|
|
"barAlignment": 0,
|
|
|
|
|
"drawStyle": "line",
|
|
|
|
|
"fillOpacity": 20,
|
|
|
|
|
"gradientMode": "none",
|
|
|
|
|
"hideFrom": { "legend": false, "tooltip": false, "viz": false },
|
|
|
|
|
"insertNulls": false,
|
|
|
|
|
"lineInterpolation": "linear",
|
|
|
|
|
"lineWidth": 1,
|
|
|
|
|
"pointSize": 5,
|
|
|
|
|
"scaleDistribution": { "type": "linear" },
|
|
|
|
|
"showPoints": "never",
|
|
|
|
|
"spanNulls": false,
|
|
|
|
|
"stacking": { "group": "A", "mode": "normal" },
|
|
|
|
|
"thresholdsStyle": { "mode": "off" }
|
|
|
|
|
},
|
|
|
|
|
"mappings": [],
|
|
|
|
|
"thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] },
|
|
|
|
|
"unit": "reqps"
|
|
|
|
|
},
|
|
|
|
|
"overrides": []
|
|
|
|
|
},
|
|
|
|
|
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 6 },
|
|
|
|
|
"id": 4,
|
|
|
|
|
"options": {
|
|
|
|
|
"legend": { "calcs": ["mean", "max"], "displayMode": "table", "placement": "right", "showLegend": true },
|
|
|
|
|
"tooltip": { "mode": "multi", "sort": "desc" }
|
|
|
|
|
},
|
|
|
|
|
"targets": [
|
|
|
|
|
{ "datasource": { "type": "prometheus", "uid": "prometheus" }, "expr": "sum by (host) (rate(flyio_nginx_http_requests_total{instance=\"flyio-proxy\"}[5m]))", "legendFormat": "{{host}}", "refId": "A" }
|
|
|
|
|
],
|
|
|
|
|
"title": "Total Request Rate by Host",
|
|
|
|
|
"type": "timeseries"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
|
|
|
|
"fieldConfig": {
|
|
|
|
|
"defaults": {
|
|
|
|
|
"color": { "mode": "palette-classic" },
|
|
|
|
|
"custom": {
|
|
|
|
|
"axisBorderShow": false,
|
|
|
|
|
"axisCenteredZero": false,
|
|
|
|
|
"axisColorMode": "text",
|
|
|
|
|
"axisLabel": "",
|
|
|
|
|
"axisPlacement": "auto",
|
|
|
|
|
"fillOpacity": 80,
|
|
|
|
|
"gradientMode": "none",
|
|
|
|
|
"hideFrom": { "legend": false, "tooltip": false, "viz": false },
|
|
|
|
|
"lineWidth": 1,
|
|
|
|
|
"scaleDistribution": { "type": "linear" }
|
|
|
|
|
},
|
|
|
|
|
"mappings": [],
|
|
|
|
|
"thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] },
|
|
|
|
|
"unit": "short"
|
|
|
|
|
},
|
|
|
|
|
"overrides": []
|
|
|
|
|
},
|
|
|
|
|
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 6 },
|
|
|
|
|
"id": 5,
|
|
|
|
|
"options": {
|
|
|
|
|
"barRadius": 0.05,
|
|
|
|
|
"barWidth": 0.7,
|
|
|
|
|
"fullHighlight": false,
|
|
|
|
|
"groupWidth": 0.7,
|
|
|
|
|
"legend": { "calcs": [], "displayMode": "list", "placement": "right", "showLegend": true },
|
|
|
|
|
"orientation": "horizontal",
|
|
|
|
|
"showValue": "always",
|
|
|
|
|
"stacking": "none",
|
|
|
|
|
"tooltip": { "mode": "single", "sort": "none" },
|
|
|
|
|
"xTickLabelRotation": 0
|
|
|
|
|
},
|
|
|
|
|
"targets": [
|
|
|
|
|
{ "datasource": { "type": "prometheus", "uid": "prometheus" }, "expr": "sum by (cache_status) (increase(flyio_nginx_cache_requests_total{instance=\"flyio-proxy\"}[$__range]))", "legendFormat": "{{cache_status}}", "refId": "A", "instant": true }
|
|
|
|
|
],
|
|
|
|
|
"title": "Cache Performance",
|
|
|
|
|
"type": "barchart"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
|
|
|
|
"fieldConfig": {
|
|
|
|
|
"defaults": {
|
|
|
|
|
"color": { "mode": "palette-classic" },
|
|
|
|
|
"custom": {
|
|
|
|
|
"axisBorderShow": false,
|
|
|
|
|
"axisCenteredZero": false,
|
|
|
|
|
"axisColorMode": "text",
|
|
|
|
|
"axisLabel": "seconds",
|
|
|
|
|
"axisPlacement": "auto",
|
|
|
|
|
"barAlignment": 0,
|
|
|
|
|
"drawStyle": "line",
|
|
|
|
|
"fillOpacity": 10,
|
|
|
|
|
"gradientMode": "none",
|
|
|
|
|
"hideFrom": { "legend": false, "tooltip": false, "viz": false },
|
|
|
|
|
"insertNulls": false,
|
|
|
|
|
"lineInterpolation": "linear",
|
|
|
|
|
"lineWidth": 1,
|
|
|
|
|
"pointSize": 5,
|
|
|
|
|
"scaleDistribution": { "type": "linear" },
|
|
|
|
|
"showPoints": "never",
|
|
|
|
|
"spanNulls": false,
|
|
|
|
|
"stacking": { "group": "A", "mode": "none" },
|
|
|
|
|
"thresholdsStyle": { "mode": "off" }
|
|
|
|
|
},
|
|
|
|
|
"mappings": [],
|
|
|
|
|
"thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] },
|
|
|
|
|
"unit": "s"
|
|
|
|
|
},
|
|
|
|
|
"overrides": []
|
|
|
|
|
},
|
|
|
|
|
"gridPos": { "h": 8, "w": 24, "x": 0, "y": 14 },
|
|
|
|
|
"id": 6,
|
|
|
|
|
"options": {
|
|
|
|
|
"legend": { "calcs": ["mean", "max"], "displayMode": "table", "placement": "right", "showLegend": true },
|
|
|
|
|
"tooltip": { "mode": "multi", "sort": "desc" }
|
|
|
|
|
},
|
|
|
|
|
"targets": [
|
2026-04-17 15:05:59 -07:00
|
|
|
{ "datasource": { "type": "prometheus", "uid": "prometheus" }, "expr": "histogram_quantile(0.50, sum by (le) (rate(flyio_nginx_http_request_duration_seconds_bucket{instance=\"flyio-proxy\",host=\"forge.eblu.me\"}[5m])))", "legendFormat": "p50", "refId": "A" },
|
|
|
|
|
{ "datasource": { "type": "prometheus", "uid": "prometheus" }, "expr": "histogram_quantile(0.90, sum by (le) (rate(flyio_nginx_http_request_duration_seconds_bucket{instance=\"flyio-proxy\",host=\"forge.eblu.me\"}[5m])))", "legendFormat": "p90", "refId": "B" },
|
|
|
|
|
{ "datasource": { "type": "prometheus", "uid": "prometheus" }, "expr": "histogram_quantile(0.99, sum by (le) (rate(flyio_nginx_http_request_duration_seconds_bucket{instance=\"flyio-proxy\",host=\"forge.eblu.me\"}[5m])))", "legendFormat": "p99", "refId": "C" }
|
2026-02-08 10:05:38 -08:00
|
|
|
],
|
2026-04-17 15:05:59 -07:00
|
|
|
"title": "Proxy: Latency Percentiles",
|
|
|
|
|
"type": "timeseries"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
|
|
|
|
"fieldConfig": {
|
|
|
|
|
"defaults": {
|
|
|
|
|
"color": { "mode": "palette-classic" },
|
|
|
|
|
"custom": {
|
|
|
|
|
"axisBorderShow": false,
|
|
|
|
|
"axisCenteredZero": false,
|
|
|
|
|
"axisColorMode": "text",
|
|
|
|
|
"axisLabel": "seconds",
|
|
|
|
|
"axisPlacement": "auto",
|
|
|
|
|
"barAlignment": 0,
|
|
|
|
|
"drawStyle": "line",
|
|
|
|
|
"fillOpacity": 10,
|
|
|
|
|
"gradientMode": "none",
|
|
|
|
|
"hideFrom": { "legend": false, "tooltip": false, "viz": false },
|
|
|
|
|
"insertNulls": false,
|
|
|
|
|
"lineInterpolation": "linear",
|
|
|
|
|
"lineWidth": 1,
|
|
|
|
|
"pointSize": 5,
|
|
|
|
|
"scaleDistribution": { "type": "linear" },
|
|
|
|
|
"showPoints": "never",
|
|
|
|
|
"spanNulls": false,
|
|
|
|
|
"stacking": { "group": "A", "mode": "none" },
|
|
|
|
|
"thresholdsStyle": { "mode": "off" }
|
|
|
|
|
},
|
|
|
|
|
"mappings": [],
|
|
|
|
|
"thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] },
|
|
|
|
|
"unit": "s"
|
|
|
|
|
},
|
|
|
|
|
"overrides": []
|
|
|
|
|
},
|
|
|
|
|
"gridPos": { "h": 8, "w": 24, "x": 0, "y": 22 },
|
|
|
|
|
"id": 8,
|
|
|
|
|
"options": {
|
|
|
|
|
"legend": { "calcs": ["mean", "max"], "displayMode": "table", "placement": "right", "showLegend": true },
|
|
|
|
|
"tooltip": { "mode": "multi", "sort": "desc" }
|
|
|
|
|
},
|
|
|
|
|
"targets": [
|
|
|
|
|
{ "datasource": { "type": "prometheus", "uid": "prometheus" }, "expr": "histogram_quantile(0.50, sum by (le) (rate(flyio_nginx_upstream_response_time_seconds_bucket{instance=\"flyio-proxy\",host=\"forge.eblu.me\"}[5m])))", "legendFormat": "upstream p50", "refId": "A" },
|
|
|
|
|
{ "datasource": { "type": "prometheus", "uid": "prometheus" }, "expr": "histogram_quantile(0.90, sum by (le) (rate(flyio_nginx_upstream_response_time_seconds_bucket{instance=\"flyio-proxy\",host=\"forge.eblu.me\"}[5m])))", "legendFormat": "upstream p90", "refId": "B" },
|
|
|
|
|
{ "datasource": { "type": "prometheus", "uid": "prometheus" }, "expr": "histogram_quantile(0.99, sum by (le) (rate(flyio_nginx_upstream_response_time_seconds_bucket{instance=\"flyio-proxy\",host=\"forge.eblu.me\"}[5m])))", "legendFormat": "upstream p99", "refId": "C" }
|
|
|
|
|
],
|
|
|
|
|
"title": "Forgejo: Upstream Response Time",
|
2026-02-08 10:05:38 -08:00
|
|
|
"type": "timeseries"
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"refresh": "30s",
|
|
|
|
|
"schemaVersion": 38,
|
|
|
|
|
"tags": ["flyio", "nginx", "proxy"],
|
|
|
|
|
"templating": { "list": [] },
|
|
|
|
|
"time": { "from": "now-6h", "to": "now" },
|
|
|
|
|
"timepicker": {},
|
|
|
|
|
"timezone": "",
|
|
|
|
|
"title": "Fly.io Proxy Health",
|
|
|
|
|
"uid": "flyio-proxy",
|
|
|
|
|
"version": 1,
|
|
|
|
|
"weekStart": ""
|
|
|
|
|
}
|