diff --git a/PostgreSQL Metrics (Prometheus exporter)/Dashboard.png b/PostgreSQL Metrics (Prometheus exporter)/Dashboard.png new file mode 100644 index 0000000..8070691 Binary files /dev/null and b/PostgreSQL Metrics (Prometheus exporter)/Dashboard.png differ diff --git a/PostgreSQL Metrics (Prometheus exporter)/PostgreSQL.dashboard.json b/PostgreSQL Metrics (Prometheus exporter)/PostgreSQL.dashboard.json new file mode 100644 index 0000000..a0483db --- /dev/null +++ b/PostgreSQL Metrics (Prometheus exporter)/PostgreSQL.dashboard.json @@ -0,0 +1,3042 @@ +{ + "version": 7, + "dashboardId": "7420455989196898304", + "title": "PostgreSQL", + "description": "", + "role": "", + "owner": "", + "created": "2026-01-23T13:22:53.082Z", + "tabs": [ + { + "tabId": "default", + "name": "Connection & Database Overview", + "panels": [ + { + "id": "Panel_ID6655110", + "type": "line", + "title": "Active Backend Connections", + "description": "Current number of backend connections to the PostgreSQL server. Monitor this to track database load and identify connection spikes.", + "config": { + "show_legends": true, + "legends_position": null, + "decimals": 0, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "sum(pg_stat_activity_count) by (datname)", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "pg_stat_activity_count", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{datname}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 0, + "y": 0, + "w": 96, + "h": 18, + "i": 1 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + }, + { + "id": "Panel_ID9639610", + "type": "line", + "title": "Maximum Connections Limit", + "description": "Configured maximum number of client connections allowed. Compare with active connections to ensure you're not approaching limits.", + "config": { + "show_legends": true, + "legends_position": null, + "decimals": 0, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "pg_settings_max_connections", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "pg_settings_max_connections", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": " ", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 96, + "y": 0, + "w": 96, + "h": 18, + "i": 2 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + }, + { + "id": "Panel_ID5237510", + "type": "line", + "title": "Connection Utilization %", + "description": "Percentage of connections in use relative to the maximum allowed. High values (>80%) indicate potential connection exhaustion.", + "config": { + "show_legends": true, + "legends_position": null, + "unit": "percent-1", + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "sum(pg_stat_activity_count) / sum(pg_settings_max_connections)", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "pg_stat_activity_count", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{datname}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 0, + "y": 20, + "w": 96, + "h": 18, + "i": 3 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + }, + { + "id": "Panel_ID411210", + "type": "line", + "title": "Total Databases", + "description": "Total number of user databases in the PostgreSQL instance.", + "config": { + "show_legends": true, + "legends_position": null, + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "count(pg_database_size_bytes)", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "pg_database_size_bytes", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": " ", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 96, + "y": 20, + "w": 96, + "h": 18, + "i": 4 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + }, + { + "id": "Panel_ID6575510", + "type": "line", + "title": "Database Size", + "description": "Disk usage per database in bytes. Monitor growth trends and plan capacity.", + "config": { + "show_legends": true, + "legends_position": null, + "unit": "bytes", + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "pg_database_size_bytes", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "pg_database_size_bytes", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{datname}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 0, + "y": 40, + "w": 96, + "h": 18, + "i": 5 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + } + ] + }, + { + "tabId": "88678", + "name": "Performance & Cache Efficiency", + "panels": [ + { + "id": "Panel_ID2948710", + "type": "line", + "title": "Buffer Cache Hit Ratio", + "description": "Percentage of disk blocks found in buffer cache vs read from disk. Values >99% indicate good cache performance.", + "config": { + "show_legends": true, + "legends_position": null, + "unit": "percent-1", + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "sum(rate(pg_stat_database_blks_hit[5m])) by (datname) / (sum(rate(pg_stat_database_blks_hit[5m])) by (datname) + sum(rate(pg_stat_database_blks_read[5m])) by (datname))", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "pg_stat_database_blks_hit", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{datname}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 0, + "y": 0, + "w": 96, + "h": 18, + "i": 1 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + }, + { + "id": "Panel_ID8722510", + "type": "line", + "title": "Blocks Read from Disk", + "description": "Rate of disk blocks read from disk per second. High values may indicate insufficient cache or heavy queries.", + "config": { + "show_legends": true, + "legends_position": null, + "decimals": 0, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "rate(pg_stat_database_blks_read[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "pg_stat_database_blks_read", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{datname}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 96, + "y": 0, + "w": 96, + "h": 18, + "i": 2 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + } + ] + }, + { + "tabId": "81956", + "name": "Transaction Activity", + "panels": [ + { + "id": "Panel_ID9840710", + "type": "line", + "title": "Transaction Commit Rate", + "description": "Number of successful transaction commits per second. Indicates write workload.", + "config": { + "show_legends": true, + "legends_position": null, + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "rate(pg_stat_database_xact_commit[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "pg_stat_database_xact_commit", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{datname}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 0, + "y": 0, + "w": 96, + "h": 18, + "i": 1 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + }, + { + "id": "Panel_ID3296210", + "type": "line", + "title": "Transaction Rollback Rate", + "description": "Number of transaction rollbacks per second. High values may indicate application errors or conflicts.", + "config": { + "show_legends": true, + "legends_position": null, + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "rate(pg_stat_database_xact_rollback[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "pg_stat_database_xact_rollback", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{datname}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 96, + "y": 0, + "w": 96, + "h": 18, + "i": 2 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + }, + { + "id": "Panel_ID1098910", + "type": "line", + "title": "Commit Success Rate", + "description": "Percentage of transactions that commit successfully. Low values indicate potential issues.", + "config": { + "show_legends": true, + "legends_position": null, + "unit": "percent-1", + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "rate(pg_stat_database_xact_commit[5m]) / (rate(pg_stat_database_xact_commit[5m]) + rate(pg_stat_database_xact_rollback[5m]))", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "pg_stat_database_xact_commit", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{datname}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 0, + "y": 20, + "w": 96, + "h": 18, + "i": 3 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + } + ] + }, + { + "tabId": "84890", + "name": "Row Operations (DML Activity)", + "panels": [ + { + "id": "Panel_ID9982410", + "type": "line", + "title": "Rows Inserted", + "description": "Number of rows inserted per second across all databases.", + "config": { + "show_legends": true, + "legends_position": null, + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "rate(pg_stat_database_tup_inserted[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "pg_stat_database_tup_inserted", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{datname}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 0, + "y": 0, + "w": 96, + "h": 18, + "i": 1 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + }, + { + "id": "Panel_ID7995010", + "type": "line", + "title": "Rows Updated", + "description": "Number of rows updated per second across all databases.", + "config": { + "show_legends": true, + "legends_position": null, + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "rate(pg_stat_database_tup_updated[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "pg_stat_database_tup_updated", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{datname}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 96, + "y": 0, + "w": 96, + "h": 18, + "i": 2 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + }, + { + "id": "Panel_ID8366710", + "type": "line", + "title": "Rows Deleted", + "description": "Number of rows deleted per second across all databases.", + "config": { + "show_legends": true, + "legends_position": null, + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "rate(pg_stat_database_tup_deleted[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "pg_stat_database_tup_deleted", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{datname}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 0, + "y": 20, + "w": 96, + "h": 18, + "i": 3 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + }, + { + "id": "Panel_ID604610", + "type": "line", + "title": "Rows Fetched", + "description": "Number of rows fetched by queries per second. Indicates read workload intensity.", + "config": { + "show_legends": true, + "legends_position": null, + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "rate(pg_stat_database_tup_fetched[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "pg_stat_database_tup_fetched", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{datname}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 96, + "y": 20, + "w": 96, + "h": 18, + "i": 4 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + }, + { + "id": "Panel_ID8170910", + "type": "line", + "title": "Rows Returned", + "description": "Number of rows returned by queries per second. High values may indicate inefficient queries.", + "config": { + "show_legends": true, + "legends_position": null, + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "rate(pg_stat_database_tup_returned[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "pg_stat_database_tup_returned", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{datname}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 0, + "y": 40, + "w": 96, + "h": 18, + "i": 5 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + }, + { + "id": "Panel_ID6647510", + "type": "line", + "title": "Database Operations by Type", + "description": "Breakdown of database row operations (insert, update, delete, hot update) by type.", + "config": { + "show_legends": true, + "legends_position": "right", + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "rate(pg_stat_database_tup_inserted[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "container_cpu_time", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{postgresql_database_name}:{postgresql_table_name}:{operation}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + }, + { + "query": "rate(pg_stat_database_tup_updated[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "container_cpu_time", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "", + "layer_type": "scatter", + "weight_fixed": 1 + } + }, + { + "query": "rate(pg_stat_database_tup_deleted[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "container_cpu_time", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "", + "layer_type": "scatter", + "weight_fixed": 1 + } + } + ], + "layout": { + "x": 96, + "y": 40, + "w": 96, + "h": 18, + "i": 6 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + } + ] + }, + { + "tabId": "75184", + "name": "Table Statistics", + "panels": [] + }, + { + "tabId": "36386", + "name": "Index Performance", + "panels": [ + { + "id": "Panel_ID766010", + "type": "line", + "title": "Index Scans", + "description": "", + "config": { + "show_legends": true, + "legends_position": "right", + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "rate(pg_stat_user_tables_idx_scan[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "container_cpu_time", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{datname}:{relname}:{indexrelname}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 0, + "y": 0, + "w": 96, + "h": 18, + "i": 1 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + } + ] + }, + { + "tabId": "92341", + "name": "Background Writer & Checkpoints", + "panels": [ + { + "id": "Panel_ID4523110", + "type": "line", + "title": "Buffer Allocation Rate", + "description": "Rate of new buffers allocated per second by the background writer.", + "config": { + "show_legends": true, + "legends_position": null, + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "rate(pg_stat_bgwriter_buffers_alloc_total[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "container_cpu_time", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": " ", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 0, + "y": 0, + "w": 96, + "h": 18, + "i": 1 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + }, + { + "id": "Panel_ID1547210", + "type": "line", + "title": "Buffer Writes by Source", + "description": "Distribution of buffer writes across different sources (backend, checkpoints, bgwriter).", + "config": { + "show_legends": true, + "legends_position": "right", + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "rate(pg_stat_bgwriter_buffers_clean_total[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "container_cpu_time", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{source}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 96, + "y": 0, + "w": 96, + "h": 18, + "i": 2 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + }, + { + "id": "Panel_ID2384310", + "type": "line", + "title": "Checkpoint Rate", + "description": "Number of checkpoints performed per second, split by type (scheduled vs requested).", + "config": { + "show_legends": true, + "legends_position": "right", + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "rate(pg_stat_bgwriter_checkpoints_timed_total[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "container_cpu_time", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{type}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 0, + "y": 20, + "w": 96, + "h": 18, + "i": 3 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + }, + { + "id": "Panel_ID9562110", + "type": "line", + "title": "Checkpoint Duration", + "description": "Time spent in checkpoint operations (write and sync phases) in milliseconds.", + "config": { + "show_legends": true, + "legends_position": "right", + "unit": "ms", + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "rate(pg_stat_bgwriter_checkpoint_sync_time_total[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "container_cpu_time", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{type}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 96, + "y": 20, + "w": 96, + "h": 18, + "i": 4 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + }, + { + "id": "Panel_ID5123410", + "type": "line", + "title": "BgWriter Halt Events", + "description": "Times the background writer stopped due to writing too many buffers. Should be low.", + "config": { + "show_legends": true, + "legends_position": null, + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "rate(pg_stat_bgwriter_maxwritten_clean_total[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "container_cpu_time", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": " ", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 0, + "y": 40, + "w": 96, + "h": 18, + "i": 5 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + } + ] + }, + { + "tabId": "48512", + "name": "Vacuum & Maintenance", + "panels": [ + { + "id": "Panel_ID3927810", + "type": "line", + "title": "Manual Vacuum Rate", + "description": "Number of times tables have been manually vacuumed per second.", + "config": { + "show_legends": true, + "legends_position": "right", + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "rate(pg_stat_user_tables_vacuum_count[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "pg_stat_user_tables_vacuum_count", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{datname}:{relname}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 0, + "y": 0, + "w": 192, + "h": 18, + "i": 1 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + }, + { + "id": "Panel_ID6182310", + "type": "line", + "title": "Deadlock Rate", + "description": "Number of deadlocks detected per second. Should be zero or very low.", + "config": { + "show_legends": true, + "legends_position": null, + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "rate(pg_stat_database_deadlocks[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "container_cpu_time", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{postgresql_database_name}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 0, + "y": 20, + "w": 192, + "h": 18, + "i": 2 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + } + ] + }, + { + "tabId": "57293", + "name": "Advanced Metrics", + "panels": [ + { + "id": "Panel_ID1938410", + "type": "line", + "title": "Query Efficiency Ratio", + "description": "Ratio of rows fetched to rows returned. Values close to 1 indicate efficient queries.", + "config": { + "show_legends": true, + "legends_position": null, + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "rate(pg_stat_database_tup_fetched[5m]) / rate(pg_stat_database_tup_returned[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "pg_stat_database_tup_fetched", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{datname}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 0, + "y": 0, + "w": 96, + "h": 18, + "i": 1 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + }, + { + "id": "Panel_ID4729110", + "type": "line", + "title": "Write Activity Score", + "description": "Combined rate of all write operations (inserts + updates + deletes) per second.", + "config": { + "show_legends": true, + "legends_position": null, + "decimals": 2, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "rate(pg_stat_database_tup_inserted[5m]) + rate(pg_stat_database_tup_updated[5m]) + rate(pg_stat_database_tup_deleted[5m])", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "pg_stat_database_tup_inserted", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "{datname}", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 100, + "time_shift": [] + } + } + ], + "layout": { + "x": 96, + "y": 0, + "w": 96, + "h": 18, + "i": 2 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + }, + { + "id": "Panel_ID8956710", + "type": "gauge", + "title": "Database Health Score", + "description": "Composite health indicator based on cache hit ratio, commit success rate, and connection utilization.", + "config": { + "show_legends": true, + "legends_position": null, + "unit": "percent-1", + "decimals": 0, + "line_thickness": 1.5, + "step_value": "0", + "top_results_others": false, + "axis_border_show": false, + "label_option": { + "rotate": 0 + }, + "show_symbol": false, + "line_interpolation": "smooth", + "legend_width": { + "unit": "px" + }, + "legend_height": { + "unit": "px" + }, + "base_map": { + "type": "osm" + }, + "map_type": { + "type": "world" + }, + "map_view": { + "zoom": 1, + "lat": 0, + "lng": 0 + }, + "map_symbol_style": { + "size": "by Value", + "size_by_value": { + "min": 1, + "max": 100 + }, + "size_fixed": 2 + }, + "drilldown": [], + "mark_line": [], + "override_config": [], + "connect_nulls": false, + "no_value_replacement": "", + "wrap_table_cells": false, + "table_transpose": false, + "table_dynamic_columns": false, + "mappings": [], + "color": { + "mode": "palette-classic-by-series", + "fixedColor": [ + "#53ca53" + ], + "seriesBy": "last", + "colorBySeries": [] + }, + "trellis": { + "layout": null, + "num_of_columns": 1, + "group_by_y_axis": false + }, + "show_gridlines": true + }, + "queryType": "promql", + "queries": [ + { + "query": "(\n (\n sum by (datname) (rate(pg_stat_database_blks_hit[5m])) \n / \n (sum by (datname) (rate(pg_stat_database_blks_hit[5m])) + sum by (datname) (rate(pg_stat_database_blks_read[5m])) + 0.001)\n ) * 0.40\n) \n+ \n(\n (\n sum by (datname) (rate(pg_stat_database_xact_commit[5m])) \n / \n (sum by (datname) (rate(pg_stat_database_xact_commit[5m])) + sum by (datname) (rate(pg_stat_database_xact_rollback[5m])) + 0.001)\n ) * 0.30\n) \n+ \nscalar(\n (1 - (sum(pg_stat_activity_count) / (sum(pg_settings_max_connections) + 0.001))) * 0.30\n)", + "vrlFunctionQuery": "", + "customQuery": true, + "fields": { + "stream": "pg_stat_database_blks_hit", + "stream_type": "metrics", + "x": [], + "y": [], + "z": [], + "breakdown": [], + "filter": { + "filterType": "group", + "logicalOperator": "AND", + "conditions": [] + } + }, + "config": { + "promql_legend": "Health Score", + "layer_type": "scatter", + "weight_fixed": 1, + "limit": 0, + "min": 0, + "max": 1, + "time_shift": [] + } + } + ], + "layout": { + "x": 0, + "y": 20, + "w": 192, + "h": 18, + "i": 3 + }, + "htmlContent": "", + "markdownContent": "", + "customChartContent": " // To know more about ECharts , \n// visit: https://echarts.apache.org/examples/en/index.html \n// Example: https://echarts.apache.org/examples/en/editor.html?c=line-simple \n// Define your ECharts 'option' here. \n// 'data' variable is available for use and contains the response data from the search result and it is an array.\noption = { \n \n};\n " + } + ] + } + ], + "variables": { + "list": [], + "showDynamicFilters": false + }, + "defaultDatetimeDuration": { + "type": "relative", + "relativeTimePeriod": "15m", + "startTime": 1761970085508000, + "endTime": 1761970985508000 + } +} \ No newline at end of file diff --git a/PostgreSQL Metrics (Prometheus exporter)/Readme.md b/PostgreSQL Metrics (Prometheus exporter)/Readme.md new file mode 100644 index 0000000..a6ea874 --- /dev/null +++ b/PostgreSQL Metrics (Prometheus exporter)/Readme.md @@ -0,0 +1,3 @@ +# PostgreSQL Metrics Dashboard with Prometheus Exporter + +![PostgreSQL Metrics (prometheus)](./dashboard.png) diff --git a/PostgreSQL Metrics/PostgreSQL.dashboard.json b/PostgreSQL Metrics (opentelemetry-contrib)/PostgreSQL.dashboard.json similarity index 100% rename from PostgreSQL Metrics/PostgreSQL.dashboard.json rename to PostgreSQL Metrics (opentelemetry-contrib)/PostgreSQL.dashboard.json diff --git a/PostgreSQL Metrics (opentelemetry-contrib)/Readme.md b/PostgreSQL Metrics (opentelemetry-contrib)/Readme.md new file mode 100644 index 0000000..18252bf --- /dev/null +++ b/PostgreSQL Metrics (opentelemetry-contrib)/Readme.md @@ -0,0 +1,3 @@ +# PostgreSQL Metrics Dashboard + +![PostgreSQL Metrics (opentelemetry-contrib)](./dashboard.png) diff --git a/PostgreSQL Metrics/dashboard.png b/PostgreSQL Metrics (opentelemetry-contrib)/dashboard.png similarity index 100% rename from PostgreSQL Metrics/dashboard.png rename to PostgreSQL Metrics (opentelemetry-contrib)/dashboard.png diff --git a/PostgreSQL Metrics/Readme.md b/PostgreSQL Metrics/Readme.md deleted file mode 100644 index 28a6c8e..0000000 --- a/PostgreSQL Metrics/Readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# PostgreSQL Metrics Dashboard - -![PostgreSQL Metrics](./dashboard.png) \ No newline at end of file