Skip to content

grafana: clarify Synapse panels in overview#4813

Merged
habdelra merged 1 commit into
mainfrom
worktree-agent-ab16a0f7b4770070a
May 13, 2026
Merged

grafana: clarify Synapse panels in overview#4813
habdelra merged 1 commit into
mainfrom
worktree-agent-ab16a0f7b4770070a

Conversation

@habdelra
Copy link
Copy Markdown
Contributor

Summary

  • Renames the two "Synapse" panels in the overview dashboard so they're distinguishable: events/min timeseries → "Matrix Events", CPU/Mem bargauge → "Synapse Process".
  • Adds a missing panel-level links array to the CPU/Mem bargauge so its header chain icon navigates to the Synapse dashboard (matching the pattern used by Realms / Users / Web Requests / Matrix Events).

Test plan

  • Load the Boxel Status > Overview dashboard locally and confirm the two formerly-"Synapse" panels now read "Matrix Events" and "Synapse Process".
  • Click the chain/external-link icon in the header of the "Synapse Process" panel; confirm it navigates to the Synapse dashboard (/d/000000012).
  • Confirm the "Matrix Events" panel's existing header link still works.

🤖 Generated with Claude Code

Both panels in the overview dashboard were titled "Synapse", making it
ambiguous which was which, and the CPU/Mem bargauge had no panel-level
link so its header chain icon was missing.

- Rename the events/min timeseries to "Matrix Events".
- Rename the CPU/Mem bargauge to "Synapse Process" and add the
  missing panel-level link to the Synapse dashboard (/d/000000012).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

Observability diff (vs staging)

diff --git a/tmp/remote-canon.46e17e/dashboards/boxel-status/overview.json b/tmp/committed-canon.uznpoq/dashboards/boxel-status/overview.json
index 686ebd6..4c5a188 100644
--- a/tmp/remote-canon.46e17e/dashboards/boxel-status/overview.json
+++ b/tmp/committed-canon.uznpoq/dashboards/boxel-status/overview.json
@@ -721,7 +721,7 @@
             "refId": "A"
           }
         ],
-        "title": "Synapse",
+        "title": "Matrix Events",
         "type": "timeseries"
       },
       {
@@ -907,20 +907,13 @@
           "type": "cloudwatch",
           "uid": "cef5x9o3yzawwf"
         },
-        "description": "ECS CPU and memory utilisation for `boxel-prerender-server-${env}` on cluster `${env}` — averages over the panel refresh window. Task counts (Run / Need) appear in the stat row below this bargauge. Locally these show 'No data' — CloudWatch is staging/production only.",
+        "description": "ECS task count for `boxel-realm-server-${env}` — `Run` is RunningTaskCount, `Need` is DesiredTaskCount (both from ECS/ContainerInsights, Maximum over the panel refresh window). Run < Need means the service is under-scaled or tasks are crashing.",
         "fieldConfig": {
           "defaults": {
             "color": {
               "mode": "thresholds"
             },
-            "decimals": 1,
-            "links": [
-              {
-                "targetBlank": false,
-                "title": "Open Prerender Server dashboard",
-                "url": "/d/boxel-svc-prerender-server"
-              }
-            ],
+            "decimals": 0,
             "mappings": [],
             "thresholds": {
               "mode": "absolute",
@@ -941,11 +934,7 @@
               "properties": [
                 {
                   "id": "displayName",
-                  "value": "CPU"
-                },
-                {
-                  "id": "unit",
-                  "value": "percent"
+                  "value": " "
                 },
                 {
                   "id": "thresholds",
@@ -953,19 +942,11 @@
                     "mode": "absolute",
                     "steps": [
                       {
-                        "color": "transparent"
+                        "color": "red"
                       },
                       {
                         "color": "green",
-                        "value": 0
-                      },
-                      {
-                        "color": "yellow",
-                        "value": 70
-                      },
-                      {
-                        "color": "red",
-                        "value": 90
+                        "value": 1
                       }
                     ]
                   }
@@ -980,52 +961,23 @@
               "properties": [
                 {
                   "id": "displayName",
-                  "value": "Mem"
-                },
-                {
-                  "id": "unit",
-                  "value": "percent"
-                },
-                {
-                  "id": "thresholds",
-                  "value": {
-                    "mode": "absolute",
-                    "steps": [
-                      {
-                        "color": "transparent"
-                      },
-                      {
-                        "color": "green",
-                        "value": 0
-                      },
-                      {
-                        "color": "yellow",
-                        "value": 70
-                      },
-                      {
-                        "color": "red",
-                        "value": 90
-                      }
-                    ]
-                  }
+                  "value": "/"
                 }
               ]
             }
           ]
         },
         "gridPos": {
-          "h": 4,
+          "h": 3,
           "w": 4,
-          "x": 4,
-          "y": 16
+          "x": 0,
+          "y": 20
         },
-        "id": 14,
+        "id": 23,
         "options": {
-          "displayMode": "gradient",
-          "maxVizHeight": 300,
-          "minVizHeight": 10,
-          "minVizWidth": 0,
-          "namePlacement": "auto",
+          "colorMode": "value",
+          "graphMode": "none",
+          "justifyMode": "center",
           "orientation": "horizontal",
           "reduceOptions": {
             "calcs": [
@@ -1034,9 +986,8 @@
             "fields": "",
             "values": false
           },
-          "showUnfilled": true,
-          "sizing": "auto",
-          "valueMode": "color"
+          "textMode": "value_and_name",
+          "wideLayout": true
         },
         "pluginVersion": "12.4.3",
         "targets": [
@@ -1047,16 +998,16 @@
             },
             "dimensions": {
               "ClusterName": "${env}",
-              "ServiceName": "boxel-prerender-server-${env}"
+              "ServiceName": "boxel-realm-server-${env}"
             },
             "metricEditorMode": 0,
-            "metricName": "CPUUtilization",
+            "metricName": "RunningTaskCount",
             "metricQueryType": 0,
-            "namespace": "AWS/ECS",
+            "namespace": "ECS/ContainerInsights",
             "period": "",
             "refId": "A",
             "region": "default",
-            "statistic": "Average"
+            "statistic": "Maximum"
           },
           {
             "datasource": {
@@ -1065,27 +1016,27 @@
             },
             "dimensions": {
               "ClusterName": "${env}",
-              "ServiceName": "boxel-prerender-server-${env}"
+              "ServiceName": "boxel-realm-server-${env}"
             },
             "metricEditorMode": 0,
-            "metricName": "MemoryUtilization",
+            "metricName": "DesiredTaskCount",
             "metricQueryType": 0,
-            "namespace": "AWS/ECS",
+            "namespace": "ECS/ContainerInsights",
             "period": "",
             "refId": "B",
             "region": "default",
-            "statistic": "Average"
+            "statistic": "Maximum"
           }
         ],
