{"version":"0.1.0","name":"Supabase","tags":["supabase","database"],"tiles":[{"id":"6aa0c194b063443573617ea6","x":0,"y":0,"w":6,"h":3,"config":{"name":"Postgres backends","source":"Metrics","displayType":"number","color":"chart-blue","select":[{"aggFn":"last_value","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Backends","metricType":"gauge","metricName":"pg_stat_database_num_backends"}],"where":""}},{"id":"6aa0c194b063443573617ea7","x":6,"y":0,"w":6,"h":3,"config":{"name":"Transactions committed (window)","source":"Metrics","displayType":"number","numberFormat":{"output":"number","mantissa":0,"thousandSeparated":true},"color":"chart-green","select":[{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Commits","metricType":"sum","metricName":"pg_stat_database_xact_commit_total"}],"where":""}},{"id":"6aa0c194b063443573617ea8","x":12,"y":0,"w":6,"h":3,"config":{"name":"Memory available","source":"Metrics","displayType":"number","numberFormat":{"output":"byte"},"color":"chart-cyan","select":[{"aggFn":"last_value","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Available","metricType":"gauge","metricName":"node_memory_MemAvailable_bytes"}],"where":""}},{"id":"6aa0c194b063443573617ea9","x":18,"y":0,"w":6,"h":3,"config":{"name":"User queries (window)","source":"Metrics","displayType":"number","numberFormat":{"output":"number","mantissa":0,"thousandSeparated":true},"color":"chart-purple","select":[{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Queries","metricType":"sum","metricName":"supabase_usage_metrics_user_queries_total"}],"where":""}},{"id":"6aa0c194b063443573617eaa","x":0,"y":0,"w":12,"h":5,"config":{"name":"CPU seconds by mode (non-idle)","source":"Metrics","displayType":"stacked_bar","select":[{"aggFn":"increase","aggCondition":"ServiceName = 'supabase' AND Attributes['mode'] != 'idle'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"cpu-s","metricType":"sum","metricName":"node_cpu_seconds_total"}],"where":"","groupBy":"Attributes['mode']"},"containerId":"host"},{"id":"6aa0c194b063443573617eab","x":12,"y":0,"w":12,"h":5,"config":{"name":"Load average","source":"Metrics","displayType":"line","select":[{"aggFn":"last_value","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"1m","metricType":"gauge","metricName":"node_load1"},{"aggFn":"last_value","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"5m","metricType":"gauge","metricName":"node_load5"},{"aggFn":"last_value","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"15m","metricType":"gauge","metricName":"node_load15"}],"where":""},"containerId":"host"},{"id":"6aa0c194b063443573617eac","x":0,"y":5,"w":12,"h":5,"config":{"name":"Memory: available vs total","source":"Metrics","displayType":"line","numberFormat":{"output":"byte"},"select":[{"aggFn":"last_value","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Available","metricType":"gauge","metricName":"node_memory_MemAvailable_bytes"},{"aggFn":"last_value","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Total","metricType":"gauge","metricName":"node_memory_MemTotal_bytes"}],"where":""},"containerId":"host"},{"id":"6aa0c194b063443573617ead","x":12,"y":5,"w":12,"h":5,"config":{"name":"Disk read / write bytes","source":"Metrics","displayType":"line","numberFormat":{"output":"byte"},"select":[{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Read","metricType":"sum","metricName":"node_disk_read_bytes_total"},{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Write","metricType":"sum","metricName":"node_disk_written_bytes_total"}],"where":""},"containerId":"host"},{"id":"6aa0c194b063443573617eae","x":0,"y":10,"w":12,"h":5,"config":{"name":"Disk IO time per device","source":"Metrics","displayType":"line","numberFormat":{"output":"duration","factor":1},"select":[{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"io-s","metricType":"sum","metricName":"node_disk_io_time_seconds_total"}],"where":"","groupBy":"Attributes['device']"},"containerId":"host"},{"id":"6aa0c194b063443573617eaf","x":12,"y":10,"w":12,"h":5,"config":{"name":"Network rx / tx bytes","source":"Metrics","displayType":"line","numberFormat":{"output":"byte"},"select":[{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"rx","metricType":"sum","metricName":"node_network_receive_bytes_total"},{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"tx","metricType":"sum","metricName":"node_network_transmit_bytes_total"}],"where":""},"containerId":"host"},{"id":"6aa0c194b063443573617eb0","x":0,"y":0,"w":12,"h":5,"config":{"name":"Backends (active connections)","source":"Metrics","displayType":"line","select":[{"aggFn":"max","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Backends","metricType":"gauge","metricName":"pg_stat_database_num_backends"}],"where":""},"containerId":"postgres"},{"id":"6aa0c194b063443573617eb1","x":12,"y":0,"w":12,"h":5,"config":{"name":"Transactions committed / rolled back","source":"Metrics","displayType":"line","select":[{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Commits","metricType":"sum","metricName":"pg_stat_database_xact_commit_total"},{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Rollbacks","metricType":"sum","metricName":"pg_stat_database_xact_rollback_total"}],"where":""},"containerId":"postgres"},{"id":"6aa0c194b063443573617eb2","x":0,"y":5,"w":12,"h":5,"config":{"name":"User queries","source":"Metrics","displayType":"line","select":[{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Queries","metricType":"sum","metricName":"supabase_usage_metrics_user_queries_total"}],"where":""},"containerId":"postgres"},{"id":"6aa0c194b063443573617eb3","x":12,"y":5,"w":12,"h":5,"config":{"name":"Rows fetched / inserted / updated / deleted","source":"Metrics","displayType":"line","select":[{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Fetched","metricType":"sum","metricName":"pg_stat_database_tup_fetched_total"},{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Inserted","metricType":"sum","metricName":"pg_stat_database_tup_inserted_total"},{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Updated","metricType":"sum","metricName":"pg_stat_database_tup_updated_total"},{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Deleted","metricType":"sum","metricName":"pg_stat_database_tup_deleted_total"}],"where":""},"containerId":"postgres"},{"id":"6aa0c194b063443573617eb4","x":0,"y":10,"w":12,"h":5,"config":{"name":"Buffer cache: blocks hit vs read from disk","source":"Metrics","displayType":"line","select":[{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Cache hits","metricType":"sum","metricName":"pg_stat_database_blks_hit_total"},{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Disk reads","metricType":"sum","metricName":"pg_stat_database_blks_read_total"}],"where":""},"containerId":"postgres"},{"id":"6aa0c194b063443573617eb5","x":12,"y":10,"w":12,"h":5,"config":{"name":"Statement time (pg_stat_statements)","source":"Metrics","displayType":"line","numberFormat":{"output":"duration","factor":1},"select":[{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"seconds","metricType":"sum","metricName":"pg_stat_statements_total_time_seconds"}],"where":""},"containerId":"postgres"},{"id":"6aa0c194b063443573617eb6","x":0,"y":15,"w":8,"h":5,"config":{"name":"Temp bytes written by queries","source":"Metrics","displayType":"line","numberFormat":{"output":"byte"},"select":[{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Temp bytes","metricType":"sum","metricName":"pg_stat_database_temp_bytes_total"}],"where":""},"containerId":"postgres"},{"id":"6aa0c194b063443573617eb7","x":8,"y":15,"w":8,"h":5,"config":{"name":"Deadlocks / recovery conflicts","source":"Metrics","displayType":"line","select":[{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Deadlocks","metricType":"sum","metricName":"pg_stat_database_deadlocks_total"},{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Conflicts","metricType":"sum","metricName":"pg_stat_database_conflicts_total"}],"where":""},"containerId":"postgres"},{"id":"6aa0c194b063443573617eb8","x":16,"y":15,"w":8,"h":5,"config":{"name":"Database size / WAL","source":"Metrics","displayType":"line","select":[{"aggFn":"last_value","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"DB bytes","metricType":"gauge","metricName":"pg_database_size_bytes","numberFormat":{"output":"byte"}},{"aggFn":"last_value","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"WAL MB","metricType":"gauge","metricName":"pg_wal_size_mb"}],"where":""},"containerId":"postgres"},{"id":"6aa0c194b063443573617eb9","x":0,"y":0,"w":8,"h":5,"config":{"name":"pgbouncer clients: active / waiting","source":"Metrics","displayType":"line","select":[{"aggFn":"max","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Active","metricType":"gauge","metricName":"pgbouncer_pools_client_active_connections"},{"aggFn":"max","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Waiting","metricType":"gauge","metricName":"pgbouncer_pools_client_waiting_connections"}],"where":""},"containerId":"pooler"},{"id":"6aa0c194b063443573617eba","x":8,"y":0,"w":8,"h":5,"config":{"name":"pgbouncer server connections: active / idle","source":"Metrics","displayType":"line","select":[{"aggFn":"max","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Active","metricType":"gauge","metricName":"pgbouncer_pools_server_active_connections"},{"aggFn":"max","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Idle","metricType":"gauge","metricName":"pgbouncer_pools_server_idle_connections"}],"where":""},"containerId":"pooler"},{"id":"6aa0c194b063443573617ebb","x":16,"y":0,"w":8,"h":5,"config":{"name":"pgbouncer oldest client wait","source":"Metrics","displayType":"line","numberFormat":{"output":"duration","factor":1},"select":[{"aggFn":"max","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Max wait","metricType":"gauge","metricName":"pgbouncer_pools_client_maxwait_seconds"}],"where":""},"containerId":"pooler"},{"id":"6aa0c194b063443573617ebc","x":0,"y":5,"w":12,"h":5,"config":{"name":"pgbouncer queries / transactions pooled","source":"Metrics","displayType":"line","select":[{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Queries","metricType":"sum","metricName":"pgbouncer_stats_queries_pooled_total"},{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Transactions","metricType":"sum","metricName":"pgbouncer_stats_sql_transactions_pooled_total"}],"where":""},"containerId":"pooler"},{"id":"6aa0c194b063443573617ebd","x":12,"y":5,"w":12,"h":5,"config":{"name":"pgbouncer time: querying vs clients waiting","source":"Metrics","displayType":"line","numberFormat":{"output":"duration","factor":1},"select":[{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Query seconds","metricType":"sum","metricName":"pgbouncer_stats_queries_duration_seconds_total"},{"aggFn":"increase","aggCondition":"ServiceName = 'supabase'","aggConditionLanguage":"sql","valueExpression":"Value","isDelta":false,"alias":"Client wait seconds","metricType":"sum","metricName":"pgbouncer_stats_client_wait_seconds_total"}],"where":""},"containerId":"pooler"}],"filters":[],"containers":[{"id":"host","title":"Host (node exporter)","collapsed":false},{"id":"postgres","title":"Postgres","collapsed":false},{"id":"pooler","title":"Connection pooling (pgbouncer)","collapsed":false}]}