-        "title": "Prerender",
-        "type": "bargauge"
+        "title": "Tasks",
+        "type": "stat"
       },
       {
         "datasource": {
           "type": "cloudwatch",
           "uid": "cef5x9o3yzawwf"
         },
-        "description": "ECS CPU and memory utilisation for `boxel-prerender-manager-${env}` on cluster `${env}` — averages over the panel refresh window. Task counts (Run / Need) appear in the stat row below this bargauge. Locally these show 'No data' — CloudWatch is staging/production only.",
+        "description": "ECS CPU and memory utilisation for `boxel-prerender-server-${env}` on cluster `${env}` — averages over the panel refresh window. Task counts (Run / Need) appear in the stat row below this bargauge. Locally these show 'No data' — CloudWatch is staging/production only.",
         "fieldConfig": {
           "defaults": {
             "color": {
@@ -1095,8 +1046,8 @@
             "links": [
               {
                 "targetBlank": false,
-                "title": "Open Prerender Manager dashboard",
-                "url": "/d/boxel-svc-prerender-manager"
+                "title": "Open Prerender Server dashboard",
+                "url": "/d/boxel-svc-prerender-server"
               }
             ],
             "mappings": [],
@@ -1194,10 +1145,10 @@
         "gridPos": {
           "h": 4,
           "w": 4,
-          "x": 8,
+          "x": 4,
           "y": 16
         },
-        "id": 15,
+        "id": 14,
         "options": {
           "displayMode": "gradient",
           "maxVizHeight": 300,
@@ -1225,7 +1176,7 @@
             },
             "dimensions": {
               "ClusterName": "${env}",
-              "ServiceName": "boxel-prerender-manager-${env}"
+              "ServiceName": "boxel-prerender-server-${env}"
             },
             "metricEditorMode": 0,
             "metricName": "CPUUtilization",
@@ -1243,7 +1194,7 @@
             },
             "dimensions": {
               "ClusterName": "${env}",
-              "ServiceName": "boxel-prerender-manager-${env}"
+              "ServiceName": "boxel-prerender-server-${env}"
             },
             "metricEditorMode": 0,
             "metricName": "MemoryUtilization",
@@ -1255,7 +1206,7 @@
             "statistic": "Average"
           }
         ],
-        "title": "Prerender Mgr",
+        "title": "Prerender",
         "type": "bargauge"
       },
       {
@@ -1263,20 +1214,13 @@
           "type": "cloudwatch",
           "uid": "cef5x9o3yzawwf"
         },
-        "description": "ECS CPU and memory utilisation for `boxel-worker-${env}` on cluster `${env}` — averages over the panel refresh window. Task counts (Run / Need) appear in the stat row below this bargauge. Locally these show 'No data' — CloudWatch is staging/production only.",
+        "description": "ECS task count for `boxel-prerender-server-${env}` — `Run` is RunningTaskCount, `Need` is DesiredTaskCount (both from ECS/ContainerInsights, Maximum over the panel refresh window). Run < Need means the service is under-scaled or tasks are crashing.",
         "fieldConfig": {
           "defaults": {
             "color": {
               "mode": "thresholds"
             },
-            "decimals": 1,
-            "links": [
-              {
-                "targetBlank": false,
-                "title": "Open Worker dashboard",
-                "url": "/d/boxel-svc-worker"
-              }
-            ],
+            "decimals": 0,
             "mappings": [],
             "thresholds": {
               "mode": "absolute",
@@ -1297,11 +1241,7 @@
               "properties": [
                 {
                   "id": "displayName",
-                  "value": "CPU"
-                },
-                {
-                  "id": "unit",
-                  "value": "percent"
+                  "value": " "
                 },
                 {
                   "id": "thresholds",
@@ -1309,19 +1249,11 @@
                     "mode": "absolute",
                     "steps": [
                       {
-                        "color": "transparent"
+                        "color": "red"
                       },
                       {
                         "color": "green",
-                        "value": 0
-                      },
-                      {
-                        "color": "yellow",
-                        "value": 70
-                      },
-                      {
-                        "color": "red",
-                        "value": 90
+                        "value": 1
                       }
                     ]
                   }
@@ -1336,52 +1268,23 @@
               "properties": [
                 {
                   "id": "displayName",
-                  "value": "Mem"
-                },
-                {
-                  "id": "unit",
-                  "value": "percent"
-                },
-                {
-                  "id": "thresholds",
-                  "value": {
-                    "mode": "absolute",
-                    "steps": [
-                      {
-                        "color": "transparent"
-                      },
-                      {
-                        "color": "green",
-                        "value": 0
-                      },
-                      {
-                        "color": "yellow",
-                        "value": 70
-                      },
-                      {
-                        "color": "red",
-                        "value": 90
-                      }
-                    ]
-                  }
+                  "value": "/"
                 }
               ]
             }
           ]
         },
         "gridPos": {
-          "h": 4,
+          "h": 3,
           "w": 4,
-          "x": 12,
-          "y": 16
+          "x": 4,
+          "y": 20
         },
-        "id": 16,
+        "id": 24,
         "options": {
-          "displayMode": "gradient",
-          "maxVizHeight": 300,
-          "minVizHeight": 10,
-          "minVizWidth": 0,
-          "namePlacement": "auto",
+          "colorMode": "value",
+          "graphMode": "none",
+          "justifyMode": "center",
           "orientation": "horizontal",
           "reduceOptions": {
             "calcs": [
@@ -1390,9 +1293,8 @@
             "fields": "",
             "values": false
           },
-          "showUnfilled": true,
-          "sizing": "auto",
-          "valueMode": "color"
+          "textMode": "value_and_name",
+          "wideLayout": true
         },
         "pluginVersion": "12.4.3",
         "targets": [
@@ -1403,16 +1305,16 @@
             },
             "dimensions": {
               "ClusterName": "${env}",
-              "ServiceName": "boxel-worker-${env}"
+              "ServiceName": "boxel-prerender-server-${env}"
             },
             "metricEditorMode": 0,
-            "metricName": "CPUUtilization",
+            "metricName": "RunningTaskCount",
             "metricQueryType": 0,
-            "namespace": "AWS/ECS",
+            "namespace": "ECS/ContainerInsights",
             "period": "",
             "refId": "A",
             "region": "default",
-            "statistic": "Average"
+            "statistic": "Maximum"
           },
           {
             "datasource": {
@@ -1421,27 +1323,27 @@
             },
             "dimensions": {
               "ClusterName": "${env}",
-              "ServiceName": "boxel-worker-${env}"
+              "ServiceName": "boxel-prerender-server-${env}"
             },
             "metricEditorMode": 0,
-            "metricName": "MemoryUtilization",
+            "metricName": "DesiredTaskCount",
             "metricQueryType": 0,
-            "namespace": "AWS/ECS",
+            "namespace": "ECS/ContainerInsights",
             "period": "",
             "refId": "B",
             "region": "default",
-            "statistic": "Average"
+            "statistic": "Maximum"
           }
         ],
-        "title": "Worker",
-        "type": "bargauge"
+        "title": "Tasks",
+        "type": "stat"
       },
       {
         "datasource": {
-          "type": "prometheus",
-          "uid": "bes7ustjf8w74b"
+          "type": "cloudwatch",
+          "uid": "cef5x9o3yzawwf"
         },
-        "description": "Synapse process metrics scraped from /\\_synapse/metrics via the synapse-prometheus datasource (local Prometheus locally; AMP in staging/production). CPU is rate over 5m as a percentage of one core; Mem is process_resident_memory_bytes.",
+        "description": "ECS CPU and memory utilisation for `boxel-prerender-manager-${env}` on cluster `${env}` — averages over the panel refresh window. Task counts (Run / Need) appear in the stat row below this bargauge. Locally these show 'No data' — CloudWatch is staging/production only.",
         "fieldConfig": {
           "defaults": {
             "color": {
@@ -1451,8 +1353,8 @@
             "links": [
               {
                 "targetBlank": false,
-                "title": "Open Synapse dashboard",
-                "url": "/d/000000012"
+                "title": "Open Prerender Manager dashboard",
+                "url": "/d/boxel-svc-prerender-manager"
               }
             ],
             "mappings": [],
@@ -1518,7 +1420,7 @@
                 },
                 {
                   "id": "unit",
-                  "value": "decbytes"
+                  "value": "percent"
                 },
                 {
                   "id": "thresholds",
@@ -1531,13 +1433,17 @@
                       {
                         "color": "green",
                         "value": 0
+                      },
+                      {
+                        "color": "yellow",
+                        "value": 70
+                      },
+                      {
+                        "color": "red",
+                        "value": 90
                       }
                     ]
                   }
-                },
-                {
-                  "id": "max",
-                  "value": 8589934592
                 }
               ]
             }
@@ -1546,10 +1452,10 @@
         "gridPos": {
           "h": 4,
           "w": 4,
-          "x": 16,
+          "x": 8,
           "y": 16
         },
-        "id": 17,
+        "id": 15,
         "options": {
           "displayMode": "gradient",
           "maxVizHeight": 300,
@@ -1572,108 +1478,50 @@
         "targets": [
           {
             "datasource": {
-              "type": "prometheus",
-              "uid": "bes7ustjf8w74b"
-            },
-            "expr": "rate(process_cpu_seconds_total{job=\"synapse\"}[5m]) * 100",
-            "instant": true,
-            "legendFormat": "CPU",
-            "refId": "A"
-          },
-          {
-            "datasource": {
-              "type": "prometheus",
-              "uid": "bes7ustjf8w74b"
-            },
-            "expr": "process_resident_memory_bytes{job=\"synapse\"}",
-            "instant": true,
-            "legendFormat": "Mem",
-            "refId": "B"
-          }
-        ],
-        "title": "Synapse",
-        "type": "bargauge"
-      },
-      {
-        "datasource": {
-          "type": "grafana-postgresql-datasource",
-          "uid": "cef5v5sl9k7i8f"
-        },
-        "description": "Boxel application database transaction rate (xact_commit + xact_rollback) averaged since the postmaster started. Not a rolling window — recent spikes will be smoothed. Drill into the DB-specific dashboard for detail.",
-        "fieldConfig": {
-          "defaults": {
-            "color": {
-              "mode": "thresholds"
+              "type": "cloudwatch",
+              "uid": "cef5x9o3yzawwf"
             },
-            "decimals": 0,
-            "links": [
-              {
-                "targetBlank": false,
-                "title": "Open Database dashboard",
-                "url": "/d/boxeldatabase1"
-              }
-            ],
-            "mappings": [],
-            "thresholds": {
-              "mode": "absolute",
-              "steps": [
-                {
-                  "color": "transparent"
-                },
-                {
-                  "color": "green",
-                  "value": 0
-                }
-              ]
+            "dimensions": {
+              "ClusterName": "${env}",
+              "ServiceName": "boxel-prerender-manager-${env}"
             },
-            "unit": "short"
-          },
-          "overrides": []
-        },
-        "gridPos": {
-          "h": 7,
-          "w": 4,
-          "x": 20,
-          "y": 16
-        },
-        "id": 18,
-        "options": {
-          "colorMode": "background_solid",
-          "graphMode": "none",
-          "justifyMode": "auto",
-          "orientation": "vertical",
-          "reduceOptions": {
-            "calcs": [
-              "lastNotNull"
-            ],
-            "fields": "",
-            "values": false
+            "metricEditorMode": 0,
+            "metricName": "CPUUtilization",
+            "metricQueryType": 0,
+            "namespace": "AWS/ECS",
+            "period": "",
+            "refId": "A",
+            "region": "default",
+            "statistic": "Average"
           },
-          "textMode": "value_and_name"
-        },
-        "pluginVersion": "12.4.3",
-        "targets": [
           {
             "datasource": {
-              "type": "grafana-postgresql-datasource",
-              "uid": "cef5v5sl9k7i8f"
+              "type": "cloudwatch",
+              "uid": "cef5x9o3yzawwf"
             },
-            "editorMode": "code",
-            "format": "table",
-            "rawQuery": true,
-            "rawSql": "SELECT 60.0 * (xact_commit + xact_rollback) / NULLIF(EXTRACT(EPOCH FROM (NOW() - pg_postmaster_start_time())), 0) AS \"txn/min\" FROM pg_stat_database WHERE datname = 'boxel';",
-            "refId": "A"
+            "dimensions": {
+              "ClusterName": "${env}",
+              "ServiceName": "boxel-prerender-manager-${env}"
+            },
+            "metricEditorMode": 0,
+            "metricName": "MemoryUtilization",
+            "metricQueryType": 0,
+            "namespace": "AWS/ECS",
+            "period": "",
+            "refId": "B",
+            "region": "default",
+            "statistic": "Average"
           }
         ],
-        "title": "Postgres DB",
-        "type": "stat"
+        "title": "Prerender Mgr",
+        "type": "bargauge"
       },
       {
         "datasource": {
           "type": "cloudwatch",
           "uid": "cef5x9o3yzawwf"
         },
-        "description": "ECS task count for `boxel-realm-server-${env}` — `Run` is RunningTaskCount, `Need` is DesiredTaskCount (both from ECS/ContainerInsights, Maximum over the panel refresh window). Run < Need means the service is under-scaled or tasks are crashing.",
+        "description": "ECS task count for `boxel-prerender-manager-${env}` — `Run` is RunningTaskCount, `Need` is DesiredTaskCount (both from ECS/ContainerInsights, Maximum over the panel refresh window). Run < Need means the service is under-scaled or tasks are crashing.",
         "fieldConfig": {
           "defaults": {
             "color": {
@@ -1736,10 +1584,10 @@
         "gridPos": {
           "h": 3,
           "w": 4,
-          "x": 0,
+          "x": 8,
           "y": 20
         },
-        "id": 23,
+        "id": 25,
         "options": {
           "colorMode": "value",
           "graphMode": "none",
@@ -1764,7 +1612,7 @@
             },
             "dimensions": {
               "ClusterName": "${env}",
-              "ServiceName": "boxel-realm-server-${env}"
+              "ServiceName": "boxel-prerender-manager-${env}"
             },
             "metricEditorMode": 0,
             "metricName": "RunningTaskCount",
@@ -1782,7 +1630,7 @@
             },
             "dimensions": {
               "ClusterName": "${env}",
-              "ServiceName": "boxel-realm-server-${env}"
+              "ServiceName": "boxel-prerender-manager-${env}"
             },
             "metricEditorMode": 0,
             "metricName": "DesiredTaskCount",
@@ -1802,13 +1650,20 @@
           "type": "cloudwatch",
           "uid": "cef5x9o3yzawwf"
         },
-        "description": "ECS task count for `boxel-prerender-server-${env}` — `Run` is RunningTaskCount, `Need` is DesiredTaskCount (both from ECS/ContainerInsights, Maximum over the panel refresh window). Run < Need means the service is under-scaled or tasks are crashing.",
+        "description": "ECS CPU and memory utilisation for `boxel-worker-${env}` on cluster `${env}` — averages over the panel refresh window. Task counts (Run / Need) appear in the stat row below this bargauge. Locally these show 'No data' — CloudWatch is staging/production only.",
         "fieldConfig": {
           "defaults": {
             "color": {
               "mode": "thresholds"
             },
-            "decimals": 0,
+            "decimals": 1,
+            "links": [
+              {
+                "targetBlank": false,
+                "title": "Open Worker dashboard",
+                "url": "/d/boxel-svc-worker"
+              }
+            ],
             "mappings": [],
             "thresholds": {
               "mode": "absolute",
@@ -1829,7 +1684,11 @@
               "properties": [
                 {
                   "id": "displayName",
-                  "value": " "
+                  "value": "CPU"
+                },
+                {
+                  "id": "unit",
+                  "value": "percent"
                 },
                 {
                   "id": "thresholds",
@@ -1837,11 +1696,19 @@
                     "mode": "absolute",
                     "steps": [
                       {
-                        "color": "red"
+                        "color": "transparent"
                       },
                       {
                         "color": "green",
-                        "value": 1
+                        "value": 0
+                      },
+                      {
+                        "color": "yellow",
+                        "value": 70
+                      },
+                      {
+                        "color": "red",
+                        "value": 90
                       }
                     ]
                   }
@@ -1856,23 +1723,52 @@
               "properties": [
                 {
                   "id": "displayName",
-                  "value": "/"
+                  "value": "Mem"
+                },
+                {
+                  "id": "unit",
+                  "value": "percent"
+                },
+                {
+                  "id": "thresholds",
+                  "value": {
+                    "mode": "absolute",
+                    "steps": [
+                      {
+                        "color": "transparent"
+                      },
+                      {
+                        "color": "green",
+                        "value": 0
+                      },
+                      {
+                        "color": "yellow",
+                        "value": 70
+                      },
+                      {
+                        "color": "red",
+                        "value": 90
+                      }
+                    ]
+                  }
                 }
               ]
             }
           ]
         },
         "gridPos": {
-          "h": 3,
+          "h": 4,
           "w": 4,
-          "x": 4,
-          "y": 20
+          "x": 12,
+          "y": 16
         },
-        "id": 24,
+        "id": 16,
         "options": {
-          "colorMode": "value",
-          "graphMode": "none",
-          "justifyMode": "center",
+          "displayMode": "gradient",
+          "maxVizHeight": 300,
+          "minVizHeight": 10,
+          "minVizWidth": 0,
+          "namePlacement": "auto",
           "orientation": "horizontal",
           "reduceOptions": {
             "calcs": [
@@ -1881,8 +1777,9 @@
             "fields": "",
             "values": false
           },
-          "textMode": "value_and_name",
-          "wideLayout": true
+          "showUnfilled": true,
+          "sizing": "auto",
+          "valueMode": "color"
         },
         "pluginVersion": "12.4.3",
         "targets": [
@@ -1893,16 +1790,16 @@
             },
             "dimensions": {
               "ClusterName": "${env}",
-              "ServiceName": "boxel-prerender-server-${env}"
+              "ServiceName": "boxel-worker-${env}"
             },
             "metricEditorMode": 0,
-            "metricName": "RunningTaskCount",
+            "metricName": "CPUUtilization",
             "metricQueryType": 0,
-            "namespace": "ECS/ContainerInsights",
+            "namespace": "AWS/ECS",
             "period": "",
             "refId": "A",
             "region": "default",
-            "statistic": "Maximum"
+            "statistic": "Average"
           },
           {
             "datasource": {
@@ -1911,27 +1808,27 @@
             },
             "dimensions": {
               "ClusterName": "${env}",
-              "ServiceName": "boxel-prerender-server-${env}"
+              "ServiceName": "boxel-worker-${env}"
             },
             "metricEditorMode": 0,
-            "metricName": "DesiredTaskCount",
+            "metricName": "MemoryUtilization",
             "metricQueryType": 0,
-            "namespace": "ECS/ContainerInsights",
+            "namespace": "AWS/ECS",
             "period": "",
             "refId": "B",
             "region": "default",
-            "statistic": "Maximum"
+            "statistic": "Average"
           }
         ],
-        "title": "Tasks",
-        "type": "stat"
+        "title": "Worker",
+        "type": "bargauge"
       },
       {
         "datasource": {
           "type": "cloudwatch",
           "uid": "cef5x9o3yzawwf"
         },
-        "description": "ECS task count for `boxel-prerender-manager-${env}` — `Run` is RunningTaskCount, `Need` is DesiredTaskCount (both from ECS/ContainerInsights, Maximum over the panel refresh window). Run < Need means the service is under-scaled or tasks are crashing.",
+        "description": "ECS task count for `boxel-worker-${env}` — `Run` is RunningTaskCount, `Need` is DesiredTaskCount (both from ECS/ContainerInsights, Maximum over the panel refresh window). Run < Need means the service is under-scaled or tasks are crashing.",
         "fieldConfig": {
           "defaults": {
             "color": {
@@ -1994,10 +1891,10 @@
         "gridPos": {
           "h": 3,
           "w": 4,
-          "x": 8,
+          "x": 12,
           "y": 20
         },
-        "id": 25,
+        "id": 26,
         "options": {
           "colorMode": "value",
           "graphMode": "none",
@@ -2022,7 +1919,7 @@
             },
             "dimensions": {
               "ClusterName": "${env}",
-              "ServiceName": "boxel-prerender-manager-${env}"
+              "ServiceName": "boxel-worker-${env}"
             },
             "metricEditorMode": 0,
             "metricName": "RunningTaskCount",
@@ -2040,7 +1937,7 @@
             },
             "dimensions": {
               "ClusterName": "${env}",
-              "ServiceName": "boxel-prerender-manager-${env}"
+              "ServiceName": "boxel-worker-${env}"
             },
             "metricEditorMode": 0,
             "metricName": "DesiredTaskCount",
@@ -2057,16 +1954,23 @@
       },
       {
         "datasource": {
-          "type": "cloudwatch",
-          "uid": "cef5x9o3yzawwf"
+          "type": "prometheus",
+          "uid": "bes7ustjf8w74b"
         },
-        "description": "ECS task count for `boxel-worker-${env}` — `Run` is RunningTaskCount, `Need` is DesiredTaskCount (both from ECS/ContainerInsights, Maximum over the panel refresh window). Run < Need means the service is under-scaled or tasks are crashing.",
+        "description": "Synapse process metrics scraped from /\\_synapse/metrics via the synapse-prometheus datasource (local Prometheus locally; AMP in staging/production). CPU is rate over 5m as a percentage of one core; Mem is process_resident_memory_bytes.",
         "fieldConfig": {
           "defaults": {
             "color": {
               "mode": "thresholds"
             },
-            "decimals": 0,
+            "decimals": 1,
+            "links": [
+              {
+                "targetBlank": false,
+                "title": "Open Synapse dashboard",
+                "url": "/d/000000012"
+              }
+            ],
             "mappings": [],
             "thresholds": {
               "mode": "absolute",
@@ -2087,7 +1991,11 @@
               "properties": [
                 {
                   "id": "displayName",
-                  "value": " "
+                  "value": "CPU"
+                },
+                {
+                  "id": "unit",
+                  "value": "percent"
                 },
                 {
                   "id": "thresholds",
@@ -2095,11 +2003,19 @@
                     "mode": "absolute",
                     "steps": [
                       {
-                        "color": "red"
+                        "color": "transparent"
                       },
                       {
                         "color": "green",
-                        "value": 1
+                        "value": 0
+                      },
+                      {
+                        "color": "yellow",
+                        "value": 70
+                      },
+                      {
+                        "color": "red",
+                        "value": 90
                       }
                     ]
                   }
@@ -2114,23 +2030,57 @@
               "properties": [
                 {
                   "id": "displayName",
-                  "value": "/"
+                  "value": "Mem"
+                },
+                {
+                  "id": "unit",
+                  "value": "decbytes"
+                },
+                {
+                  "id": "thresholds",
+                  "value": {
+                    "mode": "absolute",
+                    "steps": [
+                      {
+                        "color": "transparent"
+                      },
+                      {
+                        "color": "green",
+                        "value": 0
+                      }
+                    ]
+                  }
+                },
+                {
+                  "id": "max",
+                  "value": 8589934592
                 }
               ]
             }
           ]
         },
         "gridPos": {
-          "h": 3,
+          "h": 4,
           "w": 4,
-          "x": 12,
-          "y": 20
+          "x": 16,
+          "y": 16
         },
-        "id": 26,
+        "id": 17,
+        "links": [
+          {
+            "icon": "external link",
+            "targetBlank": false,
+            "title": "Open Synapse dashboard",
+            "type": "link",
+            "url": "/d/000000012"
+          }
+        ],
         "options": {
-          "colorMode": "value",
-          "graphMode": "none",
-          "justifyMode": "center",
+          "displayMode": "gradient",
+          "maxVizHeight": 300,
+          "minVizHeight": 10,
+          "minVizWidth": 0,
+          "namePlacement": "auto",
           "orientation": "horizontal",
           "reduceOptions": {
             "calcs": [
@@ -2139,51 +2089,139 @@
             "fields": "",
             "values": false
           },
-          "textMode": "value_and_name",
-          "wideLayout": true
+          "showUnfilled": true,
+          "sizing": "auto",
+          "valueMode": "color"
         },
         "pluginVersion": "12.4.3",
         "targets": [
           {
             "datasource": {
-              "type": "cloudwatch",
-              "uid": "cef5x9o3yzawwf"
-            },
-            "dimensions": {
-              "ClusterName": "${env}",
-              "ServiceName": "boxel-worker-${env}"
+              "type": "prometheus",
+              "uid": "bes7ustjf8w74b"
             },
-            "metricEditorMode": 0,
-            "metricName": "RunningTaskCount",
-            "metricQueryType": 0,
-            "namespace": "ECS/ContainerInsights",
-            "period": "",
-            "refId": "A",
-            "region": "default",
-            "statistic": "Maximum"
+            "expr": "rate(process_cpu_seconds_total{job=\"synapse\"}[5m]) * 100",
+            "instant": true,
+            "legendFormat": "CPU",
+            "refId": "A"
           },
           {
             "datasource": {
-              "type": "cloudwatch",
-              "uid": "cef5x9o3yzawwf"
+              "type": "prometheus",
+              "uid": "bes7ustjf8w74b"
             },
-            "dimensions": {
-              "ClusterName": "${env}",
-              "ServiceName": "boxel-worker-${env}"
+            "expr": "process_resident_memory_bytes{job=\"synapse\"}",
+            "instant": true,
+            "legendFormat": "Mem",
+            "refId": "B"
+          }
+        ],
+        "title": "Synapse Process",
+        "type": "bargauge"
+      },
+      {
+        "datasource": {
+          "type": "grafana-postgresql-datasource",
+          "uid": "cef5v5sl9k7i8f"
+        },
+        "description": "Boxel application database transaction rate (xact_commit + xact_rollback) averaged since the postmaster started. Not a rolling window — recent spikes will be smoothed. Drill into the DB-specific dashboard for detail.",
+        "fieldConfig": {
+          "defaults": {
+            "color": {
+              "mode": "thresholds"
             },
-            "metricEditorMode": 0,
-            "metricName": "DesiredTaskCount",
-            "metricQueryType": 0,
-            "namespace": "ECS/ContainerInsights",
-            "period": "",
-            "refId": "B",
-            "region": "default",
-            "statistic": "Maximum"
+            "decimals": 0,
+            "links": [
+              {
+                "targetBlank": false,
+                "title": "Open Database dashboard",
+                "url": "/d/boxeldatabase1"
+              }
+            ],
+            "mappings": [],
+            "thresholds": {
+              "mode": "absolute",
+              "steps": [
+                {
+                  "color": "transparent"
+                },
+                {
+                  "color": "green",
+                  "value": 0
+                }
+              ]
+            },
+            "unit": "short"
+          },
+          "overrides": []
+        },
+        "gridPos": {
+          "h": 7,
+          "w": 4,
+          "x": 20,
+          "y": 16
+        },
+        "id": 18,
+        "options": {
+          "colorMode": "background_solid",
+          "graphMode": "none",
+          "justifyMode": "auto",
+          "orientation": "vertical",
+          "reduceOptions": {
+            "calcs": [
+              "lastNotNull"
+            ],
+            "fields": "",
+            "values": false
+          },
+          "textMode": "value_and_name"
+        },
+        "pluginVersion": "12.4.3",
+        "targets": [
+          {
+            "datasource": {
+              "type": "grafana-postgresql-datasource",
+              "uid": "cef5v5sl9k7i8f"
+            },
+            "editorMode": "code",
+            "format": "table",
+            "rawQuery": true,
+            "rawSql": "SELECT 60.0 * (xact_commit + xact_rollback) / NULLIF(EXTRACT(EPOCH FROM (NOW() - pg_postmaster_start_time())), 0) AS \"txn/min\" FROM pg_stat_database WHERE datname = 'boxel';",
+            "refId": "A"
           }
         ],
-        "title": "Tasks",
+        "title": "Postgres DB",
         "type": "stat"
       },
+      {
+        "description": "All firing and pending Grafana alert rules. Drill into a rule for details and silences. Replaces the Worker Status alertlist (which was a single-panel dashboard).",
+        "gridPos": {
+          "h": 8,
+          "w": 24,
+          "x": 0,
+          "y": 33
+        },
+        "id": 6,
+        "options": {
+          "alertInstanceLabelFilter": "",
+          "alertName": "",
+          "dashboardAlerts": false,
+          "groupBy": [],
+          "groupMode": "default",
+          "maxItems": 30,
+          "sortOrder": 1,
+          "stateFilter": {
+            "error": true,
+            "firing": true,
+            "noData": true,
+            "normal": false,
+            "pending": true
+          },
+          "viewMode": "list"
+        },
+        "title": "Active Alerts",
+        "type": "alertlist"
+      },
       {
         "datasource": {
           "type": "grafana-postgresql-datasource",
@@ -2219,8 +2257,7 @@
                 }
               ]
             }
-          },
-          "overrides": []
+          }
         },
         "gridPos": {
           "h": 4,
@@ -2287,8 +2324,7 @@
                 }
               ]
             }
-          },
-          "overrides": []
+          }
         },
         "gridPos": {
           "h": 4,
@@ -2364,8 +2400,7 @@
               ]
             },
             "unit": "s"
-          },
-          "overrides": []
+          }
         },
         "gridPos": {
           "h": 4,
@@ -2436,8 +2471,7 @@
                 }
               ]
             }
-          },
-          "overrides": []
+          }
         },
         "gridPos": {
           "h": 4,
@@ -2640,35 +2674,6 @@
         "title": "Indexing throughput",
         "type": "timeseries"
       },
-      {
-        "description": "All firing and pending Grafana alert rules. Drill into a rule for details and silences. Replaces the Worker Status alertlist (which was a single-panel dashboard).",
-        "gridPos": {
-          "h": 8,
-          "w": 24,
-          "x": 0,
-          "y": 33
-        },
-        "id": 6,
-        "options": {
-          "alertInstanceLabelFilter": "",
-          "alertName": "",
-          "dashboardAlerts": false,
-          "groupBy": [],
-          "groupMode": "default",
-          "maxItems": 30,
-          "sortOrder": 1,
-          "stateFilter": {
-            "error": true,
-            "firing": true,
-            "noData": true,
-            "normal": false,
-            "pending": true
-          },
-          "viewMode": "list"
-        },
-        "title": "Active Alerts",
-        "type": "alertlist"
-      },
       {
         "gridPos": {
           "h": 8,
@@ -2701,7 +2706,7 @@
         {
           "hide": 2,
           "name": "env",
-          "query": "staging",
+          "query": "__ENV__",
           "skipUrlSync": true,
           "type": "constant"
         },

(Run: https://github.com/cardstack/boxel/actions/runs/25810773589)

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR clarifies labels and navigation for Synapse-related panels in the Boxel Status overview Grafana dashboard.

Changes:

  • Renames the Synapse events timeseries panel to “Matrix Events”.
  • Renames the Synapse CPU/memory bargauge panel to “Synapse Process”.
  • Adds a panel-level link from the Synapse Process panel to the Synapse dashboard.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@habdelra habdelra requested a review from a team May 13, 2026 16:10
@habdelra habdelra merged commit 49ccee1 into main May 13, 2026
31 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants