From ea00c8954a621f09bcdf6c0e6cedb3a37a050ba1 Mon Sep 17 00:00:00 2001 From: jakubgalecki0 Date: Wed, 8 Jul 2026 14:55:50 +0200 Subject: [PATCH 1/2] [postgresql_otel] add adHocDataView to dashboards --- packages/postgresql_otel/changelog.yml | 5 +++++ .../kibana/dashboard/postgresql_otel-active-queries.json | 2 +- .../kibana/dashboard/postgresql_otel-connections.json | 2 +- .../kibana/dashboard/postgresql_otel-io-health.json | 2 +- .../kibana/dashboard/postgresql_otel-locks.json | 2 +- .../kibana/dashboard/postgresql_otel-overview.json | 2 +- .../kibana/dashboard/postgresql_otel-query-performance.json | 2 +- .../kibana/dashboard/postgresql_otel-workload.json | 2 +- packages/postgresql_otel/manifest.yml | 2 +- 9 files changed, 13 insertions(+), 8 deletions(-) diff --git a/packages/postgresql_otel/changelog.yml b/packages/postgresql_otel/changelog.yml index 147f468287e..bc415b59c22 100644 --- a/packages/postgresql_otel/changelog.yml +++ b/packages/postgresql_otel/changelog.yml @@ -1,4 +1,9 @@ # newer versions go on top +- version: "0.5.0" + changes: + - description: Add adHocDataViews to dashboards + type: enhancement + link: https://github.com/elastic/integrations/pull/1 - version: "0.4.0" changes: - description: Add description and artifact fields to alerting rule template. diff --git a/packages/postgresql_otel/kibana/dashboard/postgresql_otel-active-queries.json b/packages/postgresql_otel/kibana/dashboard/postgresql_otel-active-queries.json index 016f9de2d6d..006383d5568 100644 --- a/packages/postgresql_otel/kibana/dashboard/postgresql_otel-active-queries.json +++ b/packages/postgresql_otel/kibana/dashboard/postgresql_otel-active-queries.json @@ -2,7 +2,7 @@ "attributes": { "title": "[PostgreSQL OTel] Active Queries", "description": "Real-time snapshots of active queries from pg_stat_activity. Shows wait events, execution time, and state.", - "panelsJSON": "[{\"panelIndex\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\", \"gridData\": {\"x\": 0, \"y\": 0, \"w\": 48, \"h\": 2, \"i\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\"}, \"type\": \"links\", \"embeddableConfig\": {\"enhancements\": {}, \"attributes\": {\"layout\": \"horizontal\", \"links\": [{\"id\": \"3af4ba12-6f83-488a-bdc9-0c7216a22d73\", \"order\": 0, \"label\": \"Overview\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_3af4ba12-6f83-488a-bdc9-0c7216a22d73_dashboard\"}, {\"id\": \"457f9dcd-ccf2-13f5-ae7c-fd660d496fe1\", \"order\": 1, \"label\": \"Connections\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_457f9dcd-ccf2-13f5-ae7c-fd660d496fe1_dashboard\"}, {\"id\": \"df38fd11-17eb-2a21-12aa-c07388280dff\", \"order\": 2, \"label\": \"Workload\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_df38fd11-17eb-2a21-12aa-c07388280dff_dashboard\"}, {\"id\": \"26830f56-d6ec-6d34-6a53-840ef67339ae\", \"order\": 3, \"label\": \"Query Performance\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_26830f56-d6ec-6d34-6a53-840ef67339ae_dashboard\"}, {\"id\": \"034096ad-700e-a9a9-bff4-3d46eeaa5872\", \"order\": 4, \"label\": \"I/O Health\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_034096ad-700e-a9a9-bff4-3d46eeaa5872_dashboard\"}, {\"id\": \"e9d78396-5608-90eb-32c4-2b41057b91b6\", \"order\": 5, \"label\": \"Locks\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_e9d78396-5608-90eb-32c4-2b41057b91b6_dashboard\"}, {\"id\": \"70498c6a-23a7-aafd-b3e4-b54790c59b66\", \"order\": 6, \"label\": \"Active Queries\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_70498c6a-23a7-aafd-b3e4-b54790c59b66_dashboard\"}]}}}, {\"panelIndex\": \"ddecfbc9-dfd1-45f0-db4e-3f3d89153ed0\", \"gridData\": {\"x\": 0, \"y\": 2, \"w\": 16, \"h\": 14, \"i\": \"ddecfbc9-dfd1-45f0-db4e-3f3d89153ed0\"}, \"type\": \"visualization\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"savedVis\": {\"type\": \"markdown\", \"id\": \"\", \"title\": \"\", \"description\": \"\", \"params\": {\"fontSize\": 12, \"openLinksInNewTab\": false, \"markdown\": \"## [PostgreSQL OTel] Active Queries\\n\\nReal-time snapshots of active queries from pg_stat_activity:\\n- Query text and execution time\\n- Backend state (active, idle, etc.)\\n- Wait events (Lock, IO, LWLock)\\n- Client IP and application name\\n\"}, \"uiState\": {}, \"data\": {\"aggs\": [], \"searchSource\": {\"query\": {\"query\": \"\", \"language\": \"kuery\"}, \"filter\": []}}}}}, {\"panelIndex\": \"16c499dd-c0bc-0170-aa42-57b43f9bc11c\", \"gridData\": {\"x\": 16, \"y\": 2, \"w\": 32, \"h\": 4, \"i\": \"16c499dd-c0bc-0170-aa42-57b43f9bc11c\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Active Query Count\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"455df801-0b47-5e19-2d79-65783fe20051\", \"layerType\": \"data\", \"metricAccessor\": \"f85ad40f-e8de-3955-a37c-7209479c06df\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.query_sample\\\"\\n| STATS active_count = COUNT(*)\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"455df801-0b47-5e19-2d79-65783fe20051\": {\"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.query_sample\\\"\\n| STATS active_count = COUNT(*)\\n\"}, \"columns\": [{\"fieldName\": \"active_count\", \"columnId\": \"f85ad40f-e8de-3955-a37c-7209479c06df\", \"label\": \"Active Queries\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"active_count\", \"columnId\": \"f85ad40f-e8de-3955-a37c-7209479c06df\", \"label\": \"Active Queries\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"4a10ff94-6808-f339-68ec-708b033f04be\", \"gridData\": {\"x\": 16, \"y\": 6, \"w\": 16, \"h\": 10, \"i\": \"4a10ff94-6808-f339-68ec-708b033f04be\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Queries by State\", \"visualizationType\": \"lnsPie\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"55aecd21-9936-9ba2-4e24-9e03582960ae\", \"layerType\": \"data\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}, \"primaryGroups\": [\"9c557b1c-483b-1586-a9b9-ca508e59c5cf\"], \"metrics\": [\"c5a6e18f-2481-2c9b-9566-1c0147758245\"], \"numberDisplay\": \"percent\", \"categoryDisplay\": \"default\", \"legendDisplay\": \"default\", \"nestedLegend\": false, \"emptySizeRatio\": 0.5}], \"shape\": \"donut\"}, \"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.query_sample\\\"\\n| WHERE attributes.postgresql.state IS NOT NULL\\n| STATS count = COUNT(*) BY attributes.postgresql.state\\n| SORT count DESC\\n| LIMIT 10\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"55aecd21-9936-9ba2-4e24-9e03582960ae\": {\"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.query_sample\\\"\\n| WHERE attributes.postgresql.state IS NOT NULL\\n| STATS count = COUNT(*) BY attributes.postgresql.state\\n| SORT count DESC\\n| LIMIT 10\\n\"}, \"columns\": [{\"fieldName\": \"count\", \"columnId\": \"c5a6e18f-2481-2c9b-9566-1c0147758245\", \"label\": \"count\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"attributes.postgresql.state\", \"columnId\": \"9c557b1c-483b-1586-a9b9-ca508e59c5cf\", \"label\": \"State\", \"customLabel\": true}], \"allColumns\": [{\"fieldName\": \"count\", \"columnId\": \"c5a6e18f-2481-2c9b-9566-1c0147758245\", \"label\": \"count\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"attributes.postgresql.state\", \"columnId\": \"9c557b1c-483b-1586-a9b9-ca508e59c5cf\", \"label\": \"State\", \"customLabel\": true}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"ee908a08-6532-c09f-4f6a-707e752dff27\", \"gridData\": {\"x\": 32, \"y\": 6, \"w\": 16, \"h\": 10, \"i\": \"ee908a08-6532-c09f-4f6a-707e752dff27\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Queries by Wait Event Type\", \"visualizationType\": \"lnsPie\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"df448fda-0499-6c68-db51-d7858965237d\", \"layerType\": \"data\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}, \"primaryGroups\": [\"0c3ebbd5-bb99-9bdb-1c43-f9360b1d6eeb\"], \"metrics\": [\"c5a6e18f-2481-2c9b-9566-1c0147758245\"], \"numberDisplay\": \"percent\", \"categoryDisplay\": \"default\", \"legendDisplay\": \"default\", \"nestedLegend\": false, \"emptySizeRatio\": 0.5}], \"shape\": \"donut\"}, \"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.query_sample\\\"\\n| WHERE attributes.postgresql.wait_event_type IS NOT NULL AND attributes.postgresql.wait_event_type != \\\"\\\"\\n| STATS count = COUNT(*) BY attributes.postgresql.wait_event_type\\n| SORT count DESC\\n| LIMIT 10\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"df448fda-0499-6c68-db51-d7858965237d\": {\"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.query_sample\\\"\\n| WHERE attributes.postgresql.wait_event_type IS NOT NULL AND attributes.postgresql.wait_event_type != \\\"\\\"\\n| STATS count = COUNT(*) BY attributes.postgresql.wait_event_type\\n| SORT count DESC\\n| LIMIT 10\\n\"}, \"columns\": [{\"fieldName\": \"count\", \"columnId\": \"c5a6e18f-2481-2c9b-9566-1c0147758245\", \"label\": \"count\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"attributes.postgresql.wait_event_type\", \"columnId\": \"0c3ebbd5-bb99-9bdb-1c43-f9360b1d6eeb\", \"label\": \"Wait Event Type\", \"customLabel\": true}], \"allColumns\": [{\"fieldName\": \"count\", \"columnId\": \"c5a6e18f-2481-2c9b-9566-1c0147758245\", \"label\": \"count\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"attributes.postgresql.wait_event_type\", \"columnId\": \"0c3ebbd5-bb99-9bdb-1c43-f9360b1d6eeb\", \"label\": \"Wait Event Type\", \"customLabel\": true}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"34808571-cfa8-8c7e-c47d-2d36db43601b\", \"gridData\": {\"x\": 0, \"y\": 16, \"w\": 48, \"h\": 18, \"i\": \"34808571-cfa8-8c7e-c47d-2d36db43601b\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Active Queries Table\", \"visualizationType\": \"lnsDatatable\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"columns\": [{\"columnId\": \"74ec61cc-5457-84f6-3414-5e9f2ab0e2a0\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"3d628637-e647-a71e-2d77-507f2f1cc909\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"812eb91a-ef40-2d02-1667-dc6cef45b655\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"489f5f88-9b63-d1a6-088e-5e9cbbbbc44a\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"b1bdfecc-5d29-490c-c160-0145b0666c64\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"67baefc7-51ad-3274-0a03-71402a0c299c\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"3938c9be-200e-fd3c-ee39-9459d3297671\", \"isTransposed\": false, \"isMetric\": true}], \"layerId\": \"4248a154-ea45-feb9-a7a4-cb667f60c807\", \"layerType\": \"data\"}, \"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.query_sample\\\"\\n| KEEP @timestamp, attributes.db.namespace, attributes.db.query.text, attributes.postgresql.state, attributes.postgresql.total_exec_time, attributes.postgresql.wait_event_type, attributes.postgresql.wait_event, attributes.user.name, attributes.network.peer.address, attributes.postgresql.application_name\\n| SORT @timestamp DESC\\n| LIMIT 100\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"4248a154-ea45-feb9-a7a4-cb667f60c807\": {\"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.query_sample\\\"\\n| KEEP @timestamp, attributes.db.namespace, attributes.db.query.text, attributes.postgresql.state, attributes.postgresql.total_exec_time, attributes.postgresql.wait_event_type, attributes.postgresql.wait_event, attributes.user.name, attributes.network.peer.address, attributes.postgresql.application_name\\n| SORT @timestamp DESC\\n| LIMIT 100\\n\"}, \"columns\": [{\"fieldName\": \"@timestamp\", \"columnId\": \"74ec61cc-5457-84f6-3414-5e9f2ab0e2a0\", \"label\": \"Time\", \"customLabel\": true}, {\"fieldName\": \"attributes.db.namespace\", \"columnId\": \"3d628637-e647-a71e-2d77-507f2f1cc909\", \"label\": \"Database\", \"customLabel\": true}, {\"fieldName\": \"attributes.db.query.text\", \"columnId\": \"812eb91a-ef40-2d02-1667-dc6cef45b655\", \"label\": \"Query\", \"customLabel\": true}, {\"fieldName\": \"attributes.postgresql.state\", \"columnId\": \"489f5f88-9b63-d1a6-088e-5e9cbbbbc44a\", \"label\": \"State\", \"customLabel\": true}, {\"fieldName\": \"attributes.postgresql.wait_event_type\", \"columnId\": \"b1bdfecc-5d29-490c-c160-0145b0666c64\", \"label\": \"Wait Type\", \"customLabel\": true}, {\"fieldName\": \"attributes.postgresql.wait_event\", \"columnId\": \"67baefc7-51ad-3274-0a03-71402a0c299c\", \"label\": \"Wait Event\", \"customLabel\": true}, {\"fieldName\": \"attributes.postgresql.total_exec_time\", \"columnId\": \"3938c9be-200e-fd3c-ee39-9459d3297671\", \"label\": \"Exec Time (ms)\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}], \"allColumns\": [{\"fieldName\": \"@timestamp\", \"columnId\": \"74ec61cc-5457-84f6-3414-5e9f2ab0e2a0\", \"label\": \"Time\", \"customLabel\": true}, {\"fieldName\": \"attributes.db.namespace\", \"columnId\": \"3d628637-e647-a71e-2d77-507f2f1cc909\", \"label\": \"Database\", \"customLabel\": true}, {\"fieldName\": \"attributes.db.query.text\", \"columnId\": \"812eb91a-ef40-2d02-1667-dc6cef45b655\", \"label\": \"Query\", \"customLabel\": true}, {\"fieldName\": \"attributes.postgresql.state\", \"columnId\": \"489f5f88-9b63-d1a6-088e-5e9cbbbbc44a\", \"label\": \"State\", \"customLabel\": true}, {\"fieldName\": \"attributes.postgresql.wait_event_type\", \"columnId\": \"b1bdfecc-5d29-490c-c160-0145b0666c64\", \"label\": \"Wait Type\", \"customLabel\": true}, {\"fieldName\": \"attributes.postgresql.wait_event\", \"columnId\": \"67baefc7-51ad-3274-0a03-71402a0c299c\", \"label\": \"Wait Event\", \"customLabel\": true}, {\"fieldName\": \"attributes.postgresql.total_exec_time\", \"columnId\": \"3938c9be-200e-fd3c-ee39-9459d3297671\", \"label\": \"Exec Time (ms)\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}]", + "panelsJSON": "[{\"panelIndex\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\", \"gridData\": {\"x\": 0, \"y\": 0, \"w\": 48, \"h\": 2, \"i\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\"}, \"type\": \"links\", \"embeddableConfig\": {\"enhancements\": {}, \"attributes\": {\"layout\": \"horizontal\", \"links\": [{\"id\": \"3af4ba12-6f83-488a-bdc9-0c7216a22d73\", \"order\": 0, \"label\": \"Overview\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_3af4ba12-6f83-488a-bdc9-0c7216a22d73_dashboard\"}, {\"id\": \"457f9dcd-ccf2-13f5-ae7c-fd660d496fe1\", \"order\": 1, \"label\": \"Connections\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_457f9dcd-ccf2-13f5-ae7c-fd660d496fe1_dashboard\"}, {\"id\": \"df38fd11-17eb-2a21-12aa-c07388280dff\", \"order\": 2, \"label\": \"Workload\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_df38fd11-17eb-2a21-12aa-c07388280dff_dashboard\"}, {\"id\": \"26830f56-d6ec-6d34-6a53-840ef67339ae\", \"order\": 3, \"label\": \"Query Performance\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_26830f56-d6ec-6d34-6a53-840ef67339ae_dashboard\"}, {\"id\": \"034096ad-700e-a9a9-bff4-3d46eeaa5872\", \"order\": 4, \"label\": \"I/O Health\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_034096ad-700e-a9a9-bff4-3d46eeaa5872_dashboard\"}, {\"id\": \"e9d78396-5608-90eb-32c4-2b41057b91b6\", \"order\": 5, \"label\": \"Locks\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_e9d78396-5608-90eb-32c4-2b41057b91b6_dashboard\"}, {\"id\": \"70498c6a-23a7-aafd-b3e4-b54790c59b66\", \"order\": 6, \"label\": \"Active Queries\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_70498c6a-23a7-aafd-b3e4-b54790c59b66_dashboard\"}]}}}, {\"panelIndex\": \"ddecfbc9-dfd1-45f0-db4e-3f3d89153ed0\", \"gridData\": {\"x\": 0, \"y\": 2, \"w\": 16, \"h\": 14, \"i\": \"ddecfbc9-dfd1-45f0-db4e-3f3d89153ed0\"}, \"type\": \"visualization\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"savedVis\": {\"type\": \"markdown\", \"id\": \"\", \"title\": \"\", \"description\": \"\", \"params\": {\"fontSize\": 12, \"openLinksInNewTab\": false, \"markdown\": \"## [PostgreSQL OTel] Active Queries\\n\\nReal-time snapshots of active queries from pg_stat_activity:\\n- Query text and execution time\\n- Backend state (active, idle, etc.)\\n- Wait events (Lock, IO, LWLock)\\n- Client IP and application name\\n\"}, \"uiState\": {}, \"data\": {\"aggs\": [], \"searchSource\": {\"query\": {\"query\": \"\", \"language\": \"kuery\"}, \"filter\": []}}}}}, {\"panelIndex\": \"16c499dd-c0bc-0170-aa42-57b43f9bc11c\", \"gridData\": {\"x\": 16, \"y\": 2, \"w\": 32, \"h\": 4, \"i\": \"16c499dd-c0bc-0170-aa42-57b43f9bc11c\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Active Query Count\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"455df801-0b47-5e19-2d79-65783fe20051\", \"layerType\": \"data\", \"metricAccessor\": \"f85ad40f-e8de-3955-a37c-7209479c06df\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.query_sample\\\"\\n| STATS active_count = COUNT(*)\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"455df801-0b47-5e19-2d79-65783fe20051\": {\"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.query_sample\\\"\\n| STATS active_count = COUNT(*)\\n\"}, \"columns\": [{\"fieldName\": \"active_count\", \"columnId\": \"f85ad40f-e8de-3955-a37c-7209479c06df\", \"label\": \"Active Queries\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"active_count\", \"columnId\": \"f85ad40f-e8de-3955-a37c-7209479c06df\", \"label\": \"Active Queries\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\", \"index\": \"aefb8074-6743-279c-9f28-cc3e266a1e2a\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"aefb8074-6743-279c-9f28-cc3e266a1e2a\", \"name\": \"indexpattern-datasource-layer-455df801-0b47-5e19-2d79-65783fe20051\"}], \"adHocDataViews\": {\"aefb8074-6743-279c-9f28-cc3e266a1e2a\": {\"id\": \"aefb8074-6743-279c-9f28-cc3e266a1e2a\", \"type\": \"esql\", \"name\": \"logs-postgresqlreceiver.otel-*\", \"title\": \"logs-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"4a10ff94-6808-f339-68ec-708b033f04be\", \"gridData\": {\"x\": 16, \"y\": 6, \"w\": 16, \"h\": 10, \"i\": \"4a10ff94-6808-f339-68ec-708b033f04be\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Queries by State\", \"visualizationType\": \"lnsPie\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"55aecd21-9936-9ba2-4e24-9e03582960ae\", \"layerType\": \"data\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}, \"primaryGroups\": [\"9c557b1c-483b-1586-a9b9-ca508e59c5cf\"], \"metrics\": [\"c5a6e18f-2481-2c9b-9566-1c0147758245\"], \"numberDisplay\": \"percent\", \"categoryDisplay\": \"default\", \"legendDisplay\": \"default\", \"legendPosition\": \"right\", \"nestedLegend\": false, \"emptySizeRatio\": 0.5}], \"shape\": \"donut\"}, \"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.query_sample\\\"\\n| WHERE attributes.postgresql.state IS NOT NULL\\n| STATS count = COUNT(*) BY attributes.postgresql.state\\n| SORT count DESC\\n| LIMIT 10\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"55aecd21-9936-9ba2-4e24-9e03582960ae\": {\"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.query_sample\\\"\\n| WHERE attributes.postgresql.state IS NOT NULL\\n| STATS count = COUNT(*) BY attributes.postgresql.state\\n| SORT count DESC\\n| LIMIT 10\\n\"}, \"columns\": [{\"fieldName\": \"count\", \"columnId\": \"c5a6e18f-2481-2c9b-9566-1c0147758245\", \"label\": \"count\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"attributes.postgresql.state\", \"columnId\": \"9c557b1c-483b-1586-a9b9-ca508e59c5cf\", \"label\": \"State\", \"customLabel\": true}], \"allColumns\": [{\"fieldName\": \"count\", \"columnId\": \"c5a6e18f-2481-2c9b-9566-1c0147758245\", \"label\": \"count\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"attributes.postgresql.state\", \"columnId\": \"9c557b1c-483b-1586-a9b9-ca508e59c5cf\", \"label\": \"State\", \"customLabel\": true}], \"timeField\": \"@timestamp\", \"index\": \"09587a7c-367b-a804-89e4-416017095bc2\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"09587a7c-367b-a804-89e4-416017095bc2\", \"name\": \"indexpattern-datasource-layer-55aecd21-9936-9ba2-4e24-9e03582960ae\"}], \"adHocDataViews\": {\"09587a7c-367b-a804-89e4-416017095bc2\": {\"id\": \"09587a7c-367b-a804-89e4-416017095bc2\", \"type\": \"esql\", \"name\": \"logs-postgresqlreceiver.otel-*\", \"title\": \"logs-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"ee908a08-6532-c09f-4f6a-707e752dff27\", \"gridData\": {\"x\": 32, \"y\": 6, \"w\": 16, \"h\": 10, \"i\": \"ee908a08-6532-c09f-4f6a-707e752dff27\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Queries by Wait Event Type\", \"visualizationType\": \"lnsPie\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"df448fda-0499-6c68-db51-d7858965237d\", \"layerType\": \"data\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}, \"primaryGroups\": [\"0c3ebbd5-bb99-9bdb-1c43-f9360b1d6eeb\"], \"metrics\": [\"c5a6e18f-2481-2c9b-9566-1c0147758245\"], \"numberDisplay\": \"percent\", \"categoryDisplay\": \"default\", \"legendDisplay\": \"default\", \"legendPosition\": \"right\", \"nestedLegend\": false, \"emptySizeRatio\": 0.5}], \"shape\": \"donut\"}, \"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.query_sample\\\"\\n| WHERE attributes.postgresql.wait_event_type IS NOT NULL AND attributes.postgresql.wait_event_type != \\\"\\\"\\n| STATS count = COUNT(*) BY attributes.postgresql.wait_event_type\\n| SORT count DESC\\n| LIMIT 10\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"df448fda-0499-6c68-db51-d7858965237d\": {\"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.query_sample\\\"\\n| WHERE attributes.postgresql.wait_event_type IS NOT NULL AND attributes.postgresql.wait_event_type != \\\"\\\"\\n| STATS count = COUNT(*) BY attributes.postgresql.wait_event_type\\n| SORT count DESC\\n| LIMIT 10\\n\"}, \"columns\": [{\"fieldName\": \"count\", \"columnId\": \"c5a6e18f-2481-2c9b-9566-1c0147758245\", \"label\": \"count\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"attributes.postgresql.wait_event_type\", \"columnId\": \"0c3ebbd5-bb99-9bdb-1c43-f9360b1d6eeb\", \"label\": \"Wait Event Type\", \"customLabel\": true}], \"allColumns\": [{\"fieldName\": \"count\", \"columnId\": \"c5a6e18f-2481-2c9b-9566-1c0147758245\", \"label\": \"count\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"attributes.postgresql.wait_event_type\", \"columnId\": \"0c3ebbd5-bb99-9bdb-1c43-f9360b1d6eeb\", \"label\": \"Wait Event Type\", \"customLabel\": true}], \"timeField\": \"@timestamp\", \"index\": \"e2ed7218-65a3-ce08-157d-1d4469fa26f2\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"e2ed7218-65a3-ce08-157d-1d4469fa26f2\", \"name\": \"indexpattern-datasource-layer-df448fda-0499-6c68-db51-d7858965237d\"}], \"adHocDataViews\": {\"e2ed7218-65a3-ce08-157d-1d4469fa26f2\": {\"id\": \"e2ed7218-65a3-ce08-157d-1d4469fa26f2\", \"type\": \"esql\", \"name\": \"logs-postgresqlreceiver.otel-*\", \"title\": \"logs-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"34808571-cfa8-8c7e-c47d-2d36db43601b\", \"gridData\": {\"x\": 0, \"y\": 16, \"w\": 48, \"h\": 18, \"i\": \"34808571-cfa8-8c7e-c47d-2d36db43601b\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Active Queries Table\", \"visualizationType\": \"lnsDatatable\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"columns\": [{\"columnId\": \"74ec61cc-5457-84f6-3414-5e9f2ab0e2a0\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"3d628637-e647-a71e-2d77-507f2f1cc909\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"812eb91a-ef40-2d02-1667-dc6cef45b655\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"489f5f88-9b63-d1a6-088e-5e9cbbbbc44a\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"b1bdfecc-5d29-490c-c160-0145b0666c64\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"67baefc7-51ad-3274-0a03-71402a0c299c\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"3938c9be-200e-fd3c-ee39-9459d3297671\", \"isTransposed\": false, \"isMetric\": true}], \"layerId\": \"4248a154-ea45-feb9-a7a4-cb667f60c807\", \"layerType\": \"data\"}, \"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.query_sample\\\"\\n| KEEP @timestamp, attributes.db.namespace, attributes.db.query.text, attributes.postgresql.state, attributes.postgresql.total_exec_time, attributes.postgresql.wait_event_type, attributes.postgresql.wait_event, attributes.user.name, attributes.network.peer.address, attributes.postgresql.application_name\\n| SORT @timestamp DESC\\n| LIMIT 100\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"4248a154-ea45-feb9-a7a4-cb667f60c807\": {\"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.query_sample\\\"\\n| KEEP @timestamp, attributes.db.namespace, attributes.db.query.text, attributes.postgresql.state, attributes.postgresql.total_exec_time, attributes.postgresql.wait_event_type, attributes.postgresql.wait_event, attributes.user.name, attributes.network.peer.address, attributes.postgresql.application_name\\n| SORT @timestamp DESC\\n| LIMIT 100\\n\"}, \"columns\": [{\"fieldName\": \"@timestamp\", \"columnId\": \"74ec61cc-5457-84f6-3414-5e9f2ab0e2a0\", \"label\": \"Time\", \"customLabel\": true}, {\"fieldName\": \"attributes.db.namespace\", \"columnId\": \"3d628637-e647-a71e-2d77-507f2f1cc909\", \"label\": \"Database\", \"customLabel\": true}, {\"fieldName\": \"attributes.db.query.text\", \"columnId\": \"812eb91a-ef40-2d02-1667-dc6cef45b655\", \"label\": \"Query\", \"customLabel\": true}, {\"fieldName\": \"attributes.postgresql.state\", \"columnId\": \"489f5f88-9b63-d1a6-088e-5e9cbbbbc44a\", \"label\": \"State\", \"customLabel\": true}, {\"fieldName\": \"attributes.postgresql.wait_event_type\", \"columnId\": \"b1bdfecc-5d29-490c-c160-0145b0666c64\", \"label\": \"Wait Type\", \"customLabel\": true}, {\"fieldName\": \"attributes.postgresql.wait_event\", \"columnId\": \"67baefc7-51ad-3274-0a03-71402a0c299c\", \"label\": \"Wait Event\", \"customLabel\": true}, {\"fieldName\": \"attributes.postgresql.total_exec_time\", \"columnId\": \"3938c9be-200e-fd3c-ee39-9459d3297671\", \"label\": \"Exec Time (ms)\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}], \"allColumns\": [{\"fieldName\": \"@timestamp\", \"columnId\": \"74ec61cc-5457-84f6-3414-5e9f2ab0e2a0\", \"label\": \"Time\", \"customLabel\": true}, {\"fieldName\": \"attributes.db.namespace\", \"columnId\": \"3d628637-e647-a71e-2d77-507f2f1cc909\", \"label\": \"Database\", \"customLabel\": true}, {\"fieldName\": \"attributes.db.query.text\", \"columnId\": \"812eb91a-ef40-2d02-1667-dc6cef45b655\", \"label\": \"Query\", \"customLabel\": true}, {\"fieldName\": \"attributes.postgresql.state\", \"columnId\": \"489f5f88-9b63-d1a6-088e-5e9cbbbbc44a\", \"label\": \"State\", \"customLabel\": true}, {\"fieldName\": \"attributes.postgresql.wait_event_type\", \"columnId\": \"b1bdfecc-5d29-490c-c160-0145b0666c64\", \"label\": \"Wait Type\", \"customLabel\": true}, {\"fieldName\": \"attributes.postgresql.wait_event\", \"columnId\": \"67baefc7-51ad-3274-0a03-71402a0c299c\", \"label\": \"Wait Event\", \"customLabel\": true}, {\"fieldName\": \"attributes.postgresql.total_exec_time\", \"columnId\": \"3938c9be-200e-fd3c-ee39-9459d3297671\", \"label\": \"Exec Time (ms)\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}], \"timeField\": \"@timestamp\", \"index\": \"cb3844ba-59d8-dbb9-57ab-3ab491a6f55f\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"cb3844ba-59d8-dbb9-57ab-3ab491a6f55f\", \"name\": \"indexpattern-datasource-layer-4248a154-ea45-feb9-a7a4-cb667f60c807\"}], \"adHocDataViews\": {\"cb3844ba-59d8-dbb9-57ab-3ab491a6f55f\": {\"id\": \"cb3844ba-59d8-dbb9-57ab-3ab491a6f55f\", \"type\": \"esql\", \"name\": \"logs-postgresqlreceiver.otel-*\", \"title\": \"logs-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}]", "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"kuery\"}}" diff --git a/packages/postgresql_otel/kibana/dashboard/postgresql_otel-connections.json b/packages/postgresql_otel/kibana/dashboard/postgresql_otel-connections.json index 27514046bcb..edc1532418d 100644 --- a/packages/postgresql_otel/kibana/dashboard/postgresql_otel-connections.json +++ b/packages/postgresql_otel/kibana/dashboard/postgresql_otel-connections.json @@ -2,7 +2,7 @@ "attributes": { "title": "[PostgreSQL OTel] Connections", "description": "Connection capacity, utilization, and backend distribution per database.", - "panelsJSON": "[{\"panelIndex\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\", \"gridData\": {\"x\": 0, \"y\": 0, \"w\": 48, \"h\": 2, \"i\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\"}, \"type\": \"links\", \"embeddableConfig\": {\"enhancements\": {}, \"attributes\": {\"layout\": \"horizontal\", \"links\": [{\"id\": \"3af4ba12-6f83-488a-bdc9-0c7216a22d73\", \"order\": 0, \"label\": \"Overview\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_3af4ba12-6f83-488a-bdc9-0c7216a22d73_dashboard\"}, {\"id\": \"457f9dcd-ccf2-13f5-ae7c-fd660d496fe1\", \"order\": 1, \"label\": \"Connections\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_457f9dcd-ccf2-13f5-ae7c-fd660d496fe1_dashboard\"}, {\"id\": \"df38fd11-17eb-2a21-12aa-c07388280dff\", \"order\": 2, \"label\": \"Workload\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_df38fd11-17eb-2a21-12aa-c07388280dff_dashboard\"}, {\"id\": \"26830f56-d6ec-6d34-6a53-840ef67339ae\", \"order\": 3, \"label\": \"Query Performance\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_26830f56-d6ec-6d34-6a53-840ef67339ae_dashboard\"}, {\"id\": \"034096ad-700e-a9a9-bff4-3d46eeaa5872\", \"order\": 4, \"label\": \"I/O Health\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_034096ad-700e-a9a9-bff4-3d46eeaa5872_dashboard\"}, {\"id\": \"e9d78396-5608-90eb-32c4-2b41057b91b6\", \"order\": 5, \"label\": \"Locks\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_e9d78396-5608-90eb-32c4-2b41057b91b6_dashboard\"}, {\"id\": \"70498c6a-23a7-aafd-b3e4-b54790c59b66\", \"order\": 6, \"label\": \"Active Queries\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_70498c6a-23a7-aafd-b3e4-b54790c59b66_dashboard\"}]}}}, {\"panelIndex\": \"fc69666b-014e-4167-d063-22478c958b29\", \"gridData\": {\"x\": 0, \"y\": 2, \"w\": 16, \"h\": 8, \"i\": \"fc69666b-014e-4167-d063-22478c958b29\"}, \"type\": \"visualization\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"savedVis\": {\"type\": \"markdown\", \"id\": \"\", \"title\": \"\", \"description\": \"\", \"params\": {\"fontSize\": 12, \"openLinksInNewTab\": false, \"markdown\": \"## [PostgreSQL OTel] Connections\\n\\nThis dashboard monitors connection capacity and utilization:\\n- Active backends vs max_connections\\n- Connection utilization percentage\\n- Backend distribution by database\\n- Connection trends over time\\n\"}, \"uiState\": {}, \"data\": {\"aggs\": [], \"searchSource\": {\"query\": {\"query\": \"\", \"language\": \"kuery\"}, \"filter\": []}}}}}, {\"panelIndex\": \"b899a643-830c-ed27-453e-82d3a605a83b\", \"gridData\": {\"x\": 16, \"y\": 2, \"w\": 16, \"h\": 4, \"i\": \"b899a643-830c-ed27-453e-82d3a605a83b\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Active Connections\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"38224636-1d9e-16f9-aa30-0ec705b5f640\", \"layerType\": \"data\", \"metricAccessor\": \"6543a488-b649-fe1f-43f6-13e2d771b707\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL\\n| STATS connections = SUM(LAST_OVER_TIME(postgresql.backends))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"38224636-1d9e-16f9-aa30-0ec705b5f640\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL\\n| STATS connections = SUM(LAST_OVER_TIME(postgresql.backends))\\n\"}, \"columns\": [{\"fieldName\": \"connections\", \"columnId\": \"6543a488-b649-fe1f-43f6-13e2d771b707\", \"label\": \"Active\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"connections\", \"columnId\": \"6543a488-b649-fe1f-43f6-13e2d771b707\", \"label\": \"Active\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"bfa246f4-0da1-7bf6-9978-fd2d164fbc9b\", \"gridData\": {\"x\": 32, \"y\": 2, \"w\": 16, \"h\": 4, \"i\": \"bfa246f4-0da1-7bf6-9978-fd2d164fbc9b\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Max Connections\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"ab54d5a7-4ad1-c0c8-10c1-ca638709c1eb\", \"layerType\": \"data\", \"metricAccessor\": \"79064bf0-378b-7f0f-3a27-14f04133c258\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.connection.max IS NOT NULL\\n| STATS max_conn = MAX(LAST_OVER_TIME(postgresql.connection.max))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"ab54d5a7-4ad1-c0c8-10c1-ca638709c1eb\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.connection.max IS NOT NULL\\n| STATS max_conn = MAX(LAST_OVER_TIME(postgresql.connection.max))\\n\"}, \"columns\": [{\"fieldName\": \"max_conn\", \"columnId\": \"79064bf0-378b-7f0f-3a27-14f04133c258\", \"label\": \"Max\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"max_conn\", \"columnId\": \"79064bf0-378b-7f0f-3a27-14f04133c258\", \"label\": \"Max\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"3d4aa237-9f56-6399-6e4c-b05301ba9c9d\", \"gridData\": {\"x\": 16, \"y\": 6, \"w\": 16, \"h\": 4, \"i\": \"3d4aa237-9f56-6399-6e4c-b05301ba9c9d\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Connection Utilization\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"31f4e125-92da-22c3-9026-a23610b0cd89\", \"layerType\": \"data\", \"metricAccessor\": \"82055a1d-04f8-c63a-b90d-4437bc1e2b28\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL OR postgresql.connection.max IS NOT NULL\\n| STATS backends = SUM(LAST_OVER_TIME(postgresql.backends)), max_conn = MAX(LAST_OVER_TIME(postgresql.connection.max))\\n| EVAL utilization = CASE(max_conn > 0, TO_DOUBLE(backends) / TO_DOUBLE(max_conn), 0)\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"31f4e125-92da-22c3-9026-a23610b0cd89\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL OR postgresql.connection.max IS NOT NULL\\n| STATS backends = SUM(LAST_OVER_TIME(postgresql.backends)), max_conn = MAX(LAST_OVER_TIME(postgresql.connection.max))\\n| EVAL utilization = CASE(max_conn > 0, TO_DOUBLE(backends) / TO_DOUBLE(max_conn), 0)\\n\"}, \"columns\": [{\"fieldName\": \"utilization\", \"columnId\": \"82055a1d-04f8-c63a-b90d-4437bc1e2b28\", \"label\": \"Utilization\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 1}}}}], \"allColumns\": [{\"fieldName\": \"utilization\", \"columnId\": \"82055a1d-04f8-c63a-b90d-4437bc1e2b28\", \"label\": \"Utilization\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 1}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"3cadade9-737a-9200-b522-d04ef5c13b39\", \"gridData\": {\"x\": 32, \"y\": 6, \"w\": 16, \"h\": 4, \"i\": \"3cadade9-737a-9200-b522-d04ef5c13b39\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Databases\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"d65eb1ac-33d0-4bf5-4c46-d6826ed3959a\", \"layerType\": \"data\", \"metricAccessor\": \"66f6f840-28d0-4465-d870-ed2fb520ff18\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.count IS NOT NULL\\n| STATS db_count = MAX(postgresql.database.count)\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"d65eb1ac-33d0-4bf5-4c46-d6826ed3959a\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.count IS NOT NULL\\n| STATS db_count = MAX(postgresql.database.count)\\n\"}, \"columns\": [{\"fieldName\": \"db_count\", \"columnId\": \"66f6f840-28d0-4465-d870-ed2fb520ff18\", \"label\": \"Databases\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"db_count\", \"columnId\": \"66f6f840-28d0-4465-d870-ed2fb520ff18\", \"label\": \"Databases\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"01c75bec-2136-c77c-7889-26fdcb6bfd26\", \"gridData\": {\"x\": 0, \"y\": 10, \"w\": 24, \"h\": 10, \"i\": \"01c75bec-2136-c77c-7889-26fdcb6bfd26\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Connection Utilization Gauge\", \"visualizationType\": \"lnsGauge\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"57347d47-2caa-ed52-76a0-602f776153a5\", \"layerType\": \"data\", \"metricAccessor\": \"ccc47c24-b67d-563d-10ae-936c6cc81fa3\", \"minAccessor\": \"46d0f1d5-79ce-2fae-4a9b-5958d97e7fa2\", \"maxAccessor\": \"870bfed3-1af3-8829-2b44-1af2c031ee62\", \"goalAccessor\": \"a516ad2b-d970-0590-ff0f-d390c05b47f0\", \"shape\": \"arc\", \"ticksPosition\": \"bands\", \"labelMajorMode\": \"auto\", \"colorMode\": \"palette\", \"palette\": {\"name\": \"custom\", \"type\": \"palette\", \"params\": {\"steps\": 3, \"name\": \"custom\", \"reverse\": false, \"rangeType\": \"percent\", \"rangeMin\": 0.0, \"rangeMax\": 1.0, \"progression\": \"fixed\", \"stops\": [{\"color\": \"#54b399\", \"stop\": 0.8}, {\"color\": \"#d6bf57\", \"stop\": 0.95}, {\"color\": \"#cc5642\", \"stop\": 1.0}], \"colorStops\": [{\"color\": \"#54b399\", \"stop\": 0.0}, {\"color\": \"#d6bf57\", \"stop\": 0.8}, {\"color\": \"#cc5642\", \"stop\": 0.95}], \"continuity\": \"above\", \"maxSteps\": 3}}}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL OR postgresql.connection.max IS NOT NULL\\n| STATS backends = SUM(LAST_OVER_TIME(postgresql.backends)), max_conn = MAX(LAST_OVER_TIME(postgresql.connection.max))\\n| EVAL utilization = CASE(max_conn > 0, TO_DOUBLE(backends) / TO_DOUBLE(max_conn), 0), min_val = 0.0, max_val = 1.0, goal_val = 0.8\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"57347d47-2caa-ed52-76a0-602f776153a5\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL OR postgresql.connection.max IS NOT NULL\\n| STATS backends = SUM(LAST_OVER_TIME(postgresql.backends)), max_conn = MAX(LAST_OVER_TIME(postgresql.connection.max))\\n| EVAL utilization = CASE(max_conn > 0, TO_DOUBLE(backends) / TO_DOUBLE(max_conn), 0), min_val = 0.0, max_val = 1.0, goal_val = 0.8\\n\"}, \"columns\": [{\"fieldName\": \"utilization\", \"columnId\": \"ccc47c24-b67d-563d-10ae-936c6cc81fa3\", \"label\": \"Utilization\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"min_val\", \"columnId\": \"46d0f1d5-79ce-2fae-4a9b-5958d97e7fa2\", \"label\": \"min_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}, {\"fieldName\": \"max_val\", \"columnId\": \"870bfed3-1af3-8829-2b44-1af2c031ee62\", \"label\": \"max_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}, {\"fieldName\": \"goal_val\", \"columnId\": \"a516ad2b-d970-0590-ff0f-d390c05b47f0\", \"label\": \"goal_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}], \"allColumns\": [{\"fieldName\": \"utilization\", \"columnId\": \"ccc47c24-b67d-563d-10ae-936c6cc81fa3\", \"label\": \"Utilization\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"min_val\", \"columnId\": \"46d0f1d5-79ce-2fae-4a9b-5958d97e7fa2\", \"label\": \"min_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}, {\"fieldName\": \"max_val\", \"columnId\": \"870bfed3-1af3-8829-2b44-1af2c031ee62\", \"label\": \"max_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}, {\"fieldName\": \"goal_val\", \"columnId\": \"a516ad2b-d970-0590-ff0f-d390c05b47f0\", \"label\": \"goal_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"7ccdb9a5-7ae0-406d-17b3-1d8f89c5b2a0\", \"gridData\": {\"x\": 24, \"y\": 10, \"w\": 24, \"h\": 10, \"i\": \"7ccdb9a5-7ae0-406d-17b3-1d8f89c5b2a0\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Backends by Database\", \"visualizationType\": \"lnsPie\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"84fa4e87-e73a-948a-818b-281a1d64c997\", \"layerType\": \"data\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}, \"primaryGroups\": [\"d8d31f57-70aa-df71-5959-349a9f2dc555\"], \"metrics\": [\"46543fd6-6c22-deb4-0725-c3b8dd48f3ef\"], \"numberDisplay\": \"percent\", \"categoryDisplay\": \"default\", \"legendDisplay\": \"default\", \"nestedLegend\": false, \"emptySizeRatio\": 0.5}], \"shape\": \"donut\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL\\n| STATS backends = MAX(postgresql.backends) BY resource.attributes.postgresql.database.name\\n| SORT backends DESC\\n| LIMIT 10\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"84fa4e87-e73a-948a-818b-281a1d64c997\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL\\n| STATS backends = MAX(postgresql.backends) BY resource.attributes.postgresql.database.name\\n| SORT backends DESC\\n| LIMIT 10\\n\"}, \"columns\": [{\"fieldName\": \"backends\", \"columnId\": \"46543fd6-6c22-deb4-0725-c3b8dd48f3ef\", \"label\": \"backends\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"d8d31f57-70aa-df71-5959-349a9f2dc555\", \"label\": \"Database\", \"customLabel\": true}], \"allColumns\": [{\"fieldName\": \"backends\", \"columnId\": \"46543fd6-6c22-deb4-0725-c3b8dd48f3ef\", \"label\": \"backends\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"d8d31f57-70aa-df71-5959-349a9f2dc555\", \"label\": \"Database\", \"customLabel\": true}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"1af7e59a-844b-a37c-3bf1-13d6c8d32e1c\", \"gridData\": {\"x\": 0, \"y\": 20, \"w\": 48, \"h\": 12, \"i\": \"1af7e59a-844b-a37c-3bf1-13d6c8d32e1c\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Connections Over Time by Database\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"eb41c0f0-6647-2a3a-fc6c-59d4616356f7\", \"accessors\": [\"2f20e14e-f3eb-ac65-76a8-44bdfd03af33\"], \"layerType\": \"data\", \"seriesType\": \"area\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"area\", \"legend\": {\"isVisible\": true, \"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL\\n| STATS connections = MAX(LAST_OVER_TIME(postgresql.backends)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"eb41c0f0-6647-2a3a-fc6c-59d4616356f7\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL\\n| STATS connections = MAX(LAST_OVER_TIME(postgresql.backends)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"connections\", \"columnId\": \"2f20e14e-f3eb-ac65-76a8-44bdfd03af33\", \"label\": \"Connections\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"connections\", \"columnId\": \"2f20e14e-f3eb-ac65-76a8-44bdfd03af33\", \"label\": \"Connections\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}]", + "panelsJSON": "[{\"panelIndex\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\", \"gridData\": {\"x\": 0, \"y\": 0, \"w\": 48, \"h\": 2, \"i\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\"}, \"type\": \"links\", \"embeddableConfig\": {\"enhancements\": {}, \"attributes\": {\"layout\": \"horizontal\", \"links\": [{\"id\": \"3af4ba12-6f83-488a-bdc9-0c7216a22d73\", \"order\": 0, \"label\": \"Overview\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_3af4ba12-6f83-488a-bdc9-0c7216a22d73_dashboard\"}, {\"id\": \"457f9dcd-ccf2-13f5-ae7c-fd660d496fe1\", \"order\": 1, \"label\": \"Connections\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_457f9dcd-ccf2-13f5-ae7c-fd660d496fe1_dashboard\"}, {\"id\": \"df38fd11-17eb-2a21-12aa-c07388280dff\", \"order\": 2, \"label\": \"Workload\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_df38fd11-17eb-2a21-12aa-c07388280dff_dashboard\"}, {\"id\": \"26830f56-d6ec-6d34-6a53-840ef67339ae\", \"order\": 3, \"label\": \"Query Performance\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_26830f56-d6ec-6d34-6a53-840ef67339ae_dashboard\"}, {\"id\": \"034096ad-700e-a9a9-bff4-3d46eeaa5872\", \"order\": 4, \"label\": \"I/O Health\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_034096ad-700e-a9a9-bff4-3d46eeaa5872_dashboard\"}, {\"id\": \"e9d78396-5608-90eb-32c4-2b41057b91b6\", \"order\": 5, \"label\": \"Locks\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_e9d78396-5608-90eb-32c4-2b41057b91b6_dashboard\"}, {\"id\": \"70498c6a-23a7-aafd-b3e4-b54790c59b66\", \"order\": 6, \"label\": \"Active Queries\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_70498c6a-23a7-aafd-b3e4-b54790c59b66_dashboard\"}]}}}, {\"panelIndex\": \"fc69666b-014e-4167-d063-22478c958b29\", \"gridData\": {\"x\": 0, \"y\": 2, \"w\": 16, \"h\": 8, \"i\": \"fc69666b-014e-4167-d063-22478c958b29\"}, \"type\": \"visualization\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"savedVis\": {\"type\": \"markdown\", \"id\": \"\", \"title\": \"\", \"description\": \"\", \"params\": {\"fontSize\": 12, \"openLinksInNewTab\": false, \"markdown\": \"## [PostgreSQL OTel] Connections\\n\\nThis dashboard monitors connection capacity and utilization:\\n- Active backends vs max_connections\\n- Connection utilization percentage\\n- Backend distribution by database\\n- Connection trends over time\\n\"}, \"uiState\": {}, \"data\": {\"aggs\": [], \"searchSource\": {\"query\": {\"query\": \"\", \"language\": \"kuery\"}, \"filter\": []}}}}}, {\"panelIndex\": \"b899a643-830c-ed27-453e-82d3a605a83b\", \"gridData\": {\"x\": 16, \"y\": 2, \"w\": 16, \"h\": 4, \"i\": \"b899a643-830c-ed27-453e-82d3a605a83b\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Active Connections\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"38224636-1d9e-16f9-aa30-0ec705b5f640\", \"layerType\": \"data\", \"metricAccessor\": \"6543a488-b649-fe1f-43f6-13e2d771b707\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL\\n| STATS connections = SUM(LAST_OVER_TIME(postgresql.backends))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"38224636-1d9e-16f9-aa30-0ec705b5f640\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL\\n| STATS connections = SUM(LAST_OVER_TIME(postgresql.backends))\\n\"}, \"columns\": [{\"fieldName\": \"connections\", \"columnId\": \"6543a488-b649-fe1f-43f6-13e2d771b707\", \"label\": \"Active\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"connections\", \"columnId\": \"6543a488-b649-fe1f-43f6-13e2d771b707\", \"label\": \"Active\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\", \"index\": \"139a9c09-3f64-c3ed-42a4-7e121bc90e11\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"139a9c09-3f64-c3ed-42a4-7e121bc90e11\", \"name\": \"indexpattern-datasource-layer-38224636-1d9e-16f9-aa30-0ec705b5f640\"}], \"adHocDataViews\": {\"139a9c09-3f64-c3ed-42a4-7e121bc90e11\": {\"id\": \"139a9c09-3f64-c3ed-42a4-7e121bc90e11\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"bfa246f4-0da1-7bf6-9978-fd2d164fbc9b\", \"gridData\": {\"x\": 32, \"y\": 2, \"w\": 16, \"h\": 4, \"i\": \"bfa246f4-0da1-7bf6-9978-fd2d164fbc9b\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Max Connections\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"ab54d5a7-4ad1-c0c8-10c1-ca638709c1eb\", \"layerType\": \"data\", \"metricAccessor\": \"79064bf0-378b-7f0f-3a27-14f04133c258\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.connection.max IS NOT NULL\\n| STATS max_conn = MAX(LAST_OVER_TIME(postgresql.connection.max))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"ab54d5a7-4ad1-c0c8-10c1-ca638709c1eb\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.connection.max IS NOT NULL\\n| STATS max_conn = MAX(LAST_OVER_TIME(postgresql.connection.max))\\n\"}, \"columns\": [{\"fieldName\": \"max_conn\", \"columnId\": \"79064bf0-378b-7f0f-3a27-14f04133c258\", \"label\": \"Max\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"max_conn\", \"columnId\": \"79064bf0-378b-7f0f-3a27-14f04133c258\", \"label\": \"Max\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\", \"index\": \"e5bcb74d-2658-d7b2-1b92-2d7fe39d0e53\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"e5bcb74d-2658-d7b2-1b92-2d7fe39d0e53\", \"name\": \"indexpattern-datasource-layer-ab54d5a7-4ad1-c0c8-10c1-ca638709c1eb\"}], \"adHocDataViews\": {\"e5bcb74d-2658-d7b2-1b92-2d7fe39d0e53\": {\"id\": \"e5bcb74d-2658-d7b2-1b92-2d7fe39d0e53\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"3d4aa237-9f56-6399-6e4c-b05301ba9c9d\", \"gridData\": {\"x\": 16, \"y\": 6, \"w\": 16, \"h\": 4, \"i\": \"3d4aa237-9f56-6399-6e4c-b05301ba9c9d\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Connection Utilization\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"31f4e125-92da-22c3-9026-a23610b0cd89\", \"layerType\": \"data\", \"metricAccessor\": \"82055a1d-04f8-c63a-b90d-4437bc1e2b28\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL OR postgresql.connection.max IS NOT NULL\\n| STATS backends = SUM(LAST_OVER_TIME(postgresql.backends)), max_conn = MAX(LAST_OVER_TIME(postgresql.connection.max))\\n| EVAL utilization = CASE(max_conn > 0, TO_DOUBLE(backends) / TO_DOUBLE(max_conn), 0)\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"31f4e125-92da-22c3-9026-a23610b0cd89\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL OR postgresql.connection.max IS NOT NULL\\n| STATS backends = SUM(LAST_OVER_TIME(postgresql.backends)), max_conn = MAX(LAST_OVER_TIME(postgresql.connection.max))\\n| EVAL utilization = CASE(max_conn > 0, TO_DOUBLE(backends) / TO_DOUBLE(max_conn), 0)\\n\"}, \"columns\": [{\"fieldName\": \"utilization\", \"columnId\": \"82055a1d-04f8-c63a-b90d-4437bc1e2b28\", \"label\": \"Utilization\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 1}}}}], \"allColumns\": [{\"fieldName\": \"utilization\", \"columnId\": \"82055a1d-04f8-c63a-b90d-4437bc1e2b28\", \"label\": \"Utilization\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 1}}}}], \"timeField\": \"@timestamp\", \"index\": \"b5b2512a-edd0-51b5-0421-906317fc272e\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"b5b2512a-edd0-51b5-0421-906317fc272e\", \"name\": \"indexpattern-datasource-layer-31f4e125-92da-22c3-9026-a23610b0cd89\"}], \"adHocDataViews\": {\"b5b2512a-edd0-51b5-0421-906317fc272e\": {\"id\": \"b5b2512a-edd0-51b5-0421-906317fc272e\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"3cadade9-737a-9200-b522-d04ef5c13b39\", \"gridData\": {\"x\": 32, \"y\": 6, \"w\": 16, \"h\": 4, \"i\": \"3cadade9-737a-9200-b522-d04ef5c13b39\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Databases\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"d65eb1ac-33d0-4bf5-4c46-d6826ed3959a\", \"layerType\": \"data\", \"metricAccessor\": \"66f6f840-28d0-4465-d870-ed2fb520ff18\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.count IS NOT NULL\\n| STATS db_count = MAX(postgresql.database.count)\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"d65eb1ac-33d0-4bf5-4c46-d6826ed3959a\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.count IS NOT NULL\\n| STATS db_count = MAX(postgresql.database.count)\\n\"}, \"columns\": [{\"fieldName\": \"db_count\", \"columnId\": \"66f6f840-28d0-4465-d870-ed2fb520ff18\", \"label\": \"Databases\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"db_count\", \"columnId\": \"66f6f840-28d0-4465-d870-ed2fb520ff18\", \"label\": \"Databases\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\", \"index\": \"5b211ef3-d53d-776d-806a-4d2e2cadade6\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"5b211ef3-d53d-776d-806a-4d2e2cadade6\", \"name\": \"indexpattern-datasource-layer-d65eb1ac-33d0-4bf5-4c46-d6826ed3959a\"}], \"adHocDataViews\": {\"5b211ef3-d53d-776d-806a-4d2e2cadade6\": {\"id\": \"5b211ef3-d53d-776d-806a-4d2e2cadade6\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"01c75bec-2136-c77c-7889-26fdcb6bfd26\", \"gridData\": {\"x\": 0, \"y\": 10, \"w\": 24, \"h\": 10, \"i\": \"01c75bec-2136-c77c-7889-26fdcb6bfd26\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Connection Utilization Gauge\", \"visualizationType\": \"lnsGauge\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"57347d47-2caa-ed52-76a0-602f776153a5\", \"layerType\": \"data\", \"metricAccessor\": \"ccc47c24-b67d-563d-10ae-936c6cc81fa3\", \"minAccessor\": \"46d0f1d5-79ce-2fae-4a9b-5958d97e7fa2\", \"maxAccessor\": \"870bfed3-1af3-8829-2b44-1af2c031ee62\", \"goalAccessor\": \"a516ad2b-d970-0590-ff0f-d390c05b47f0\", \"shape\": \"arc\", \"ticksPosition\": \"bands\", \"labelMajorMode\": \"auto\", \"colorMode\": \"palette\", \"palette\": {\"name\": \"custom\", \"type\": \"palette\", \"params\": {\"steps\": 3, \"name\": \"custom\", \"reverse\": false, \"rangeType\": \"percent\", \"rangeMin\": 0.0, \"rangeMax\": 1.0, \"progression\": \"fixed\", \"stops\": [{\"color\": \"#54b399\", \"stop\": 0.8}, {\"color\": \"#d6bf57\", \"stop\": 0.95}, {\"color\": \"#cc5642\", \"stop\": 1.0}], \"colorStops\": [{\"color\": \"#54b399\", \"stop\": 0.0}, {\"color\": \"#d6bf57\", \"stop\": 0.8}, {\"color\": \"#cc5642\", \"stop\": 0.95}], \"continuity\": \"above\", \"maxSteps\": 3}}}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL OR postgresql.connection.max IS NOT NULL\\n| STATS backends = SUM(LAST_OVER_TIME(postgresql.backends)), max_conn = MAX(LAST_OVER_TIME(postgresql.connection.max))\\n| EVAL utilization = CASE(max_conn > 0, TO_DOUBLE(backends) / TO_DOUBLE(max_conn), 0), min_val = 0.0, max_val = 1.0, goal_val = 0.8\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"57347d47-2caa-ed52-76a0-602f776153a5\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL OR postgresql.connection.max IS NOT NULL\\n| STATS backends = SUM(LAST_OVER_TIME(postgresql.backends)), max_conn = MAX(LAST_OVER_TIME(postgresql.connection.max))\\n| EVAL utilization = CASE(max_conn > 0, TO_DOUBLE(backends) / TO_DOUBLE(max_conn), 0), min_val = 0.0, max_val = 1.0, goal_val = 0.8\\n\"}, \"columns\": [{\"fieldName\": \"utilization\", \"columnId\": \"ccc47c24-b67d-563d-10ae-936c6cc81fa3\", \"label\": \"Utilization\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"min_val\", \"columnId\": \"46d0f1d5-79ce-2fae-4a9b-5958d97e7fa2\", \"label\": \"min_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}, {\"fieldName\": \"max_val\", \"columnId\": \"870bfed3-1af3-8829-2b44-1af2c031ee62\", \"label\": \"max_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}, {\"fieldName\": \"goal_val\", \"columnId\": \"a516ad2b-d970-0590-ff0f-d390c05b47f0\", \"label\": \"goal_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}], \"allColumns\": [{\"fieldName\": \"utilization\", \"columnId\": \"ccc47c24-b67d-563d-10ae-936c6cc81fa3\", \"label\": \"Utilization\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"min_val\", \"columnId\": \"46d0f1d5-79ce-2fae-4a9b-5958d97e7fa2\", \"label\": \"min_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}, {\"fieldName\": \"max_val\", \"columnId\": \"870bfed3-1af3-8829-2b44-1af2c031ee62\", \"label\": \"max_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}, {\"fieldName\": \"goal_val\", \"columnId\": \"a516ad2b-d970-0590-ff0f-d390c05b47f0\", \"label\": \"goal_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}], \"timeField\": \"@timestamp\", \"index\": \"7a9369b4-008d-557b-ea05-a52751ca5ff5\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"7a9369b4-008d-557b-ea05-a52751ca5ff5\", \"name\": \"indexpattern-datasource-layer-57347d47-2caa-ed52-76a0-602f776153a5\"}], \"adHocDataViews\": {\"7a9369b4-008d-557b-ea05-a52751ca5ff5\": {\"id\": \"7a9369b4-008d-557b-ea05-a52751ca5ff5\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"7ccdb9a5-7ae0-406d-17b3-1d8f89c5b2a0\", \"gridData\": {\"x\": 24, \"y\": 10, \"w\": 24, \"h\": 10, \"i\": \"7ccdb9a5-7ae0-406d-17b3-1d8f89c5b2a0\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Backends by Database\", \"visualizationType\": \"lnsPie\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"84fa4e87-e73a-948a-818b-281a1d64c997\", \"layerType\": \"data\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}, \"primaryGroups\": [\"d8d31f57-70aa-df71-5959-349a9f2dc555\"], \"metrics\": [\"46543fd6-6c22-deb4-0725-c3b8dd48f3ef\"], \"numberDisplay\": \"percent\", \"categoryDisplay\": \"default\", \"legendDisplay\": \"default\", \"legendPosition\": \"right\", \"nestedLegend\": false, \"emptySizeRatio\": 0.5}], \"shape\": \"donut\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL\\n| STATS backends = MAX(postgresql.backends) BY resource.attributes.postgresql.database.name\\n| SORT backends DESC\\n| LIMIT 10\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"84fa4e87-e73a-948a-818b-281a1d64c997\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL\\n| STATS backends = MAX(postgresql.backends) BY resource.attributes.postgresql.database.name\\n| SORT backends DESC\\n| LIMIT 10\\n\"}, \"columns\": [{\"fieldName\": \"backends\", \"columnId\": \"46543fd6-6c22-deb4-0725-c3b8dd48f3ef\", \"label\": \"backends\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"d8d31f57-70aa-df71-5959-349a9f2dc555\", \"label\": \"Database\", \"customLabel\": true}], \"allColumns\": [{\"fieldName\": \"backends\", \"columnId\": \"46543fd6-6c22-deb4-0725-c3b8dd48f3ef\", \"label\": \"backends\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"d8d31f57-70aa-df71-5959-349a9f2dc555\", \"label\": \"Database\", \"customLabel\": true}], \"timeField\": \"@timestamp\", \"index\": \"ce7b5149-f844-0c5a-0fa1-e8c0e700b9d2\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"ce7b5149-f844-0c5a-0fa1-e8c0e700b9d2\", \"name\": \"indexpattern-datasource-layer-84fa4e87-e73a-948a-818b-281a1d64c997\"}], \"adHocDataViews\": {\"ce7b5149-f844-0c5a-0fa1-e8c0e700b9d2\": {\"id\": \"ce7b5149-f844-0c5a-0fa1-e8c0e700b9d2\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"1af7e59a-844b-a37c-3bf1-13d6c8d32e1c\", \"gridData\": {\"x\": 0, \"y\": 20, \"w\": 48, \"h\": 12, \"i\": \"1af7e59a-844b-a37c-3bf1-13d6c8d32e1c\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Connections Over Time by Database\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"eb41c0f0-6647-2a3a-fc6c-59d4616356f7\", \"accessors\": [\"2f20e14e-f3eb-ac65-76a8-44bdfd03af33\"], \"layerType\": \"data\", \"seriesType\": \"area\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"area\", \"legend\": {\"isVisible\": true, \"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL\\n| STATS connections = MAX(LAST_OVER_TIME(postgresql.backends)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"eb41c0f0-6647-2a3a-fc6c-59d4616356f7\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL\\n| STATS connections = MAX(LAST_OVER_TIME(postgresql.backends)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"connections\", \"columnId\": \"2f20e14e-f3eb-ac65-76a8-44bdfd03af33\", \"label\": \"Connections\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"connections\", \"columnId\": \"2f20e14e-f3eb-ac65-76a8-44bdfd03af33\", \"label\": \"Connections\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"timeField\": \"@timestamp\", \"index\": \"4c118362-fb23-74b7-60fd-9562ed566c44\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"4c118362-fb23-74b7-60fd-9562ed566c44\", \"name\": \"indexpattern-datasource-layer-eb41c0f0-6647-2a3a-fc6c-59d4616356f7\"}], \"adHocDataViews\": {\"4c118362-fb23-74b7-60fd-9562ed566c44\": {\"id\": \"4c118362-fb23-74b7-60fd-9562ed566c44\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}]", "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"kuery\"}}" diff --git a/packages/postgresql_otel/kibana/dashboard/postgresql_otel-io-health.json b/packages/postgresql_otel/kibana/dashboard/postgresql_otel-io-health.json index 13803832cb6..0f8e4085a02 100644 --- a/packages/postgresql_otel/kibana/dashboard/postgresql_otel-io-health.json +++ b/packages/postgresql_otel/kibana/dashboard/postgresql_otel-io-health.json @@ -2,7 +2,7 @@ "attributes": { "title": "[PostgreSQL OTel] I/O Health", "description": "Buffer cache hit ratio, checkpoint duration, background writer efficiency, and buffer writes by source.", - "panelsJSON": "[{\"panelIndex\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\", \"gridData\": {\"x\": 0, \"y\": 0, \"w\": 48, \"h\": 2, \"i\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\"}, \"type\": \"links\", \"embeddableConfig\": {\"enhancements\": {}, \"attributes\": {\"layout\": \"horizontal\", \"links\": [{\"id\": \"3af4ba12-6f83-488a-bdc9-0c7216a22d73\", \"order\": 0, \"label\": \"Overview\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_3af4ba12-6f83-488a-bdc9-0c7216a22d73_dashboard\"}, {\"id\": \"457f9dcd-ccf2-13f5-ae7c-fd660d496fe1\", \"order\": 1, \"label\": \"Connections\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_457f9dcd-ccf2-13f5-ae7c-fd660d496fe1_dashboard\"}, {\"id\": \"df38fd11-17eb-2a21-12aa-c07388280dff\", \"order\": 2, \"label\": \"Workload\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_df38fd11-17eb-2a21-12aa-c07388280dff_dashboard\"}, {\"id\": \"26830f56-d6ec-6d34-6a53-840ef67339ae\", \"order\": 3, \"label\": \"Query Performance\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_26830f56-d6ec-6d34-6a53-840ef67339ae_dashboard\"}, {\"id\": \"034096ad-700e-a9a9-bff4-3d46eeaa5872\", \"order\": 4, \"label\": \"I/O Health\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_034096ad-700e-a9a9-bff4-3d46eeaa5872_dashboard\"}, {\"id\": \"e9d78396-5608-90eb-32c4-2b41057b91b6\", \"order\": 5, \"label\": \"Locks\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_e9d78396-5608-90eb-32c4-2b41057b91b6_dashboard\"}, {\"id\": \"70498c6a-23a7-aafd-b3e4-b54790c59b66\", \"order\": 6, \"label\": \"Active Queries\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_70498c6a-23a7-aafd-b3e4-b54790c59b66_dashboard\"}]}}}, {\"panelIndex\": \"ddecfbc9-dfd1-45f0-db4e-3f3d89153ed0\", \"gridData\": {\"x\": 0, \"y\": 2, \"w\": 16, \"h\": 14, \"i\": \"ddecfbc9-dfd1-45f0-db4e-3f3d89153ed0\"}, \"type\": \"visualization\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"savedVis\": {\"type\": \"markdown\", \"id\": \"\", \"title\": \"\", \"description\": \"\", \"params\": {\"fontSize\": 12, \"openLinksInNewTab\": false, \"markdown\": \"## [PostgreSQL OTel] I/O Health\\n\\nThis dashboard monitors I/O subsystem health:\\n- Buffer cache hit ratio (blks_hit vs blks_read)\\n- Checkpoint duration and count\\n- Background writer buffer writes by source\\n- Maxwritten stops (bgwriter overwhelmed)\\n\"}, \"uiState\": {}, \"data\": {\"aggs\": [], \"searchSource\": {\"query\": {\"query\": \"\", \"language\": \"kuery\"}, \"filter\": []}}}}}, {\"panelIndex\": \"023cbb3e-29cf-f995-42fa-0e7f43eadfe8\", \"gridData\": {\"x\": 16, \"y\": 2, \"w\": 16, \"h\": 4, \"i\": \"023cbb3e-29cf-f995-42fa-0e7f43eadfe8\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Buffer Hit Ratio\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"d194bb0f-3f2d-b53f-4994-a20326dd3396\", \"layerType\": \"data\", \"metricAccessor\": \"33e7b0a1-d80b-7465-0fec-5160ddaffe27\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.blks_hit IS NOT NULL OR postgresql.blks_read IS NOT NULL\\n| STATS hit = MAX(TO_DOUBLE(postgresql.blks_hit)), read = MAX(TO_DOUBLE(postgresql.blks_read))\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0.0)\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"d194bb0f-3f2d-b53f-4994-a20326dd3396\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.blks_hit IS NOT NULL OR postgresql.blks_read IS NOT NULL\\n| STATS hit = MAX(TO_DOUBLE(postgresql.blks_hit)), read = MAX(TO_DOUBLE(postgresql.blks_read))\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0.0)\\n\"}, \"columns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"33e7b0a1-d80b-7465-0fec-5160ddaffe27\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 1}}}}], \"allColumns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"33e7b0a1-d80b-7465-0fec-5160ddaffe27\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 1}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"9017e686-1c97-90d3-b962-51df606a8e58\", \"gridData\": {\"x\": 32, \"y\": 2, \"w\": 16, \"h\": 4, \"i\": \"9017e686-1c97-90d3-b962-51df606a8e58\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Bgwriter Maxwritten\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"46c82159-aab7-167b-4e1f-3f31df9eb575\", \"layerType\": \"data\", \"metricAccessor\": \"3eeeb022-8fed-e7d6-8892-c9a8008eb919\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.bgwriter.maxwritten IS NOT NULL\\n| STATS maxwritten = SUM(INCREASE(postgresql.bgwriter.maxwritten))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"46c82159-aab7-167b-4e1f-3f31df9eb575\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.bgwriter.maxwritten IS NOT NULL\\n| STATS maxwritten = SUM(INCREASE(postgresql.bgwriter.maxwritten))\\n\"}, \"columns\": [{\"fieldName\": \"maxwritten\", \"columnId\": \"3eeeb022-8fed-e7d6-8892-c9a8008eb919\", \"label\": \"Maxwritten\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"maxwritten\", \"columnId\": \"3eeeb022-8fed-e7d6-8892-c9a8008eb919\", \"label\": \"Maxwritten\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"43d73dfd-75f2-1148-1202-fbc3015e6174\", \"gridData\": {\"x\": 16, \"y\": 6, \"w\": 16, \"h\": 10, \"i\": \"43d73dfd-75f2-1148-1202-fbc3015e6174\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Buffer Hit Ratio Gauge\", \"visualizationType\": \"lnsGauge\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"d882e345-f1db-49b6-2f92-2817bff5215e\", \"layerType\": \"data\", \"metricAccessor\": \"169dc6d3-5c3e-cab6-dca9-77538be0aec9\", \"minAccessor\": \"46d0f1d5-79ce-2fae-4a9b-5958d97e7fa2\", \"maxAccessor\": \"870bfed3-1af3-8829-2b44-1af2c031ee62\", \"goalAccessor\": \"a516ad2b-d970-0590-ff0f-d390c05b47f0\", \"shape\": \"arc\", \"ticksPosition\": \"bands\", \"labelMajorMode\": \"auto\", \"colorMode\": \"palette\", \"palette\": {\"name\": \"custom\", \"type\": \"palette\", \"params\": {\"steps\": 3, \"name\": \"custom\", \"reverse\": false, \"rangeType\": \"percent\", \"rangeMin\": 0.0, \"rangeMax\": 1.0, \"progression\": \"fixed\", \"stops\": [{\"color\": \"#cc5642\", \"stop\": 0.9}, {\"color\": \"#d6bf57\", \"stop\": 0.95}, {\"color\": \"#54b399\", \"stop\": 1.0}], \"colorStops\": [{\"color\": \"#cc5642\", \"stop\": 0.0}, {\"color\": \"#d6bf57\", \"stop\": 0.9}, {\"color\": \"#54b399\", \"stop\": 0.95}], \"continuity\": \"above\", \"maxSteps\": 3}}}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.blks_hit IS NOT NULL OR postgresql.blks_read IS NOT NULL\\n| STATS hit = MAX(TO_DOUBLE(postgresql.blks_hit)), read = MAX(TO_DOUBLE(postgresql.blks_read))\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0.0), min_val = 0.0, max_val = 1.0, goal_val = 0.99\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"d882e345-f1db-49b6-2f92-2817bff5215e\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.blks_hit IS NOT NULL OR postgresql.blks_read IS NOT NULL\\n| STATS hit = MAX(TO_DOUBLE(postgresql.blks_hit)), read = MAX(TO_DOUBLE(postgresql.blks_read))\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0.0), min_val = 0.0, max_val = 1.0, goal_val = 0.99\\n\"}, \"columns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"169dc6d3-5c3e-cab6-dca9-77538be0aec9\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"min_val\", \"columnId\": \"46d0f1d5-79ce-2fae-4a9b-5958d97e7fa2\", \"label\": \"min_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}, {\"fieldName\": \"max_val\", \"columnId\": \"870bfed3-1af3-8829-2b44-1af2c031ee62\", \"label\": \"max_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}, {\"fieldName\": \"goal_val\", \"columnId\": \"a516ad2b-d970-0590-ff0f-d390c05b47f0\", \"label\": \"goal_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}], \"allColumns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"169dc6d3-5c3e-cab6-dca9-77538be0aec9\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"min_val\", \"columnId\": \"46d0f1d5-79ce-2fae-4a9b-5958d97e7fa2\", \"label\": \"min_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}, {\"fieldName\": \"max_val\", \"columnId\": \"870bfed3-1af3-8829-2b44-1af2c031ee62\", \"label\": \"max_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}, {\"fieldName\": \"goal_val\", \"columnId\": \"a516ad2b-d970-0590-ff0f-d390c05b47f0\", \"label\": \"goal_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"589417a6-22bf-5dcf-8316-98259f083600\", \"gridData\": {\"x\": 32, \"y\": 6, \"w\": 16, \"h\": 10, \"i\": \"589417a6-22bf-5dcf-8316-98259f083600\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Buffer Writes by Source\", \"visualizationType\": \"lnsPie\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"cc7f2b52-6017-e43f-6d59-0efeefa7bdfd\", \"layerType\": \"data\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}, \"primaryGroups\": [\"dd92e18b-573b-d72a-3ed3-d176fd5fc5d1\"], \"metrics\": [\"04cbe587-5fc6-492b-b1cc-1e6321de3547\"], \"numberDisplay\": \"percent\", \"categoryDisplay\": \"default\", \"legendDisplay\": \"default\", \"nestedLegend\": false, \"emptySizeRatio\": 0.5}], \"shape\": \"donut\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.bgwriter.buffers.writes IS NOT NULL\\n| STATS writes = SUM(TO_DOUBLE(postgresql.bgwriter.buffers.writes)) BY attributes.source\\n| SORT writes DESC\\n| LIMIT 10\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"cc7f2b52-6017-e43f-6d59-0efeefa7bdfd\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.bgwriter.buffers.writes IS NOT NULL\\n| STATS writes = SUM(TO_DOUBLE(postgresql.bgwriter.buffers.writes)) BY attributes.source\\n| SORT writes DESC\\n| LIMIT 10\\n\"}, \"columns\": [{\"fieldName\": \"writes\", \"columnId\": \"04cbe587-5fc6-492b-b1cc-1e6321de3547\", \"label\": \"writes\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"attributes.source\", \"columnId\": \"dd92e18b-573b-d72a-3ed3-d176fd5fc5d1\", \"label\": \"Source\", \"customLabel\": true}], \"allColumns\": [{\"fieldName\": \"writes\", \"columnId\": \"04cbe587-5fc6-492b-b1cc-1e6321de3547\", \"label\": \"writes\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"attributes.source\", \"columnId\": \"dd92e18b-573b-d72a-3ed3-d176fd5fc5d1\", \"label\": \"Source\", \"customLabel\": true}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"0ce4a3d0-10ce-18b7-eab5-5df16715b385\", \"gridData\": {\"x\": 0, \"y\": 16, \"w\": 24, \"h\": 10, \"i\": \"0ce4a3d0-10ce-18b7-eab5-5df16715b385\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Buffer Hit Ratio Over Time\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"a14666c1-2f46-d5e2-44ed-5bf063412252\", \"accessors\": [\"568451ee-a9dc-aede-876b-3327c1f67ace\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| STATS hit = SUM(RATE(postgresql.blks_hit)), read = SUM(RATE(postgresql.blks_read)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0)\\n| WHERE hit_ratio IS NOT NULL\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"a14666c1-2f46-d5e2-44ed-5bf063412252\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| STATS hit = SUM(RATE(postgresql.blks_hit)), read = SUM(RATE(postgresql.blks_read)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0)\\n| WHERE hit_ratio IS NOT NULL\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"568451ee-a9dc-aede-876b-3327c1f67ace\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"568451ee-a9dc-aede-876b-3327c1f67ace\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"c98d5d50-3fff-41a7-f323-c357feecb804\", \"gridData\": {\"x\": 24, \"y\": 16, \"w\": 24, \"h\": 10, \"i\": \"c98d5d50-3fff-41a7-f323-c357feecb804\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Checkpoint Duration Over Time\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"1585c53a-ea1f-0715-fb8e-468b8c103d6f\", \"accessors\": [\"1cf3d105-c185-c95a-063f-e0ec5976cbfd\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"82817d9a-2353-2f3b-9ccd-feca2ab30327\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.bgwriter.duration IS NOT NULL\\n| STATS duration = SUM(RATE(postgresql.bgwriter.duration)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), attributes.type\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"1585c53a-ea1f-0715-fb8e-468b8c103d6f\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.bgwriter.duration IS NOT NULL\\n| STATS duration = SUM(RATE(postgresql.bgwriter.duration)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), attributes.type\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"duration\", \"columnId\": \"1cf3d105-c185-c95a-063f-e0ec5976cbfd\", \"label\": \"Duration ms/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"attributes.type\", \"columnId\": \"82817d9a-2353-2f3b-9ccd-feca2ab30327\", \"label\": \"attributes.type\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"duration\", \"columnId\": \"1cf3d105-c185-c95a-063f-e0ec5976cbfd\", \"label\": \"Duration ms/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"attributes.type\", \"columnId\": \"82817d9a-2353-2f3b-9ccd-feca2ab30327\", \"label\": \"attributes.type\", \"customLabel\": false}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"3b61df54-4f71-e087-02ac-258cadd73ec1\", \"gridData\": {\"x\": 0, \"y\": 26, \"w\": 48, \"h\": 10, \"i\": \"3b61df54-4f71-e087-02ac-258cadd73ec1\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Buffer Writes Rate by Source\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"a581ee11-0a9f-bfcb-28f6-1ff63d1ed8cf\", \"accessors\": [\"52041c30-ea80-774e-dcd5-cc7d42bd2ffb\"], \"layerType\": \"data\", \"seriesType\": \"area\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"3755ee10-6b26-3d50-9c36-e505f5d0262c\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"area\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.bgwriter.buffers.writes IS NOT NULL\\n| STATS writes = SUM(RATE(postgresql.bgwriter.buffers.writes)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), attributes.source\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"a581ee11-0a9f-bfcb-28f6-1ff63d1ed8cf\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.bgwriter.buffers.writes IS NOT NULL\\n| STATS writes = SUM(RATE(postgresql.bgwriter.buffers.writes)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), attributes.source\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"writes\", \"columnId\": \"52041c30-ea80-774e-dcd5-cc7d42bd2ffb\", \"label\": \"Buffers/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"attributes.source\", \"columnId\": \"3755ee10-6b26-3d50-9c36-e505f5d0262c\", \"label\": \"attributes.source\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"writes\", \"columnId\": \"52041c30-ea80-774e-dcd5-cc7d42bd2ffb\", \"label\": \"Buffers/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"attributes.source\", \"columnId\": \"3755ee10-6b26-3d50-9c36-e505f5d0262c\", \"label\": \"attributes.source\", \"customLabel\": false}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}]", + "panelsJSON": "[{\"panelIndex\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\", \"gridData\": {\"x\": 0, \"y\": 0, \"w\": 48, \"h\": 2, \"i\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\"}, \"type\": \"links\", \"embeddableConfig\": {\"enhancements\": {}, \"attributes\": {\"layout\": \"horizontal\", \"links\": [{\"id\": \"3af4ba12-6f83-488a-bdc9-0c7216a22d73\", \"order\": 0, \"label\": \"Overview\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_3af4ba12-6f83-488a-bdc9-0c7216a22d73_dashboard\"}, {\"id\": \"457f9dcd-ccf2-13f5-ae7c-fd660d496fe1\", \"order\": 1, \"label\": \"Connections\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_457f9dcd-ccf2-13f5-ae7c-fd660d496fe1_dashboard\"}, {\"id\": \"df38fd11-17eb-2a21-12aa-c07388280dff\", \"order\": 2, \"label\": \"Workload\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_df38fd11-17eb-2a21-12aa-c07388280dff_dashboard\"}, {\"id\": \"26830f56-d6ec-6d34-6a53-840ef67339ae\", \"order\": 3, \"label\": \"Query Performance\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_26830f56-d6ec-6d34-6a53-840ef67339ae_dashboard\"}, {\"id\": \"034096ad-700e-a9a9-bff4-3d46eeaa5872\", \"order\": 4, \"label\": \"I/O Health\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_034096ad-700e-a9a9-bff4-3d46eeaa5872_dashboard\"}, {\"id\": \"e9d78396-5608-90eb-32c4-2b41057b91b6\", \"order\": 5, \"label\": \"Locks\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_e9d78396-5608-90eb-32c4-2b41057b91b6_dashboard\"}, {\"id\": \"70498c6a-23a7-aafd-b3e4-b54790c59b66\", \"order\": 6, \"label\": \"Active Queries\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_70498c6a-23a7-aafd-b3e4-b54790c59b66_dashboard\"}]}}}, {\"panelIndex\": \"ddecfbc9-dfd1-45f0-db4e-3f3d89153ed0\", \"gridData\": {\"x\": 0, \"y\": 2, \"w\": 16, \"h\": 14, \"i\": \"ddecfbc9-dfd1-45f0-db4e-3f3d89153ed0\"}, \"type\": \"visualization\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"savedVis\": {\"type\": \"markdown\", \"id\": \"\", \"title\": \"\", \"description\": \"\", \"params\": {\"fontSize\": 12, \"openLinksInNewTab\": false, \"markdown\": \"## [PostgreSQL OTel] I/O Health\\n\\nThis dashboard monitors I/O subsystem health:\\n- Buffer cache hit ratio (blks_hit vs blks_read)\\n- Checkpoint duration and count\\n- Background writer buffer writes by source\\n- Maxwritten stops (bgwriter overwhelmed)\\n\"}, \"uiState\": {}, \"data\": {\"aggs\": [], \"searchSource\": {\"query\": {\"query\": \"\", \"language\": \"kuery\"}, \"filter\": []}}}}}, {\"panelIndex\": \"023cbb3e-29cf-f995-42fa-0e7f43eadfe8\", \"gridData\": {\"x\": 16, \"y\": 2, \"w\": 16, \"h\": 4, \"i\": \"023cbb3e-29cf-f995-42fa-0e7f43eadfe8\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Buffer Hit Ratio\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"d194bb0f-3f2d-b53f-4994-a20326dd3396\", \"layerType\": \"data\", \"metricAccessor\": \"33e7b0a1-d80b-7465-0fec-5160ddaffe27\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.blks_hit IS NOT NULL OR postgresql.blks_read IS NOT NULL\\n| STATS hit = MAX(TO_DOUBLE(postgresql.blks_hit)), read = MAX(TO_DOUBLE(postgresql.blks_read))\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0.0)\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"d194bb0f-3f2d-b53f-4994-a20326dd3396\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.blks_hit IS NOT NULL OR postgresql.blks_read IS NOT NULL\\n| STATS hit = MAX(TO_DOUBLE(postgresql.blks_hit)), read = MAX(TO_DOUBLE(postgresql.blks_read))\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0.0)\\n\"}, \"columns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"33e7b0a1-d80b-7465-0fec-5160ddaffe27\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 1}}}}], \"allColumns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"33e7b0a1-d80b-7465-0fec-5160ddaffe27\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 1}}}}], \"timeField\": \"@timestamp\", \"index\": \"bcf4bdb8-a22e-af84-5d19-96db6ef3c429\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"bcf4bdb8-a22e-af84-5d19-96db6ef3c429\", \"name\": \"indexpattern-datasource-layer-d194bb0f-3f2d-b53f-4994-a20326dd3396\"}], \"adHocDataViews\": {\"bcf4bdb8-a22e-af84-5d19-96db6ef3c429\": {\"id\": \"bcf4bdb8-a22e-af84-5d19-96db6ef3c429\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"9017e686-1c97-90d3-b962-51df606a8e58\", \"gridData\": {\"x\": 32, \"y\": 2, \"w\": 16, \"h\": 4, \"i\": \"9017e686-1c97-90d3-b962-51df606a8e58\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Bgwriter Maxwritten\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"46c82159-aab7-167b-4e1f-3f31df9eb575\", \"layerType\": \"data\", \"metricAccessor\": \"3eeeb022-8fed-e7d6-8892-c9a8008eb919\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.bgwriter.maxwritten IS NOT NULL\\n| STATS maxwritten = SUM(INCREASE(postgresql.bgwriter.maxwritten))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"46c82159-aab7-167b-4e1f-3f31df9eb575\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.bgwriter.maxwritten IS NOT NULL\\n| STATS maxwritten = SUM(INCREASE(postgresql.bgwriter.maxwritten))\\n\"}, \"columns\": [{\"fieldName\": \"maxwritten\", \"columnId\": \"3eeeb022-8fed-e7d6-8892-c9a8008eb919\", \"label\": \"Maxwritten\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"maxwritten\", \"columnId\": \"3eeeb022-8fed-e7d6-8892-c9a8008eb919\", \"label\": \"Maxwritten\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\", \"index\": \"02e6fc29-ad56-2de5-0418-609d0efbd67c\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"02e6fc29-ad56-2de5-0418-609d0efbd67c\", \"name\": \"indexpattern-datasource-layer-46c82159-aab7-167b-4e1f-3f31df9eb575\"}], \"adHocDataViews\": {\"02e6fc29-ad56-2de5-0418-609d0efbd67c\": {\"id\": \"02e6fc29-ad56-2de5-0418-609d0efbd67c\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"43d73dfd-75f2-1148-1202-fbc3015e6174\", \"gridData\": {\"x\": 16, \"y\": 6, \"w\": 16, \"h\": 10, \"i\": \"43d73dfd-75f2-1148-1202-fbc3015e6174\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Buffer Hit Ratio Gauge\", \"visualizationType\": \"lnsGauge\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"d882e345-f1db-49b6-2f92-2817bff5215e\", \"layerType\": \"data\", \"metricAccessor\": \"169dc6d3-5c3e-cab6-dca9-77538be0aec9\", \"minAccessor\": \"46d0f1d5-79ce-2fae-4a9b-5958d97e7fa2\", \"maxAccessor\": \"870bfed3-1af3-8829-2b44-1af2c031ee62\", \"goalAccessor\": \"a516ad2b-d970-0590-ff0f-d390c05b47f0\", \"shape\": \"arc\", \"ticksPosition\": \"bands\", \"labelMajorMode\": \"auto\", \"colorMode\": \"palette\", \"palette\": {\"name\": \"custom\", \"type\": \"palette\", \"params\": {\"steps\": 3, \"name\": \"custom\", \"reverse\": false, \"rangeType\": \"percent\", \"rangeMin\": 0.0, \"rangeMax\": 1.0, \"progression\": \"fixed\", \"stops\": [{\"color\": \"#cc5642\", \"stop\": 0.9}, {\"color\": \"#d6bf57\", \"stop\": 0.95}, {\"color\": \"#54b399\", \"stop\": 1.0}], \"colorStops\": [{\"color\": \"#cc5642\", \"stop\": 0.0}, {\"color\": \"#d6bf57\", \"stop\": 0.9}, {\"color\": \"#54b399\", \"stop\": 0.95}], \"continuity\": \"above\", \"maxSteps\": 3}}}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.blks_hit IS NOT NULL OR postgresql.blks_read IS NOT NULL\\n| STATS hit = MAX(TO_DOUBLE(postgresql.blks_hit)), read = MAX(TO_DOUBLE(postgresql.blks_read))\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0.0), min_val = 0.0, max_val = 1.0, goal_val = 0.99\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"d882e345-f1db-49b6-2f92-2817bff5215e\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.blks_hit IS NOT NULL OR postgresql.blks_read IS NOT NULL\\n| STATS hit = MAX(TO_DOUBLE(postgresql.blks_hit)), read = MAX(TO_DOUBLE(postgresql.blks_read))\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0.0), min_val = 0.0, max_val = 1.0, goal_val = 0.99\\n\"}, \"columns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"169dc6d3-5c3e-cab6-dca9-77538be0aec9\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"min_val\", \"columnId\": \"46d0f1d5-79ce-2fae-4a9b-5958d97e7fa2\", \"label\": \"min_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}, {\"fieldName\": \"max_val\", \"columnId\": \"870bfed3-1af3-8829-2b44-1af2c031ee62\", \"label\": \"max_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}, {\"fieldName\": \"goal_val\", \"columnId\": \"a516ad2b-d970-0590-ff0f-d390c05b47f0\", \"label\": \"goal_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}], \"allColumns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"169dc6d3-5c3e-cab6-dca9-77538be0aec9\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"min_val\", \"columnId\": \"46d0f1d5-79ce-2fae-4a9b-5958d97e7fa2\", \"label\": \"min_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}, {\"fieldName\": \"max_val\", \"columnId\": \"870bfed3-1af3-8829-2b44-1af2c031ee62\", \"label\": \"max_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}, {\"fieldName\": \"goal_val\", \"columnId\": \"a516ad2b-d970-0590-ff0f-d390c05b47f0\", \"label\": \"goal_val\", \"customLabel\": false, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true}], \"timeField\": \"@timestamp\", \"index\": \"7dcbce0d-73ed-3ab1-5c33-8f193a1d64ea\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"7dcbce0d-73ed-3ab1-5c33-8f193a1d64ea\", \"name\": \"indexpattern-datasource-layer-d882e345-f1db-49b6-2f92-2817bff5215e\"}], \"adHocDataViews\": {\"7dcbce0d-73ed-3ab1-5c33-8f193a1d64ea\": {\"id\": \"7dcbce0d-73ed-3ab1-5c33-8f193a1d64ea\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"589417a6-22bf-5dcf-8316-98259f083600\", \"gridData\": {\"x\": 32, \"y\": 6, \"w\": 16, \"h\": 10, \"i\": \"589417a6-22bf-5dcf-8316-98259f083600\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Buffer Writes by Source\", \"visualizationType\": \"lnsPie\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"cc7f2b52-6017-e43f-6d59-0efeefa7bdfd\", \"layerType\": \"data\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}, \"primaryGroups\": [\"dd92e18b-573b-d72a-3ed3-d176fd5fc5d1\"], \"metrics\": [\"04cbe587-5fc6-492b-b1cc-1e6321de3547\"], \"numberDisplay\": \"percent\", \"categoryDisplay\": \"default\", \"legendDisplay\": \"default\", \"legendPosition\": \"right\", \"nestedLegend\": false, \"emptySizeRatio\": 0.5}], \"shape\": \"donut\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.bgwriter.buffers.writes IS NOT NULL\\n| STATS writes = SUM(TO_DOUBLE(postgresql.bgwriter.buffers.writes)) BY attributes.source\\n| SORT writes DESC\\n| LIMIT 10\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"cc7f2b52-6017-e43f-6d59-0efeefa7bdfd\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.bgwriter.buffers.writes IS NOT NULL\\n| STATS writes = SUM(TO_DOUBLE(postgresql.bgwriter.buffers.writes)) BY attributes.source\\n| SORT writes DESC\\n| LIMIT 10\\n\"}, \"columns\": [{\"fieldName\": \"writes\", \"columnId\": \"04cbe587-5fc6-492b-b1cc-1e6321de3547\", \"label\": \"writes\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"attributes.source\", \"columnId\": \"dd92e18b-573b-d72a-3ed3-d176fd5fc5d1\", \"label\": \"Source\", \"customLabel\": true}], \"allColumns\": [{\"fieldName\": \"writes\", \"columnId\": \"04cbe587-5fc6-492b-b1cc-1e6321de3547\", \"label\": \"writes\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"attributes.source\", \"columnId\": \"dd92e18b-573b-d72a-3ed3-d176fd5fc5d1\", \"label\": \"Source\", \"customLabel\": true}], \"timeField\": \"@timestamp\", \"index\": \"13702afe-57c5-f6fb-8d3f-0f11e2e1e750\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"13702afe-57c5-f6fb-8d3f-0f11e2e1e750\", \"name\": \"indexpattern-datasource-layer-cc7f2b52-6017-e43f-6d59-0efeefa7bdfd\"}], \"adHocDataViews\": {\"13702afe-57c5-f6fb-8d3f-0f11e2e1e750\": {\"id\": \"13702afe-57c5-f6fb-8d3f-0f11e2e1e750\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"0ce4a3d0-10ce-18b7-eab5-5df16715b385\", \"gridData\": {\"x\": 0, \"y\": 16, \"w\": 24, \"h\": 10, \"i\": \"0ce4a3d0-10ce-18b7-eab5-5df16715b385\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Buffer Hit Ratio Over Time\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"a14666c1-2f46-d5e2-44ed-5bf063412252\", \"accessors\": [\"568451ee-a9dc-aede-876b-3327c1f67ace\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| STATS hit = SUM(RATE(postgresql.blks_hit)), read = SUM(RATE(postgresql.blks_read)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0)\\n| WHERE hit_ratio IS NOT NULL\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"a14666c1-2f46-d5e2-44ed-5bf063412252\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| STATS hit = SUM(RATE(postgresql.blks_hit)), read = SUM(RATE(postgresql.blks_read)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0)\\n| WHERE hit_ratio IS NOT NULL\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"568451ee-a9dc-aede-876b-3327c1f67ace\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"568451ee-a9dc-aede-876b-3327c1f67ace\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"timeField\": \"@timestamp\", \"index\": \"62d406b6-e9e7-0fcc-5513-9f5d852190cb\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"62d406b6-e9e7-0fcc-5513-9f5d852190cb\", \"name\": \"indexpattern-datasource-layer-a14666c1-2f46-d5e2-44ed-5bf063412252\"}], \"adHocDataViews\": {\"62d406b6-e9e7-0fcc-5513-9f5d852190cb\": {\"id\": \"62d406b6-e9e7-0fcc-5513-9f5d852190cb\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"c98d5d50-3fff-41a7-f323-c357feecb804\", \"gridData\": {\"x\": 24, \"y\": 16, \"w\": 24, \"h\": 10, \"i\": \"c98d5d50-3fff-41a7-f323-c357feecb804\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Checkpoint Duration Over Time\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"1585c53a-ea1f-0715-fb8e-468b8c103d6f\", \"accessors\": [\"1cf3d105-c185-c95a-063f-e0ec5976cbfd\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"82817d9a-2353-2f3b-9ccd-feca2ab30327\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.bgwriter.duration IS NOT NULL\\n| STATS duration = SUM(RATE(postgresql.bgwriter.duration)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), attributes.type\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"1585c53a-ea1f-0715-fb8e-468b8c103d6f\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.bgwriter.duration IS NOT NULL\\n| STATS duration = SUM(RATE(postgresql.bgwriter.duration)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), attributes.type\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"duration\", \"columnId\": \"1cf3d105-c185-c95a-063f-e0ec5976cbfd\", \"label\": \"Duration ms/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"attributes.type\", \"columnId\": \"82817d9a-2353-2f3b-9ccd-feca2ab30327\", \"label\": \"attributes.type\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"duration\", \"columnId\": \"1cf3d105-c185-c95a-063f-e0ec5976cbfd\", \"label\": \"Duration ms/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"attributes.type\", \"columnId\": \"82817d9a-2353-2f3b-9ccd-feca2ab30327\", \"label\": \"attributes.type\", \"customLabel\": false}], \"timeField\": \"@timestamp\", \"index\": \"373b2b2d-56bb-baee-f536-dbe494b9eb18\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"373b2b2d-56bb-baee-f536-dbe494b9eb18\", \"name\": \"indexpattern-datasource-layer-1585c53a-ea1f-0715-fb8e-468b8c103d6f\"}], \"adHocDataViews\": {\"373b2b2d-56bb-baee-f536-dbe494b9eb18\": {\"id\": \"373b2b2d-56bb-baee-f536-dbe494b9eb18\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"3b61df54-4f71-e087-02ac-258cadd73ec1\", \"gridData\": {\"x\": 0, \"y\": 26, \"w\": 48, \"h\": 10, \"i\": \"3b61df54-4f71-e087-02ac-258cadd73ec1\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Buffer Writes Rate by Source\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"a581ee11-0a9f-bfcb-28f6-1ff63d1ed8cf\", \"accessors\": [\"52041c30-ea80-774e-dcd5-cc7d42bd2ffb\"], \"layerType\": \"data\", \"seriesType\": \"area\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"3755ee10-6b26-3d50-9c36-e505f5d0262c\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"area\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.bgwriter.buffers.writes IS NOT NULL\\n| STATS writes = SUM(RATE(postgresql.bgwriter.buffers.writes)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), attributes.source\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"a581ee11-0a9f-bfcb-28f6-1ff63d1ed8cf\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.bgwriter.buffers.writes IS NOT NULL\\n| STATS writes = SUM(RATE(postgresql.bgwriter.buffers.writes)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), attributes.source\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"writes\", \"columnId\": \"52041c30-ea80-774e-dcd5-cc7d42bd2ffb\", \"label\": \"Buffers/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"attributes.source\", \"columnId\": \"3755ee10-6b26-3d50-9c36-e505f5d0262c\", \"label\": \"attributes.source\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"writes\", \"columnId\": \"52041c30-ea80-774e-dcd5-cc7d42bd2ffb\", \"label\": \"Buffers/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"attributes.source\", \"columnId\": \"3755ee10-6b26-3d50-9c36-e505f5d0262c\", \"label\": \"attributes.source\", \"customLabel\": false}], \"timeField\": \"@timestamp\", \"index\": \"12c1ed5a-99ee-55f1-a82e-f436d74897d5\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"12c1ed5a-99ee-55f1-a82e-f436d74897d5\", \"name\": \"indexpattern-datasource-layer-a581ee11-0a9f-bfcb-28f6-1ff63d1ed8cf\"}], \"adHocDataViews\": {\"12c1ed5a-99ee-55f1-a82e-f436d74897d5\": {\"id\": \"12c1ed5a-99ee-55f1-a82e-f436d74897d5\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}]", "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"kuery\"}}" diff --git a/packages/postgresql_otel/kibana/dashboard/postgresql_otel-locks.json b/packages/postgresql_otel/kibana/dashboard/postgresql_otel-locks.json index 4ad6c279905..0e977302b07 100644 --- a/packages/postgresql_otel/kibana/dashboard/postgresql_otel-locks.json +++ b/packages/postgresql_otel/kibana/dashboard/postgresql_otel-locks.json @@ -2,7 +2,7 @@ "attributes": { "title": "[PostgreSQL OTel] Locks", "description": "Database locks by type, mode, and relation. High exclusive lock counts indicate contention.", - "panelsJSON": "[{\"panelIndex\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\", \"gridData\": {\"x\": 0, \"y\": 0, \"w\": 48, \"h\": 2, \"i\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\"}, \"type\": \"links\", \"embeddableConfig\": {\"enhancements\": {}, \"attributes\": {\"layout\": \"horizontal\", \"links\": [{\"id\": \"3af4ba12-6f83-488a-bdc9-0c7216a22d73\", \"order\": 0, \"label\": \"Overview\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_3af4ba12-6f83-488a-bdc9-0c7216a22d73_dashboard\"}, {\"id\": \"457f9dcd-ccf2-13f5-ae7c-fd660d496fe1\", \"order\": 1, \"label\": \"Connections\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_457f9dcd-ccf2-13f5-ae7c-fd660d496fe1_dashboard\"}, {\"id\": \"df38fd11-17eb-2a21-12aa-c07388280dff\", \"order\": 2, \"label\": \"Workload\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_df38fd11-17eb-2a21-12aa-c07388280dff_dashboard\"}, {\"id\": \"26830f56-d6ec-6d34-6a53-840ef67339ae\", \"order\": 3, \"label\": \"Query Performance\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_26830f56-d6ec-6d34-6a53-840ef67339ae_dashboard\"}, {\"id\": \"034096ad-700e-a9a9-bff4-3d46eeaa5872\", \"order\": 4, \"label\": \"I/O Health\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_034096ad-700e-a9a9-bff4-3d46eeaa5872_dashboard\"}, {\"id\": \"e9d78396-5608-90eb-32c4-2b41057b91b6\", \"order\": 5, \"label\": \"Locks\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_e9d78396-5608-90eb-32c4-2b41057b91b6_dashboard\"}, {\"id\": \"70498c6a-23a7-aafd-b3e4-b54790c59b66\", \"order\": 6, \"label\": \"Active Queries\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_70498c6a-23a7-aafd-b3e4-b54790c59b66_dashboard\"}]}}}, {\"panelIndex\": \"ddecfbc9-dfd1-45f0-db4e-3f3d89153ed0\", \"gridData\": {\"x\": 0, \"y\": 2, \"w\": 16, \"h\": 14, \"i\": \"ddecfbc9-dfd1-45f0-db4e-3f3d89153ed0\"}, \"type\": \"visualization\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"savedVis\": {\"type\": \"markdown\", \"id\": \"\", \"title\": \"\", \"description\": \"\", \"params\": {\"fontSize\": 12, \"openLinksInNewTab\": false, \"markdown\": \"## [PostgreSQL OTel] Locks\\n\\nThis dashboard monitors lock contention:\\n- Locks by type (relation, transactionid, etc.)\\n- Locks by mode (AccessShareLock to AccessExclusiveLock)\\n- Locks by relation\\n- High exclusive lock counts indicate contention\\n\"}, \"uiState\": {}, \"data\": {\"aggs\": [], \"searchSource\": {\"query\": {\"query\": \"\", \"language\": \"kuery\"}, \"filter\": []}}}}}, {\"panelIndex\": \"99224e1b-f43c-db1f-4288-9bcbbb21c693\", \"gridData\": {\"x\": 16, \"y\": 2, \"w\": 32, \"h\": 4, \"i\": \"99224e1b-f43c-db1f-4288-9bcbbb21c693\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Total Locks\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"5d84c386-8d50-0835-0ea7-b2d9af623ceb\", \"layerType\": \"data\", \"metricAccessor\": \"24b523fc-c51b-11a3-1097-a31f65336a0e\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.locks IS NOT NULL\\n| STATS total_locks = SUM(postgresql.database.locks)\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"5d84c386-8d50-0835-0ea7-b2d9af623ceb\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.locks IS NOT NULL\\n| STATS total_locks = SUM(postgresql.database.locks)\\n\"}, \"columns\": [{\"fieldName\": \"total_locks\", \"columnId\": \"24b523fc-c51b-11a3-1097-a31f65336a0e\", \"label\": \"Total Locks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"total_locks\", \"columnId\": \"24b523fc-c51b-11a3-1097-a31f65336a0e\", \"label\": \"Total Locks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"f91cf0bb-9cf4-b946-3cbe-d43ea574c89b\", \"gridData\": {\"x\": 16, \"y\": 6, \"w\": 16, \"h\": 10, \"i\": \"f91cf0bb-9cf4-b946-3cbe-d43ea574c89b\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Locks by Type\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"9f39df79-6d9f-df24-83de-bd6621315b59\", \"accessors\": [\"bbafc4ca-0124-ad36-55ef-0710249674e8\"], \"layerType\": \"data\", \"seriesType\": \"bar_unstacked\", \"xAccessor\": \"69adff70-add0-c814-f0e6-1a4d436ff7f2\", \"position\": \"top\", \"showGridlines\": false, \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"bar_unstacked\", \"legend\": {\"isVisible\": true, \"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.locks IS NOT NULL\\n| STATS locks = SUM(postgresql.database.locks) BY attributes.lock_type\\n| SORT locks DESC\\n| LIMIT 10\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"9f39df79-6d9f-df24-83de-bd6621315b59\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.locks IS NOT NULL\\n| STATS locks = SUM(postgresql.database.locks) BY attributes.lock_type\\n| SORT locks DESC\\n| LIMIT 10\\n\"}, \"columns\": [{\"fieldName\": \"locks\", \"columnId\": \"bbafc4ca-0124-ad36-55ef-0710249674e8\", \"label\": \"Locks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"attributes.lock_type\", \"columnId\": \"69adff70-add0-c814-f0e6-1a4d436ff7f2\", \"label\": \"Lock Type\", \"customLabel\": true}], \"allColumns\": [{\"fieldName\": \"locks\", \"columnId\": \"bbafc4ca-0124-ad36-55ef-0710249674e8\", \"label\": \"Locks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"attributes.lock_type\", \"columnId\": \"69adff70-add0-c814-f0e6-1a4d436ff7f2\", \"label\": \"Lock Type\", \"customLabel\": true}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"97e142be-4165-0dba-c6d9-2886c2c17b0c\", \"gridData\": {\"x\": 32, \"y\": 6, \"w\": 16, \"h\": 10, \"i\": \"97e142be-4165-0dba-c6d9-2886c2c17b0c\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Locks by Mode\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"3eb042b2-e540-1556-692b-18987849691b\", \"accessors\": [\"bbafc4ca-0124-ad36-55ef-0710249674e8\"], \"layerType\": \"data\", \"seriesType\": \"bar_unstacked\", \"xAccessor\": \"068386af-6a14-d554-e1f9-8e8cc49318ab\", \"position\": \"top\", \"showGridlines\": false, \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"bar_unstacked\", \"legend\": {\"isVisible\": true, \"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.locks IS NOT NULL\\n| STATS locks = SUM(postgresql.database.locks) BY attributes.mode\\n| SORT locks DESC\\n| LIMIT 10\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"3eb042b2-e540-1556-692b-18987849691b\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.locks IS NOT NULL\\n| STATS locks = SUM(postgresql.database.locks) BY attributes.mode\\n| SORT locks DESC\\n| LIMIT 10\\n\"}, \"columns\": [{\"fieldName\": \"locks\", \"columnId\": \"bbafc4ca-0124-ad36-55ef-0710249674e8\", \"label\": \"Locks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"attributes.mode\", \"columnId\": \"068386af-6a14-d554-e1f9-8e8cc49318ab\", \"label\": \"Mode\", \"customLabel\": true}], \"allColumns\": [{\"fieldName\": \"locks\", \"columnId\": \"bbafc4ca-0124-ad36-55ef-0710249674e8\", \"label\": \"Locks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"attributes.mode\", \"columnId\": \"068386af-6a14-d554-e1f9-8e8cc49318ab\", \"label\": \"Mode\", \"customLabel\": true}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"234d01f0-7b30-89dd-7fad-77f6619b2b97\", \"gridData\": {\"x\": 0, \"y\": 16, \"w\": 48, \"h\": 12, \"i\": \"234d01f0-7b30-89dd-7fad-77f6619b2b97\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Locks Over Time by Type\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"7a4c768a-e0ab-e736-ca06-1745254f45de\", \"accessors\": [\"bbafc4ca-0124-ad36-55ef-0710249674e8\"], \"layerType\": \"data\", \"seriesType\": \"area\", \"xAccessor\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"a60c2f80-f9bd-35c1-9383-710aa5946c5f\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"area\", \"legend\": {\"isVisible\": true, \"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.locks IS NOT NULL\\n| STATS locks = SUM(postgresql.database.locks) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), attributes.lock_type\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"7a4c768a-e0ab-e736-ca06-1745254f45de\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.locks IS NOT NULL\\n| STATS locks = SUM(postgresql.database.locks) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), attributes.lock_type\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"locks\", \"columnId\": \"bbafc4ca-0124-ad36-55ef-0710249674e8\", \"label\": \"Locks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"label\": \"time_bucket\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"attributes.lock_type\", \"columnId\": \"a60c2f80-f9bd-35c1-9383-710aa5946c5f\", \"label\": \"attributes.lock_type\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"locks\", \"columnId\": \"bbafc4ca-0124-ad36-55ef-0710249674e8\", \"label\": \"Locks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"label\": \"time_bucket\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"attributes.lock_type\", \"columnId\": \"a60c2f80-f9bd-35c1-9383-710aa5946c5f\", \"label\": \"attributes.lock_type\", \"customLabel\": false}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"a6bbad5f-3ce9-1fbb-7386-46d452b8a057\", \"gridData\": {\"x\": 0, \"y\": 28, \"w\": 48, \"h\": 15, \"i\": \"a6bbad5f-3ce9-1fbb-7386-46d452b8a057\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Top Relations by Lock Count\", \"visualizationType\": \"lnsDatatable\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"columns\": [{\"columnId\": \"8538d8b8-944c-2e7e-ba09-d57cd3091780\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"5703160c-9600-39fa-9d4b-be6ad064ed51\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"0c450f24-627d-16e9-143c-2c178fa53a0f\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"cea0b6b3-93b7-ba5c-a580-4da9a605d0d9\", \"isTransposed\": false, \"isMetric\": true}], \"layerId\": \"2be544f6-f9e9-6dc7-fddb-8bab044d3c94\", \"layerType\": \"data\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.locks IS NOT NULL\\n| STATS locks = SUM(postgresql.database.locks) BY attributes.relation, attributes.lock_type, attributes.mode\\n| SORT locks DESC\\n| LIMIT 50\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"2be544f6-f9e9-6dc7-fddb-8bab044d3c94\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.locks IS NOT NULL\\n| STATS locks = SUM(postgresql.database.locks) BY attributes.relation, attributes.lock_type, attributes.mode\\n| SORT locks DESC\\n| LIMIT 50\\n\"}, \"columns\": [{\"fieldName\": \"attributes.relation\", \"columnId\": \"8538d8b8-944c-2e7e-ba09-d57cd3091780\", \"label\": \"Relation\", \"customLabel\": true}, {\"fieldName\": \"attributes.lock_type\", \"columnId\": \"5703160c-9600-39fa-9d4b-be6ad064ed51\", \"label\": \"Lock Type\", \"customLabel\": true}, {\"fieldName\": \"attributes.mode\", \"columnId\": \"0c450f24-627d-16e9-143c-2c178fa53a0f\", \"label\": \"Mode\", \"customLabel\": true}, {\"fieldName\": \"locks\", \"columnId\": \"cea0b6b3-93b7-ba5c-a580-4da9a605d0d9\", \"label\": \"Locks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}], \"allColumns\": [{\"fieldName\": \"attributes.relation\", \"columnId\": \"8538d8b8-944c-2e7e-ba09-d57cd3091780\", \"label\": \"Relation\", \"customLabel\": true}, {\"fieldName\": \"attributes.lock_type\", \"columnId\": \"5703160c-9600-39fa-9d4b-be6ad064ed51\", \"label\": \"Lock Type\", \"customLabel\": true}, {\"fieldName\": \"attributes.mode\", \"columnId\": \"0c450f24-627d-16e9-143c-2c178fa53a0f\", \"label\": \"Mode\", \"customLabel\": true}, {\"fieldName\": \"locks\", \"columnId\": \"cea0b6b3-93b7-ba5c-a580-4da9a605d0d9\", \"label\": \"Locks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}]", + "panelsJSON": "[{\"panelIndex\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\", \"gridData\": {\"x\": 0, \"y\": 0, \"w\": 48, \"h\": 2, \"i\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\"}, \"type\": \"links\", \"embeddableConfig\": {\"enhancements\": {}, \"attributes\": {\"layout\": \"horizontal\", \"links\": [{\"id\": \"3af4ba12-6f83-488a-bdc9-0c7216a22d73\", \"order\": 0, \"label\": \"Overview\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_3af4ba12-6f83-488a-bdc9-0c7216a22d73_dashboard\"}, {\"id\": \"457f9dcd-ccf2-13f5-ae7c-fd660d496fe1\", \"order\": 1, \"label\": \"Connections\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_457f9dcd-ccf2-13f5-ae7c-fd660d496fe1_dashboard\"}, {\"id\": \"df38fd11-17eb-2a21-12aa-c07388280dff\", \"order\": 2, \"label\": \"Workload\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_df38fd11-17eb-2a21-12aa-c07388280dff_dashboard\"}, {\"id\": \"26830f56-d6ec-6d34-6a53-840ef67339ae\", \"order\": 3, \"label\": \"Query Performance\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_26830f56-d6ec-6d34-6a53-840ef67339ae_dashboard\"}, {\"id\": \"034096ad-700e-a9a9-bff4-3d46eeaa5872\", \"order\": 4, \"label\": \"I/O Health\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_034096ad-700e-a9a9-bff4-3d46eeaa5872_dashboard\"}, {\"id\": \"e9d78396-5608-90eb-32c4-2b41057b91b6\", \"order\": 5, \"label\": \"Locks\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_e9d78396-5608-90eb-32c4-2b41057b91b6_dashboard\"}, {\"id\": \"70498c6a-23a7-aafd-b3e4-b54790c59b66\", \"order\": 6, \"label\": \"Active Queries\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_70498c6a-23a7-aafd-b3e4-b54790c59b66_dashboard\"}]}}}, {\"panelIndex\": \"ddecfbc9-dfd1-45f0-db4e-3f3d89153ed0\", \"gridData\": {\"x\": 0, \"y\": 2, \"w\": 16, \"h\": 14, \"i\": \"ddecfbc9-dfd1-45f0-db4e-3f3d89153ed0\"}, \"type\": \"visualization\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"savedVis\": {\"type\": \"markdown\", \"id\": \"\", \"title\": \"\", \"description\": \"\", \"params\": {\"fontSize\": 12, \"openLinksInNewTab\": false, \"markdown\": \"## [PostgreSQL OTel] Locks\\n\\nThis dashboard monitors lock contention:\\n- Locks by type (relation, transactionid, etc.)\\n- Locks by mode (AccessShareLock to AccessExclusiveLock)\\n- Locks by relation\\n- High exclusive lock counts indicate contention\\n\"}, \"uiState\": {}, \"data\": {\"aggs\": [], \"searchSource\": {\"query\": {\"query\": \"\", \"language\": \"kuery\"}, \"filter\": []}}}}}, {\"panelIndex\": \"99224e1b-f43c-db1f-4288-9bcbbb21c693\", \"gridData\": {\"x\": 16, \"y\": 2, \"w\": 32, \"h\": 4, \"i\": \"99224e1b-f43c-db1f-4288-9bcbbb21c693\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Total Locks\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"5d84c386-8d50-0835-0ea7-b2d9af623ceb\", \"layerType\": \"data\", \"metricAccessor\": \"24b523fc-c51b-11a3-1097-a31f65336a0e\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.locks IS NOT NULL\\n| STATS total_locks = SUM(postgresql.database.locks)\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"5d84c386-8d50-0835-0ea7-b2d9af623ceb\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.locks IS NOT NULL\\n| STATS total_locks = SUM(postgresql.database.locks)\\n\"}, \"columns\": [{\"fieldName\": \"total_locks\", \"columnId\": \"24b523fc-c51b-11a3-1097-a31f65336a0e\", \"label\": \"Total Locks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"total_locks\", \"columnId\": \"24b523fc-c51b-11a3-1097-a31f65336a0e\", \"label\": \"Total Locks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\", \"index\": \"91d027d5-4cfc-1766-2edb-dbeb949f5d86\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"91d027d5-4cfc-1766-2edb-dbeb949f5d86\", \"name\": \"indexpattern-datasource-layer-5d84c386-8d50-0835-0ea7-b2d9af623ceb\"}], \"adHocDataViews\": {\"91d027d5-4cfc-1766-2edb-dbeb949f5d86\": {\"id\": \"91d027d5-4cfc-1766-2edb-dbeb949f5d86\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"f91cf0bb-9cf4-b946-3cbe-d43ea574c89b\", \"gridData\": {\"x\": 16, \"y\": 6, \"w\": 16, \"h\": 10, \"i\": \"f91cf0bb-9cf4-b946-3cbe-d43ea574c89b\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Locks by Type\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"9f39df79-6d9f-df24-83de-bd6621315b59\", \"accessors\": [\"bbafc4ca-0124-ad36-55ef-0710249674e8\"], \"layerType\": \"data\", \"seriesType\": \"bar_unstacked\", \"xAccessor\": \"69adff70-add0-c814-f0e6-1a4d436ff7f2\", \"position\": \"top\", \"showGridlines\": false, \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"bar_unstacked\", \"legend\": {\"isVisible\": true, \"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.locks IS NOT NULL\\n| STATS locks = SUM(postgresql.database.locks) BY attributes.lock_type\\n| SORT locks DESC\\n| LIMIT 10\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"9f39df79-6d9f-df24-83de-bd6621315b59\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.locks IS NOT NULL\\n| STATS locks = SUM(postgresql.database.locks) BY attributes.lock_type\\n| SORT locks DESC\\n| LIMIT 10\\n\"}, \"columns\": [{\"fieldName\": \"locks\", \"columnId\": \"bbafc4ca-0124-ad36-55ef-0710249674e8\", \"label\": \"Locks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"attributes.lock_type\", \"columnId\": \"69adff70-add0-c814-f0e6-1a4d436ff7f2\", \"label\": \"Lock Type\", \"customLabel\": true}], \"allColumns\": [{\"fieldName\": \"locks\", \"columnId\": \"bbafc4ca-0124-ad36-55ef-0710249674e8\", \"label\": \"Locks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"attributes.lock_type\", \"columnId\": \"69adff70-add0-c814-f0e6-1a4d436ff7f2\", \"label\": \"Lock Type\", \"customLabel\": true}], \"timeField\": \"@timestamp\", \"index\": \"f73bbcb2-22fc-1e32-efbd-ae5bca425024\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"f73bbcb2-22fc-1e32-efbd-ae5bca425024\", \"name\": \"indexpattern-datasource-layer-9f39df79-6d9f-df24-83de-bd6621315b59\"}], \"adHocDataViews\": {\"f73bbcb2-22fc-1e32-efbd-ae5bca425024\": {\"id\": \"f73bbcb2-22fc-1e32-efbd-ae5bca425024\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"97e142be-4165-0dba-c6d9-2886c2c17b0c\", \"gridData\": {\"x\": 32, \"y\": 6, \"w\": 16, \"h\": 10, \"i\": \"97e142be-4165-0dba-c6d9-2886c2c17b0c\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Locks by Mode\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"3eb042b2-e540-1556-692b-18987849691b\", \"accessors\": [\"bbafc4ca-0124-ad36-55ef-0710249674e8\"], \"layerType\": \"data\", \"seriesType\": \"bar_unstacked\", \"xAccessor\": \"068386af-6a14-d554-e1f9-8e8cc49318ab\", \"position\": \"top\", \"showGridlines\": false, \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"bar_unstacked\", \"legend\": {\"isVisible\": true, \"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.locks IS NOT NULL\\n| STATS locks = SUM(postgresql.database.locks) BY attributes.mode\\n| SORT locks DESC\\n| LIMIT 10\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"3eb042b2-e540-1556-692b-18987849691b\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.locks IS NOT NULL\\n| STATS locks = SUM(postgresql.database.locks) BY attributes.mode\\n| SORT locks DESC\\n| LIMIT 10\\n\"}, \"columns\": [{\"fieldName\": \"locks\", \"columnId\": \"bbafc4ca-0124-ad36-55ef-0710249674e8\", \"label\": \"Locks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"attributes.mode\", \"columnId\": \"068386af-6a14-d554-e1f9-8e8cc49318ab\", \"label\": \"Mode\", \"customLabel\": true}], \"allColumns\": [{\"fieldName\": \"locks\", \"columnId\": \"bbafc4ca-0124-ad36-55ef-0710249674e8\", \"label\": \"Locks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"attributes.mode\", \"columnId\": \"068386af-6a14-d554-e1f9-8e8cc49318ab\", \"label\": \"Mode\", \"customLabel\": true}], \"timeField\": \"@timestamp\", \"index\": \"46256e22-e1e9-8022-cea1-acfbb6d0800a\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"46256e22-e1e9-8022-cea1-acfbb6d0800a\", \"name\": \"indexpattern-datasource-layer-3eb042b2-e540-1556-692b-18987849691b\"}], \"adHocDataViews\": {\"46256e22-e1e9-8022-cea1-acfbb6d0800a\": {\"id\": \"46256e22-e1e9-8022-cea1-acfbb6d0800a\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"234d01f0-7b30-89dd-7fad-77f6619b2b97\", \"gridData\": {\"x\": 0, \"y\": 16, \"w\": 48, \"h\": 12, \"i\": \"234d01f0-7b30-89dd-7fad-77f6619b2b97\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Locks Over Time by Type\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"7a4c768a-e0ab-e736-ca06-1745254f45de\", \"accessors\": [\"bbafc4ca-0124-ad36-55ef-0710249674e8\"], \"layerType\": \"data\", \"seriesType\": \"area\", \"xAccessor\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"a60c2f80-f9bd-35c1-9383-710aa5946c5f\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"area\", \"legend\": {\"isVisible\": true, \"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.locks IS NOT NULL\\n| STATS locks = SUM(postgresql.database.locks) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), attributes.lock_type\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"7a4c768a-e0ab-e736-ca06-1745254f45de\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.locks IS NOT NULL\\n| STATS locks = SUM(postgresql.database.locks) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), attributes.lock_type\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"locks\", \"columnId\": \"bbafc4ca-0124-ad36-55ef-0710249674e8\", \"label\": \"Locks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"label\": \"time_bucket\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"attributes.lock_type\", \"columnId\": \"a60c2f80-f9bd-35c1-9383-710aa5946c5f\", \"label\": \"attributes.lock_type\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"locks\", \"columnId\": \"bbafc4ca-0124-ad36-55ef-0710249674e8\", \"label\": \"Locks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"label\": \"time_bucket\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"attributes.lock_type\", \"columnId\": \"a60c2f80-f9bd-35c1-9383-710aa5946c5f\", \"label\": \"attributes.lock_type\", \"customLabel\": false}], \"timeField\": \"@timestamp\", \"index\": \"1fbf8571-c6f5-4b9f-c915-955c83e1fb59\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"1fbf8571-c6f5-4b9f-c915-955c83e1fb59\", \"name\": \"indexpattern-datasource-layer-7a4c768a-e0ab-e736-ca06-1745254f45de\"}], \"adHocDataViews\": {\"1fbf8571-c6f5-4b9f-c915-955c83e1fb59\": {\"id\": \"1fbf8571-c6f5-4b9f-c915-955c83e1fb59\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"a6bbad5f-3ce9-1fbb-7386-46d452b8a057\", \"gridData\": {\"x\": 0, \"y\": 28, \"w\": 48, \"h\": 15, \"i\": \"a6bbad5f-3ce9-1fbb-7386-46d452b8a057\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Top Relations by Lock Count\", \"visualizationType\": \"lnsDatatable\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"columns\": [{\"columnId\": \"8538d8b8-944c-2e7e-ba09-d57cd3091780\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"5703160c-9600-39fa-9d4b-be6ad064ed51\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"0c450f24-627d-16e9-143c-2c178fa53a0f\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"cea0b6b3-93b7-ba5c-a580-4da9a605d0d9\", \"isTransposed\": false, \"isMetric\": true}], \"layerId\": \"2be544f6-f9e9-6dc7-fddb-8bab044d3c94\", \"layerType\": \"data\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.locks IS NOT NULL\\n| STATS locks = SUM(postgresql.database.locks) BY attributes.relation, attributes.lock_type, attributes.mode\\n| SORT locks DESC\\n| LIMIT 50\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"2be544f6-f9e9-6dc7-fddb-8bab044d3c94\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.database.locks IS NOT NULL\\n| STATS locks = SUM(postgresql.database.locks) BY attributes.relation, attributes.lock_type, attributes.mode\\n| SORT locks DESC\\n| LIMIT 50\\n\"}, \"columns\": [{\"fieldName\": \"attributes.relation\", \"columnId\": \"8538d8b8-944c-2e7e-ba09-d57cd3091780\", \"label\": \"Relation\", \"customLabel\": true}, {\"fieldName\": \"attributes.lock_type\", \"columnId\": \"5703160c-9600-39fa-9d4b-be6ad064ed51\", \"label\": \"Lock Type\", \"customLabel\": true}, {\"fieldName\": \"attributes.mode\", \"columnId\": \"0c450f24-627d-16e9-143c-2c178fa53a0f\", \"label\": \"Mode\", \"customLabel\": true}, {\"fieldName\": \"locks\", \"columnId\": \"cea0b6b3-93b7-ba5c-a580-4da9a605d0d9\", \"label\": \"Locks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}], \"allColumns\": [{\"fieldName\": \"attributes.relation\", \"columnId\": \"8538d8b8-944c-2e7e-ba09-d57cd3091780\", \"label\": \"Relation\", \"customLabel\": true}, {\"fieldName\": \"attributes.lock_type\", \"columnId\": \"5703160c-9600-39fa-9d4b-be6ad064ed51\", \"label\": \"Lock Type\", \"customLabel\": true}, {\"fieldName\": \"attributes.mode\", \"columnId\": \"0c450f24-627d-16e9-143c-2c178fa53a0f\", \"label\": \"Mode\", \"customLabel\": true}, {\"fieldName\": \"locks\", \"columnId\": \"cea0b6b3-93b7-ba5c-a580-4da9a605d0d9\", \"label\": \"Locks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}], \"timeField\": \"@timestamp\", \"index\": \"d1bc61f8-aa9c-6113-b47d-9e5dd4e73ca1\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"d1bc61f8-aa9c-6113-b47d-9e5dd4e73ca1\", \"name\": \"indexpattern-datasource-layer-2be544f6-f9e9-6dc7-fddb-8bab044d3c94\"}], \"adHocDataViews\": {\"d1bc61f8-aa9c-6113-b47d-9e5dd4e73ca1\": {\"id\": \"d1bc61f8-aa9c-6113-b47d-9e5dd4e73ca1\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}]", "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"kuery\"}}" diff --git a/packages/postgresql_otel/kibana/dashboard/postgresql_otel-overview.json b/packages/postgresql_otel/kibana/dashboard/postgresql_otel-overview.json index 6f4fcb1a38d..25ef502a34b 100644 --- a/packages/postgresql_otel/kibana/dashboard/postgresql_otel-overview.json +++ b/packages/postgresql_otel/kibana/dashboard/postgresql_otel-overview.json @@ -2,7 +2,7 @@ "attributes": { "title": "[PostgreSQL OTel] Overview", "description": "Overview of PostgreSQL health and golden signals - connection capacity, transaction throughput, errors, buffer cache efficiency, and capacity.", - "panelsJSON": "[{\"panelIndex\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\", \"gridData\": {\"x\": 0, \"y\": 0, \"w\": 48, \"h\": 2, \"i\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\"}, \"type\": \"links\", \"embeddableConfig\": {\"enhancements\": {}, \"attributes\": {\"layout\": \"horizontal\", \"links\": [{\"id\": \"3af4ba12-6f83-488a-bdc9-0c7216a22d73\", \"order\": 0, \"label\": \"Overview\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_3af4ba12-6f83-488a-bdc9-0c7216a22d73_dashboard\"}, {\"id\": \"457f9dcd-ccf2-13f5-ae7c-fd660d496fe1\", \"order\": 1, \"label\": \"Connections\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_457f9dcd-ccf2-13f5-ae7c-fd660d496fe1_dashboard\"}, {\"id\": \"df38fd11-17eb-2a21-12aa-c07388280dff\", \"order\": 2, \"label\": \"Workload\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_df38fd11-17eb-2a21-12aa-c07388280dff_dashboard\"}, {\"id\": \"26830f56-d6ec-6d34-6a53-840ef67339ae\", \"order\": 3, \"label\": \"Query Performance\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_26830f56-d6ec-6d34-6a53-840ef67339ae_dashboard\"}, {\"id\": \"034096ad-700e-a9a9-bff4-3d46eeaa5872\", \"order\": 4, \"label\": \"I/O Health\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_034096ad-700e-a9a9-bff4-3d46eeaa5872_dashboard\"}, {\"id\": \"e9d78396-5608-90eb-32c4-2b41057b91b6\", \"order\": 5, \"label\": \"Locks\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_e9d78396-5608-90eb-32c4-2b41057b91b6_dashboard\"}, {\"id\": \"70498c6a-23a7-aafd-b3e4-b54790c59b66\", \"order\": 6, \"label\": \"Active Queries\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_70498c6a-23a7-aafd-b3e4-b54790c59b66_dashboard\"}]}}}, {\"panelIndex\": \"fc69666b-014e-4167-d063-22478c958b29\", \"gridData\": {\"x\": 0, \"y\": 2, \"w\": 16, \"h\": 8, \"i\": \"fc69666b-014e-4167-d063-22478c958b29\"}, \"type\": \"visualization\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"savedVis\": {\"type\": \"markdown\", \"id\": \"\", \"title\": \"\", \"description\": \"\", \"params\": {\"fontSize\": 12, \"openLinksInNewTab\": false, \"markdown\": \"## [PostgreSQL OTel] Overview\\n\\nThis dashboard provides an overview of PostgreSQL health and golden signals:\\n- Connection capacity and utilization\\n- Transaction throughput (commits vs rollbacks)\\n- Error rates (deadlocks, rollbacks)\\n- Buffer cache hit ratio\\n- Checkpoint and background writer health\\n- Database size and capacity\\n\"}, \"uiState\": {}, \"data\": {\"aggs\": [], \"searchSource\": {\"query\": {\"query\": \"\", \"language\": \"kuery\"}, \"filter\": []}}}}}, {\"panelIndex\": \"531b5df3-5822-80ca-87c7-18a755781b47\", \"gridData\": {\"x\": 16, \"y\": 2, \"w\": 8, \"h\": 4, \"i\": \"531b5df3-5822-80ca-87c7-18a755781b47\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Active Connections\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"67f279a3-9f31-d488-0a73-4371a58ee20a\", \"layerType\": \"data\", \"metricAccessor\": \"333b03ee-0f81-633a-41c3-110ff83a21fe\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL\\n| STATS connections = SUM(LAST_OVER_TIME(postgresql.backends))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"67f279a3-9f31-d488-0a73-4371a58ee20a\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL\\n| STATS connections = SUM(LAST_OVER_TIME(postgresql.backends))\\n\"}, \"columns\": [{\"fieldName\": \"connections\", \"columnId\": \"333b03ee-0f81-633a-41c3-110ff83a21fe\", \"label\": \"Connections\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"connections\", \"columnId\": \"333b03ee-0f81-633a-41c3-110ff83a21fe\", \"label\": \"Connections\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"f980e016-1df9-8b21-0916-c400428fe8a1\", \"gridData\": {\"x\": 24, \"y\": 2, \"w\": 8, \"h\": 4, \"i\": \"f980e016-1df9-8b21-0916-c400428fe8a1\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Max Connections\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"ab54d5a7-4ad1-c0c8-10c1-ca638709c1eb\", \"layerType\": \"data\", \"metricAccessor\": \"79064bf0-378b-7f0f-3a27-14f04133c258\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.connection.max IS NOT NULL\\n| STATS max_conn = MAX(LAST_OVER_TIME(postgresql.connection.max))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"ab54d5a7-4ad1-c0c8-10c1-ca638709c1eb\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.connection.max IS NOT NULL\\n| STATS max_conn = MAX(LAST_OVER_TIME(postgresql.connection.max))\\n\"}, \"columns\": [{\"fieldName\": \"max_conn\", \"columnId\": \"79064bf0-378b-7f0f-3a27-14f04133c258\", \"label\": \"Max\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"max_conn\", \"columnId\": \"79064bf0-378b-7f0f-3a27-14f04133c258\", \"label\": \"Max\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"0931cfe7-1fb3-d334-acd7-1bae51cd9d18\", \"gridData\": {\"x\": 32, \"y\": 2, \"w\": 8, \"h\": 4, \"i\": \"0931cfe7-1fb3-d334-acd7-1bae51cd9d18\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Deadlocks\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"e414949c-4a84-9266-acd9-02a432816c22\", \"layerType\": \"data\", \"metricAccessor\": \"f8b63708-a7ba-0f8f-0b5b-024ae8fe4735\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.deadlocks IS NOT NULL\\n| STATS deadlocks = SUM(INCREASE(postgresql.deadlocks))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"e414949c-4a84-9266-acd9-02a432816c22\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.deadlocks IS NOT NULL\\n| STATS deadlocks = SUM(INCREASE(postgresql.deadlocks))\\n\"}, \"columns\": [{\"fieldName\": \"deadlocks\", \"columnId\": \"f8b63708-a7ba-0f8f-0b5b-024ae8fe4735\", \"label\": \"Deadlocks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"deadlocks\", \"columnId\": \"f8b63708-a7ba-0f8f-0b5b-024ae8fe4735\", \"label\": \"Deadlocks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"2b817063-95b6-aa7d-f701-e6704df04016\", \"gridData\": {\"x\": 40, \"y\": 2, \"w\": 8, \"h\": 4, \"i\": \"2b817063-95b6-aa7d-f701-e6704df04016\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Temp Files\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"73e94787-1769-763c-f935-ade79670e913\", \"layerType\": \"data\", \"metricAccessor\": \"a9d6feb0-0567-6bfe-2200-d50fe0259221\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp_files IS NOT NULL\\n| STATS temp_files = SUM(INCREASE(postgresql.temp_files))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"73e94787-1769-763c-f935-ade79670e913\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp_files IS NOT NULL\\n| STATS temp_files = SUM(INCREASE(postgresql.temp_files))\\n\"}, \"columns\": [{\"fieldName\": \"temp_files\", \"columnId\": \"a9d6feb0-0567-6bfe-2200-d50fe0259221\", \"label\": \"Temp Files\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"temp_files\", \"columnId\": \"a9d6feb0-0567-6bfe-2200-d50fe0259221\", \"label\": \"Temp Files\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"1859ee22-5218-f045-5d97-664bb9ddf888\", \"gridData\": {\"x\": 16, \"y\": 6, \"w\": 16, \"h\": 4, \"i\": \"1859ee22-5218-f045-5d97-664bb9ddf888\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Buffer Hit Ratio\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"d194bb0f-3f2d-b53f-4994-a20326dd3396\", \"layerType\": \"data\", \"metricAccessor\": \"33e7b0a1-d80b-7465-0fec-5160ddaffe27\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.blks_hit IS NOT NULL OR postgresql.blks_read IS NOT NULL\\n| STATS hit = MAX(TO_DOUBLE(postgresql.blks_hit)), read = MAX(TO_DOUBLE(postgresql.blks_read))\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0.0)\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"d194bb0f-3f2d-b53f-4994-a20326dd3396\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.blks_hit IS NOT NULL OR postgresql.blks_read IS NOT NULL\\n| STATS hit = MAX(TO_DOUBLE(postgresql.blks_hit)), read = MAX(TO_DOUBLE(postgresql.blks_read))\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0.0)\\n\"}, \"columns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"33e7b0a1-d80b-7465-0fec-5160ddaffe27\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 1}}}}], \"allColumns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"33e7b0a1-d80b-7465-0fec-5160ddaffe27\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 1}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"98a13f6b-d8c7-b07d-f683-e1b9150b71eb\", \"gridData\": {\"x\": 32, \"y\": 6, \"w\": 16, \"h\": 4, \"i\": \"98a13f6b-d8c7-b07d-f683-e1b9150b71eb\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Bgwriter Maxwritten\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"46c82159-aab7-167b-4e1f-3f31df9eb575\", \"layerType\": \"data\", \"metricAccessor\": \"3eeeb022-8fed-e7d6-8892-c9a8008eb919\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.bgwriter.maxwritten IS NOT NULL\\n| STATS maxwritten = SUM(INCREASE(postgresql.bgwriter.maxwritten))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"46c82159-aab7-167b-4e1f-3f31df9eb575\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.bgwriter.maxwritten IS NOT NULL\\n| STATS maxwritten = SUM(INCREASE(postgresql.bgwriter.maxwritten))\\n\"}, \"columns\": [{\"fieldName\": \"maxwritten\", \"columnId\": \"3eeeb022-8fed-e7d6-8892-c9a8008eb919\", \"label\": \"Maxwritten\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"maxwritten\", \"columnId\": \"3eeeb022-8fed-e7d6-8892-c9a8008eb919\", \"label\": \"Maxwritten\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"c418e9a4-1e83-947e-3651-bc6734eb6135\", \"gridData\": {\"x\": 0, \"y\": 10, \"w\": 48, \"h\": 15, \"i\": \"c418e9a4-1e83-947e-3651-bc6734eb6135\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Database Health Summary\", \"visualizationType\": \"lnsDatatable\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"columns\": [{\"columnId\": \"51e681e6-78fa-47f5-18ea-a83a64757d24\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"91533c2d-da3d-e04e-f57f-2ab6f8f4efb8\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"7d8e003b-a8d3-2cce-28e5-7f13af863de2\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"73aa82a8-8873-ac59-afa1-b55f8c8f1449\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"d3a66e4c-50cd-02e7-b624-6095dd418664\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"4cb562ef-18f3-9b72-1529-cbb3f4dffd3b\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"86ea92b9-0596-4b62-9ff3-a2e7218a6b83\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"1573df81-3751-3986-2013-880ac8a50e13\", \"isTransposed\": false, \"isMetric\": true}], \"layerId\": \"17000239-ac58-2e7f-15ba-77ce28d2ec59\", \"layerType\": \"data\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| STATS connections = MAX(LAST_OVER_TIME(postgresql.backends)), commits = SUM(RATE(postgresql.commits)), rollbacks = SUM(RATE(postgresql.rollbacks)), deadlocks = SUM(INCREASE(postgresql.deadlocks)), blks_hit = SUM(RATE(postgresql.blks_hit)), blks_read = SUM(RATE(postgresql.blks_read)), temp_files = SUM(INCREASE(postgresql.temp_files)), db_size = MAX(LAST_OVER_TIME(postgresql.db_size)) BY resource.attributes.postgresql.database.name\\n| EVAL rollback_pct = CASE(commits + rollbacks > 0, rollbacks / (commits + rollbacks) * 100.0, 0.0), hit_ratio = CASE(blks_hit + blks_read > 0, blks_hit / (blks_hit + blks_read), 0.0)\\n| KEEP resource.attributes.postgresql.database.name, connections, commits, rollback_pct, deadlocks, hit_ratio, temp_files, db_size\\n| SORT connections DESC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"17000239-ac58-2e7f-15ba-77ce28d2ec59\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| STATS connections = MAX(LAST_OVER_TIME(postgresql.backends)), commits = SUM(RATE(postgresql.commits)), rollbacks = SUM(RATE(postgresql.rollbacks)), deadlocks = SUM(INCREASE(postgresql.deadlocks)), blks_hit = SUM(RATE(postgresql.blks_hit)), blks_read = SUM(RATE(postgresql.blks_read)), temp_files = SUM(INCREASE(postgresql.temp_files)), db_size = MAX(LAST_OVER_TIME(postgresql.db_size)) BY resource.attributes.postgresql.database.name\\n| EVAL rollback_pct = CASE(commits + rollbacks > 0, rollbacks / (commits + rollbacks) * 100.0, 0.0), hit_ratio = CASE(blks_hit + blks_read > 0, blks_hit / (blks_hit + blks_read), 0.0)\\n| KEEP resource.attributes.postgresql.database.name, connections, commits, rollback_pct, deadlocks, hit_ratio, temp_files, db_size\\n| SORT connections DESC\\n\"}, \"columns\": [{\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"51e681e6-78fa-47f5-18ea-a83a64757d24\", \"label\": \"Database\", \"customLabel\": true}, {\"fieldName\": \"connections\", \"columnId\": \"91533c2d-da3d-e04e-f57f-2ab6f8f4efb8\", \"label\": \"Connections\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"commits\", \"columnId\": \"7d8e003b-a8d3-2cce-28e5-7f13af863de2\", \"label\": \"Commits/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rollback_pct\", \"columnId\": \"73aa82a8-8873-ac59-afa1-b55f8c8f1449\", \"label\": \"Rollback %\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"deadlocks\", \"columnId\": \"d3a66e4c-50cd-02e7-b624-6095dd418664\", \"label\": \"Deadlocks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"hit_ratio\", \"columnId\": \"4cb562ef-18f3-9b72-1529-cbb3f4dffd3b\", \"label\": \"Buffer Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 1}}}}, {\"fieldName\": \"temp_files\", \"columnId\": \"86ea92b9-0596-4b62-9ff3-a2e7218a6b83\", \"label\": \"Temp Files\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"db_size\", \"columnId\": \"1573df81-3751-3986-2013-880ac8a50e13\", \"label\": \"DB Size\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"bytes\", \"params\": {\"decimals\": 1}}}}], \"allColumns\": [{\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"51e681e6-78fa-47f5-18ea-a83a64757d24\", \"label\": \"Database\", \"customLabel\": true}, {\"fieldName\": \"connections\", \"columnId\": \"91533c2d-da3d-e04e-f57f-2ab6f8f4efb8\", \"label\": \"Connections\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"commits\", \"columnId\": \"7d8e003b-a8d3-2cce-28e5-7f13af863de2\", \"label\": \"Commits/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rollback_pct\", \"columnId\": \"73aa82a8-8873-ac59-afa1-b55f8c8f1449\", \"label\": \"Rollback %\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"deadlocks\", \"columnId\": \"d3a66e4c-50cd-02e7-b624-6095dd418664\", \"label\": \"Deadlocks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"hit_ratio\", \"columnId\": \"4cb562ef-18f3-9b72-1529-cbb3f4dffd3b\", \"label\": \"Buffer Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 1}}}}, {\"fieldName\": \"temp_files\", \"columnId\": \"86ea92b9-0596-4b62-9ff3-a2e7218a6b83\", \"label\": \"Temp Files\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"db_size\", \"columnId\": \"1573df81-3751-3986-2013-880ac8a50e13\", \"label\": \"DB Size\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"bytes\", \"params\": {\"decimals\": 1}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"13cb5982-fb55-5b46-0479-6a2d4796c4b6\", \"gridData\": {\"x\": 0, \"y\": 25, \"w\": 24, \"h\": 10, \"i\": \"13cb5982-fb55-5b46-0479-6a2d4796c4b6\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Connections Over Time\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"0a837d50-0647-0639-e8bb-4a1026484ffb\", \"accessors\": [\"2f20e14e-f3eb-ac65-76a8-44bdfd03af33\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL\\n| STATS connections = MAX(LAST_OVER_TIME(postgresql.backends)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"0a837d50-0647-0639-e8bb-4a1026484ffb\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL\\n| STATS connections = MAX(LAST_OVER_TIME(postgresql.backends)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"connections\", \"columnId\": \"2f20e14e-f3eb-ac65-76a8-44bdfd03af33\", \"label\": \"Connections\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"connections\", \"columnId\": \"2f20e14e-f3eb-ac65-76a8-44bdfd03af33\", \"label\": \"Connections\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"36cb948b-1917-5f5f-9b2b-cd1a5c83ae30\", \"gridData\": {\"x\": 24, \"y\": 25, \"w\": 24, \"h\": 10, \"i\": \"36cb948b-1917-5f5f-9b2b-cd1a5c83ae30\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Buffer Hit Ratio Over Time\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"a14666c1-2f46-d5e2-44ed-5bf063412252\", \"accessors\": [\"568451ee-a9dc-aede-876b-3327c1f67ace\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| STATS hit = SUM(RATE(postgresql.blks_hit)), read = SUM(RATE(postgresql.blks_read)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0)\\n| WHERE hit_ratio IS NOT NULL\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"a14666c1-2f46-d5e2-44ed-5bf063412252\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| STATS hit = SUM(RATE(postgresql.blks_hit)), read = SUM(RATE(postgresql.blks_read)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0)\\n| WHERE hit_ratio IS NOT NULL\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"568451ee-a9dc-aede-876b-3327c1f67ace\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"568451ee-a9dc-aede-876b-3327c1f67ace\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"1800dc62-42af-49b2-0205-8b6b5cabf1e5\", \"gridData\": {\"x\": 0, \"y\": 35, \"w\": 24, \"h\": 10, \"i\": \"1800dc62-42af-49b2-0205-8b6b5cabf1e5\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Transaction Rate (Commits vs Rollbacks)\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"27f5209d-6bf3-5624-a42f-040c90d823a4\", \"accessors\": [\"0ed9407a-a969-abb0-98c0-4e05f907dfbb\"], \"layerType\": \"data\", \"seriesType\": \"area\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"ea5d114a-d680-0107-62cf-37ad42883bde\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"area\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| FORK ( WHERE postgresql.commits IS NOT NULL | STATS rate = SUM(RATE(postgresql.commits)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend) | EVAL tx_type = \\\"commits\\\" ) ( WHERE postgresql.rollbacks IS NOT NULL | STATS rate = SUM(RATE(postgresql.rollbacks)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend) | EVAL tx_type = \\\"rollbacks\\\" )\\n| STATS rate = SUM(rate) BY time_bucket, tx_type\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"27f5209d-6bf3-5624-a42f-040c90d823a4\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| FORK ( WHERE postgresql.commits IS NOT NULL | STATS rate = SUM(RATE(postgresql.commits)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend) | EVAL tx_type = \\\"commits\\\" ) ( WHERE postgresql.rollbacks IS NOT NULL | STATS rate = SUM(RATE(postgresql.rollbacks)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend) | EVAL tx_type = \\\"rollbacks\\\" )\\n| STATS rate = SUM(rate) BY time_bucket, tx_type\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"rate\", \"columnId\": \"0ed9407a-a969-abb0-98c0-4e05f907dfbb\", \"label\": \"Transactions/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"tx_type\", \"columnId\": \"ea5d114a-d680-0107-62cf-37ad42883bde\", \"label\": \"tx_type\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"rate\", \"columnId\": \"0ed9407a-a969-abb0-98c0-4e05f907dfbb\", \"label\": \"Transactions/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"tx_type\", \"columnId\": \"ea5d114a-d680-0107-62cf-37ad42883bde\", \"label\": \"tx_type\", \"customLabel\": false}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"4ee27137-2f4c-6012-3c08-f1f261e62b4c\", \"gridData\": {\"x\": 24, \"y\": 35, \"w\": 24, \"h\": 10, \"i\": \"4ee27137-2f4c-6012-3c08-f1f261e62b4c\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Deadlocks Over Time\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"6b595b9d-a118-4a0b-53df-2ae50120a434\", \"accessors\": [\"f8aeb4bb-fdbd-07c9-7782-8732201e8a50\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.deadlocks IS NOT NULL\\n| STATS deadlock_rate = SUM(RATE(postgresql.deadlocks)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"6b595b9d-a118-4a0b-53df-2ae50120a434\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.deadlocks IS NOT NULL\\n| STATS deadlock_rate = SUM(RATE(postgresql.deadlocks)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"deadlock_rate\", \"columnId\": \"f8aeb4bb-fdbd-07c9-7782-8732201e8a50\", \"label\": \"Deadlocks/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"deadlock_rate\", \"columnId\": \"f8aeb4bb-fdbd-07c9-7782-8732201e8a50\", \"label\": \"Deadlocks/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"2a657d0b-8923-ab40-413f-c7aac99fcafe\", \"gridData\": {\"x\": 0, \"y\": 45, \"w\": 24, \"h\": 10, \"i\": \"2a657d0b-8923-ab40-413f-c7aac99fcafe\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Database Size by Database\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"55184005-e04e-dd29-1e9b-ddfd8c00417a\", \"accessors\": [\"98ba93c8-5cb6-d0c0-95a0-915098c635ba\"], \"layerType\": \"data\", \"seriesType\": \"bar_unstacked\", \"xAccessor\": \"d8d31f57-70aa-df71-5959-349a9f2dc555\", \"position\": \"top\", \"showGridlines\": false, \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"bar_unstacked\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.db_size IS NOT NULL\\n| STATS db_size = MAX(postgresql.db_size) BY resource.attributes.postgresql.database.name\\n| SORT db_size DESC\\n| LIMIT 10\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"55184005-e04e-dd29-1e9b-ddfd8c00417a\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.db_size IS NOT NULL\\n| STATS db_size = MAX(postgresql.db_size) BY resource.attributes.postgresql.database.name\\n| SORT db_size DESC\\n| LIMIT 10\\n\"}, \"columns\": [{\"fieldName\": \"db_size\", \"columnId\": \"98ba93c8-5cb6-d0c0-95a0-915098c635ba\", \"label\": \"Size\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"bytes\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"d8d31f57-70aa-df71-5959-349a9f2dc555\", \"label\": \"Database\", \"customLabel\": true}], \"allColumns\": [{\"fieldName\": \"db_size\", \"columnId\": \"98ba93c8-5cb6-d0c0-95a0-915098c635ba\", \"label\": \"Size\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"bytes\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"d8d31f57-70aa-df71-5959-349a9f2dc555\", \"label\": \"Database\", \"customLabel\": true}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"4a68d0ac-182e-5da8-3088-757b2ccc94df\", \"gridData\": {\"x\": 24, \"y\": 45, \"w\": 24, \"h\": 10, \"i\": \"4a68d0ac-182e-5da8-3088-757b2ccc94df\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Temp Files and I/O Over Time\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"630a05f5-4a4d-58ae-1d41-02569457eee4\", \"accessors\": [\"aa53803a-2d49-d3d9-29e7-05496ca768c9\", \"8b773010-80e7-4dfc-108c-8365417d8158\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp_files IS NOT NULL OR postgresql.temp.io IS NOT NULL\\n| STATS temp_files = SUM(RATE(postgresql.temp_files)), temp_io = SUM(RATE(postgresql.temp.io)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend)\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"630a05f5-4a4d-58ae-1d41-02569457eee4\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp_files IS NOT NULL OR postgresql.temp.io IS NOT NULL\\n| STATS temp_files = SUM(RATE(postgresql.temp_files)), temp_io = SUM(RATE(postgresql.temp.io)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend)\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"temp_files\", \"columnId\": \"aa53803a-2d49-d3d9-29e7-05496ca768c9\", \"label\": \"Temp Files/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"temp_io\", \"columnId\": \"8b773010-80e7-4dfc-108c-8365417d8158\", \"label\": \"Temp I/O bytes/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"bytes\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}], \"allColumns\": [{\"fieldName\": \"temp_files\", \"columnId\": \"aa53803a-2d49-d3d9-29e7-05496ca768c9\", \"label\": \"Temp Files/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"temp_io\", \"columnId\": \"8b773010-80e7-4dfc-108c-8365417d8158\", \"label\": \"Temp I/O bytes/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"bytes\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}]", + "panelsJSON": "[{\"panelIndex\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\", \"gridData\": {\"x\": 0, \"y\": 0, \"w\": 48, \"h\": 2, \"i\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\"}, \"type\": \"links\", \"embeddableConfig\": {\"enhancements\": {}, \"attributes\": {\"layout\": \"horizontal\", \"links\": [{\"id\": \"3af4ba12-6f83-488a-bdc9-0c7216a22d73\", \"order\": 0, \"label\": \"Overview\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_3af4ba12-6f83-488a-bdc9-0c7216a22d73_dashboard\"}, {\"id\": \"457f9dcd-ccf2-13f5-ae7c-fd660d496fe1\", \"order\": 1, \"label\": \"Connections\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_457f9dcd-ccf2-13f5-ae7c-fd660d496fe1_dashboard\"}, {\"id\": \"df38fd11-17eb-2a21-12aa-c07388280dff\", \"order\": 2, \"label\": \"Workload\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_df38fd11-17eb-2a21-12aa-c07388280dff_dashboard\"}, {\"id\": \"26830f56-d6ec-6d34-6a53-840ef67339ae\", \"order\": 3, \"label\": \"Query Performance\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_26830f56-d6ec-6d34-6a53-840ef67339ae_dashboard\"}, {\"id\": \"034096ad-700e-a9a9-bff4-3d46eeaa5872\", \"order\": 4, \"label\": \"I/O Health\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_034096ad-700e-a9a9-bff4-3d46eeaa5872_dashboard\"}, {\"id\": \"e9d78396-5608-90eb-32c4-2b41057b91b6\", \"order\": 5, \"label\": \"Locks\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_e9d78396-5608-90eb-32c4-2b41057b91b6_dashboard\"}, {\"id\": \"70498c6a-23a7-aafd-b3e4-b54790c59b66\", \"order\": 6, \"label\": \"Active Queries\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_70498c6a-23a7-aafd-b3e4-b54790c59b66_dashboard\"}]}}}, {\"panelIndex\": \"fc69666b-014e-4167-d063-22478c958b29\", \"gridData\": {\"x\": 0, \"y\": 2, \"w\": 16, \"h\": 8, \"i\": \"fc69666b-014e-4167-d063-22478c958b29\"}, \"type\": \"visualization\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"savedVis\": {\"type\": \"markdown\", \"id\": \"\", \"title\": \"\", \"description\": \"\", \"params\": {\"fontSize\": 12, \"openLinksInNewTab\": false, \"markdown\": \"## [PostgreSQL OTel] Overview\\n\\nThis dashboard provides an overview of PostgreSQL health and golden signals:\\n- Connection capacity and utilization\\n- Transaction throughput (commits vs rollbacks)\\n- Error rates (deadlocks, rollbacks)\\n- Buffer cache hit ratio\\n- Checkpoint and background writer health\\n- Database size and capacity\\n\"}, \"uiState\": {}, \"data\": {\"aggs\": [], \"searchSource\": {\"query\": {\"query\": \"\", \"language\": \"kuery\"}, \"filter\": []}}}}}, {\"panelIndex\": \"531b5df3-5822-80ca-87c7-18a755781b47\", \"gridData\": {\"x\": 16, \"y\": 2, \"w\": 8, \"h\": 4, \"i\": \"531b5df3-5822-80ca-87c7-18a755781b47\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Active Connections\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"67f279a3-9f31-d488-0a73-4371a58ee20a\", \"layerType\": \"data\", \"metricAccessor\": \"333b03ee-0f81-633a-41c3-110ff83a21fe\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL\\n| STATS connections = SUM(LAST_OVER_TIME(postgresql.backends))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"67f279a3-9f31-d488-0a73-4371a58ee20a\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL\\n| STATS connections = SUM(LAST_OVER_TIME(postgresql.backends))\\n\"}, \"columns\": [{\"fieldName\": \"connections\", \"columnId\": \"333b03ee-0f81-633a-41c3-110ff83a21fe\", \"label\": \"Connections\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"connections\", \"columnId\": \"333b03ee-0f81-633a-41c3-110ff83a21fe\", \"label\": \"Connections\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\", \"index\": \"dd25a0a4-d316-f4a3-670f-93a050de06c7\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"dd25a0a4-d316-f4a3-670f-93a050de06c7\", \"name\": \"indexpattern-datasource-layer-67f279a3-9f31-d488-0a73-4371a58ee20a\"}], \"adHocDataViews\": {\"dd25a0a4-d316-f4a3-670f-93a050de06c7\": {\"id\": \"dd25a0a4-d316-f4a3-670f-93a050de06c7\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"f980e016-1df9-8b21-0916-c400428fe8a1\", \"gridData\": {\"x\": 24, \"y\": 2, \"w\": 8, \"h\": 4, \"i\": \"f980e016-1df9-8b21-0916-c400428fe8a1\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Max Connections\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"ab54d5a7-4ad1-c0c8-10c1-ca638709c1eb\", \"layerType\": \"data\", \"metricAccessor\": \"79064bf0-378b-7f0f-3a27-14f04133c258\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.connection.max IS NOT NULL\\n| STATS max_conn = MAX(LAST_OVER_TIME(postgresql.connection.max))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"ab54d5a7-4ad1-c0c8-10c1-ca638709c1eb\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.connection.max IS NOT NULL\\n| STATS max_conn = MAX(LAST_OVER_TIME(postgresql.connection.max))\\n\"}, \"columns\": [{\"fieldName\": \"max_conn\", \"columnId\": \"79064bf0-378b-7f0f-3a27-14f04133c258\", \"label\": \"Max\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"max_conn\", \"columnId\": \"79064bf0-378b-7f0f-3a27-14f04133c258\", \"label\": \"Max\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\", \"index\": \"e5bcb74d-2658-d7b2-1b92-2d7fe39d0e53\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"e5bcb74d-2658-d7b2-1b92-2d7fe39d0e53\", \"name\": \"indexpattern-datasource-layer-ab54d5a7-4ad1-c0c8-10c1-ca638709c1eb\"}], \"adHocDataViews\": {\"e5bcb74d-2658-d7b2-1b92-2d7fe39d0e53\": {\"id\": \"e5bcb74d-2658-d7b2-1b92-2d7fe39d0e53\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"0931cfe7-1fb3-d334-acd7-1bae51cd9d18\", \"gridData\": {\"x\": 32, \"y\": 2, \"w\": 8, \"h\": 4, \"i\": \"0931cfe7-1fb3-d334-acd7-1bae51cd9d18\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Deadlocks\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"e414949c-4a84-9266-acd9-02a432816c22\", \"layerType\": \"data\", \"metricAccessor\": \"f8b63708-a7ba-0f8f-0b5b-024ae8fe4735\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.deadlocks IS NOT NULL\\n| STATS deadlocks = SUM(INCREASE(postgresql.deadlocks))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"e414949c-4a84-9266-acd9-02a432816c22\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.deadlocks IS NOT NULL\\n| STATS deadlocks = SUM(INCREASE(postgresql.deadlocks))\\n\"}, \"columns\": [{\"fieldName\": \"deadlocks\", \"columnId\": \"f8b63708-a7ba-0f8f-0b5b-024ae8fe4735\", \"label\": \"Deadlocks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"deadlocks\", \"columnId\": \"f8b63708-a7ba-0f8f-0b5b-024ae8fe4735\", \"label\": \"Deadlocks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\", \"index\": \"30748a96-f612-0db1-5f18-ab105d56d2ba\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"30748a96-f612-0db1-5f18-ab105d56d2ba\", \"name\": \"indexpattern-datasource-layer-e414949c-4a84-9266-acd9-02a432816c22\"}], \"adHocDataViews\": {\"30748a96-f612-0db1-5f18-ab105d56d2ba\": {\"id\": \"30748a96-f612-0db1-5f18-ab105d56d2ba\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"2b817063-95b6-aa7d-f701-e6704df04016\", \"gridData\": {\"x\": 40, \"y\": 2, \"w\": 8, \"h\": 4, \"i\": \"2b817063-95b6-aa7d-f701-e6704df04016\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Temp Files\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"73e94787-1769-763c-f935-ade79670e913\", \"layerType\": \"data\", \"metricAccessor\": \"a9d6feb0-0567-6bfe-2200-d50fe0259221\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp_files IS NOT NULL\\n| STATS temp_files = SUM(INCREASE(postgresql.temp_files))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"73e94787-1769-763c-f935-ade79670e913\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp_files IS NOT NULL\\n| STATS temp_files = SUM(INCREASE(postgresql.temp_files))\\n\"}, \"columns\": [{\"fieldName\": \"temp_files\", \"columnId\": \"a9d6feb0-0567-6bfe-2200-d50fe0259221\", \"label\": \"Temp Files\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"temp_files\", \"columnId\": \"a9d6feb0-0567-6bfe-2200-d50fe0259221\", \"label\": \"Temp Files\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\", \"index\": \"d8d7622d-f4cb-87b9-43ce-4e6826a75cd2\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"d8d7622d-f4cb-87b9-43ce-4e6826a75cd2\", \"name\": \"indexpattern-datasource-layer-73e94787-1769-763c-f935-ade79670e913\"}], \"adHocDataViews\": {\"d8d7622d-f4cb-87b9-43ce-4e6826a75cd2\": {\"id\": \"d8d7622d-f4cb-87b9-43ce-4e6826a75cd2\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"1859ee22-5218-f045-5d97-664bb9ddf888\", \"gridData\": {\"x\": 16, \"y\": 6, \"w\": 16, \"h\": 4, \"i\": \"1859ee22-5218-f045-5d97-664bb9ddf888\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Buffer Hit Ratio\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"d194bb0f-3f2d-b53f-4994-a20326dd3396\", \"layerType\": \"data\", \"metricAccessor\": \"33e7b0a1-d80b-7465-0fec-5160ddaffe27\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.blks_hit IS NOT NULL OR postgresql.blks_read IS NOT NULL\\n| STATS hit = MAX(TO_DOUBLE(postgresql.blks_hit)), read = MAX(TO_DOUBLE(postgresql.blks_read))\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0.0)\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"d194bb0f-3f2d-b53f-4994-a20326dd3396\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.blks_hit IS NOT NULL OR postgresql.blks_read IS NOT NULL\\n| STATS hit = MAX(TO_DOUBLE(postgresql.blks_hit)), read = MAX(TO_DOUBLE(postgresql.blks_read))\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0.0)\\n\"}, \"columns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"33e7b0a1-d80b-7465-0fec-5160ddaffe27\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 1}}}}], \"allColumns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"33e7b0a1-d80b-7465-0fec-5160ddaffe27\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 1}}}}], \"timeField\": \"@timestamp\", \"index\": \"bcf4bdb8-a22e-af84-5d19-96db6ef3c429\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"bcf4bdb8-a22e-af84-5d19-96db6ef3c429\", \"name\": \"indexpattern-datasource-layer-d194bb0f-3f2d-b53f-4994-a20326dd3396\"}], \"adHocDataViews\": {\"bcf4bdb8-a22e-af84-5d19-96db6ef3c429\": {\"id\": \"bcf4bdb8-a22e-af84-5d19-96db6ef3c429\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"98a13f6b-d8c7-b07d-f683-e1b9150b71eb\", \"gridData\": {\"x\": 32, \"y\": 6, \"w\": 16, \"h\": 4, \"i\": \"98a13f6b-d8c7-b07d-f683-e1b9150b71eb\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Bgwriter Maxwritten\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"46c82159-aab7-167b-4e1f-3f31df9eb575\", \"layerType\": \"data\", \"metricAccessor\": \"3eeeb022-8fed-e7d6-8892-c9a8008eb919\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.bgwriter.maxwritten IS NOT NULL\\n| STATS maxwritten = SUM(INCREASE(postgresql.bgwriter.maxwritten))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"46c82159-aab7-167b-4e1f-3f31df9eb575\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.bgwriter.maxwritten IS NOT NULL\\n| STATS maxwritten = SUM(INCREASE(postgresql.bgwriter.maxwritten))\\n\"}, \"columns\": [{\"fieldName\": \"maxwritten\", \"columnId\": \"3eeeb022-8fed-e7d6-8892-c9a8008eb919\", \"label\": \"Maxwritten\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"maxwritten\", \"columnId\": \"3eeeb022-8fed-e7d6-8892-c9a8008eb919\", \"label\": \"Maxwritten\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\", \"index\": \"02e6fc29-ad56-2de5-0418-609d0efbd67c\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"02e6fc29-ad56-2de5-0418-609d0efbd67c\", \"name\": \"indexpattern-datasource-layer-46c82159-aab7-167b-4e1f-3f31df9eb575\"}], \"adHocDataViews\": {\"02e6fc29-ad56-2de5-0418-609d0efbd67c\": {\"id\": \"02e6fc29-ad56-2de5-0418-609d0efbd67c\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"c418e9a4-1e83-947e-3651-bc6734eb6135\", \"gridData\": {\"x\": 0, \"y\": 10, \"w\": 48, \"h\": 15, \"i\": \"c418e9a4-1e83-947e-3651-bc6734eb6135\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Database Health Summary\", \"visualizationType\": \"lnsDatatable\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"columns\": [{\"columnId\": \"51e681e6-78fa-47f5-18ea-a83a64757d24\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"91533c2d-da3d-e04e-f57f-2ab6f8f4efb8\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"7d8e003b-a8d3-2cce-28e5-7f13af863de2\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"73aa82a8-8873-ac59-afa1-b55f8c8f1449\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"d3a66e4c-50cd-02e7-b624-6095dd418664\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"4cb562ef-18f3-9b72-1529-cbb3f4dffd3b\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"86ea92b9-0596-4b62-9ff3-a2e7218a6b83\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"1573df81-3751-3986-2013-880ac8a50e13\", \"isTransposed\": false, \"isMetric\": true}], \"layerId\": \"17000239-ac58-2e7f-15ba-77ce28d2ec59\", \"layerType\": \"data\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| STATS connections = MAX(LAST_OVER_TIME(postgresql.backends)), commits = SUM(RATE(postgresql.commits)), rollbacks = SUM(RATE(postgresql.rollbacks)), deadlocks = SUM(INCREASE(postgresql.deadlocks)), blks_hit = SUM(RATE(postgresql.blks_hit)), blks_read = SUM(RATE(postgresql.blks_read)), temp_files = SUM(INCREASE(postgresql.temp_files)), db_size = MAX(LAST_OVER_TIME(postgresql.db_size)) BY resource.attributes.postgresql.database.name\\n| EVAL rollback_pct = CASE(commits + rollbacks > 0, rollbacks / (commits + rollbacks) * 100.0, 0.0), hit_ratio = CASE(blks_hit + blks_read > 0, blks_hit / (blks_hit + blks_read), 0.0)\\n| KEEP resource.attributes.postgresql.database.name, connections, commits, rollback_pct, deadlocks, hit_ratio, temp_files, db_size\\n| SORT connections DESC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"17000239-ac58-2e7f-15ba-77ce28d2ec59\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| STATS connections = MAX(LAST_OVER_TIME(postgresql.backends)), commits = SUM(RATE(postgresql.commits)), rollbacks = SUM(RATE(postgresql.rollbacks)), deadlocks = SUM(INCREASE(postgresql.deadlocks)), blks_hit = SUM(RATE(postgresql.blks_hit)), blks_read = SUM(RATE(postgresql.blks_read)), temp_files = SUM(INCREASE(postgresql.temp_files)), db_size = MAX(LAST_OVER_TIME(postgresql.db_size)) BY resource.attributes.postgresql.database.name\\n| EVAL rollback_pct = CASE(commits + rollbacks > 0, rollbacks / (commits + rollbacks) * 100.0, 0.0), hit_ratio = CASE(blks_hit + blks_read > 0, blks_hit / (blks_hit + blks_read), 0.0)\\n| KEEP resource.attributes.postgresql.database.name, connections, commits, rollback_pct, deadlocks, hit_ratio, temp_files, db_size\\n| SORT connections DESC\\n\"}, \"columns\": [{\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"51e681e6-78fa-47f5-18ea-a83a64757d24\", \"label\": \"Database\", \"customLabel\": true}, {\"fieldName\": \"connections\", \"columnId\": \"91533c2d-da3d-e04e-f57f-2ab6f8f4efb8\", \"label\": \"Connections\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"commits\", \"columnId\": \"7d8e003b-a8d3-2cce-28e5-7f13af863de2\", \"label\": \"Commits/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rollback_pct\", \"columnId\": \"73aa82a8-8873-ac59-afa1-b55f8c8f1449\", \"label\": \"Rollback %\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"deadlocks\", \"columnId\": \"d3a66e4c-50cd-02e7-b624-6095dd418664\", \"label\": \"Deadlocks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"hit_ratio\", \"columnId\": \"4cb562ef-18f3-9b72-1529-cbb3f4dffd3b\", \"label\": \"Buffer Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 1}}}}, {\"fieldName\": \"temp_files\", \"columnId\": \"86ea92b9-0596-4b62-9ff3-a2e7218a6b83\", \"label\": \"Temp Files\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"db_size\", \"columnId\": \"1573df81-3751-3986-2013-880ac8a50e13\", \"label\": \"DB Size\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"bytes\", \"params\": {\"decimals\": 1}}}}], \"allColumns\": [{\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"51e681e6-78fa-47f5-18ea-a83a64757d24\", \"label\": \"Database\", \"customLabel\": true}, {\"fieldName\": \"connections\", \"columnId\": \"91533c2d-da3d-e04e-f57f-2ab6f8f4efb8\", \"label\": \"Connections\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"commits\", \"columnId\": \"7d8e003b-a8d3-2cce-28e5-7f13af863de2\", \"label\": \"Commits/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rollback_pct\", \"columnId\": \"73aa82a8-8873-ac59-afa1-b55f8c8f1449\", \"label\": \"Rollback %\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"deadlocks\", \"columnId\": \"d3a66e4c-50cd-02e7-b624-6095dd418664\", \"label\": \"Deadlocks\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"hit_ratio\", \"columnId\": \"4cb562ef-18f3-9b72-1529-cbb3f4dffd3b\", \"label\": \"Buffer Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 1}}}}, {\"fieldName\": \"temp_files\", \"columnId\": \"86ea92b9-0596-4b62-9ff3-a2e7218a6b83\", \"label\": \"Temp Files\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}, {\"fieldName\": \"db_size\", \"columnId\": \"1573df81-3751-3986-2013-880ac8a50e13\", \"label\": \"DB Size\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"bytes\", \"params\": {\"decimals\": 1}}}}], \"timeField\": \"@timestamp\", \"index\": \"d8488404-cde0-9e8d-f976-ab972cc63e8b\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"d8488404-cde0-9e8d-f976-ab972cc63e8b\", \"name\": \"indexpattern-datasource-layer-17000239-ac58-2e7f-15ba-77ce28d2ec59\"}], \"adHocDataViews\": {\"d8488404-cde0-9e8d-f976-ab972cc63e8b\": {\"id\": \"d8488404-cde0-9e8d-f976-ab972cc63e8b\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"13cb5982-fb55-5b46-0479-6a2d4796c4b6\", \"gridData\": {\"x\": 0, \"y\": 25, \"w\": 24, \"h\": 10, \"i\": \"13cb5982-fb55-5b46-0479-6a2d4796c4b6\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Connections Over Time\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"0a837d50-0647-0639-e8bb-4a1026484ffb\", \"accessors\": [\"2f20e14e-f3eb-ac65-76a8-44bdfd03af33\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL\\n| STATS connections = MAX(LAST_OVER_TIME(postgresql.backends)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"0a837d50-0647-0639-e8bb-4a1026484ffb\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.backends IS NOT NULL\\n| STATS connections = MAX(LAST_OVER_TIME(postgresql.backends)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"connections\", \"columnId\": \"2f20e14e-f3eb-ac65-76a8-44bdfd03af33\", \"label\": \"Connections\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"connections\", \"columnId\": \"2f20e14e-f3eb-ac65-76a8-44bdfd03af33\", \"label\": \"Connections\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"timeField\": \"@timestamp\", \"index\": \"17716e05-a4d6-520e-1fe1-9ce3253eeedd\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"17716e05-a4d6-520e-1fe1-9ce3253eeedd\", \"name\": \"indexpattern-datasource-layer-0a837d50-0647-0639-e8bb-4a1026484ffb\"}], \"adHocDataViews\": {\"17716e05-a4d6-520e-1fe1-9ce3253eeedd\": {\"id\": \"17716e05-a4d6-520e-1fe1-9ce3253eeedd\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"36cb948b-1917-5f5f-9b2b-cd1a5c83ae30\", \"gridData\": {\"x\": 24, \"y\": 25, \"w\": 24, \"h\": 10, \"i\": \"36cb948b-1917-5f5f-9b2b-cd1a5c83ae30\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Buffer Hit Ratio Over Time\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"a14666c1-2f46-d5e2-44ed-5bf063412252\", \"accessors\": [\"568451ee-a9dc-aede-876b-3327c1f67ace\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| STATS hit = SUM(RATE(postgresql.blks_hit)), read = SUM(RATE(postgresql.blks_read)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0)\\n| WHERE hit_ratio IS NOT NULL\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"a14666c1-2f46-d5e2-44ed-5bf063412252\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| STATS hit = SUM(RATE(postgresql.blks_hit)), read = SUM(RATE(postgresql.blks_read)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0)\\n| WHERE hit_ratio IS NOT NULL\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"568451ee-a9dc-aede-876b-3327c1f67ace\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"568451ee-a9dc-aede-876b-3327c1f67ace\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"timeField\": \"@timestamp\", \"index\": \"62d406b6-e9e7-0fcc-5513-9f5d852190cb\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"62d406b6-e9e7-0fcc-5513-9f5d852190cb\", \"name\": \"indexpattern-datasource-layer-a14666c1-2f46-d5e2-44ed-5bf063412252\"}], \"adHocDataViews\": {\"62d406b6-e9e7-0fcc-5513-9f5d852190cb\": {\"id\": \"62d406b6-e9e7-0fcc-5513-9f5d852190cb\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"1800dc62-42af-49b2-0205-8b6b5cabf1e5\", \"gridData\": {\"x\": 0, \"y\": 35, \"w\": 24, \"h\": 10, \"i\": \"1800dc62-42af-49b2-0205-8b6b5cabf1e5\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Transaction Rate (Commits vs Rollbacks)\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"27f5209d-6bf3-5624-a42f-040c90d823a4\", \"accessors\": [\"0ed9407a-a969-abb0-98c0-4e05f907dfbb\"], \"layerType\": \"data\", \"seriesType\": \"area\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"ea5d114a-d680-0107-62cf-37ad42883bde\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"area\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| FORK ( WHERE postgresql.commits IS NOT NULL | STATS rate = SUM(RATE(postgresql.commits)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend) | EVAL tx_type = \\\"commits\\\" ) ( WHERE postgresql.rollbacks IS NOT NULL | STATS rate = SUM(RATE(postgresql.rollbacks)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend) | EVAL tx_type = \\\"rollbacks\\\" )\\n| STATS rate = SUM(rate) BY time_bucket, tx_type\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"27f5209d-6bf3-5624-a42f-040c90d823a4\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| FORK ( WHERE postgresql.commits IS NOT NULL | STATS rate = SUM(RATE(postgresql.commits)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend) | EVAL tx_type = \\\"commits\\\" ) ( WHERE postgresql.rollbacks IS NOT NULL | STATS rate = SUM(RATE(postgresql.rollbacks)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend) | EVAL tx_type = \\\"rollbacks\\\" )\\n| STATS rate = SUM(rate) BY time_bucket, tx_type\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"rate\", \"columnId\": \"0ed9407a-a969-abb0-98c0-4e05f907dfbb\", \"label\": \"Transactions/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"tx_type\", \"columnId\": \"ea5d114a-d680-0107-62cf-37ad42883bde\", \"label\": \"tx_type\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"rate\", \"columnId\": \"0ed9407a-a969-abb0-98c0-4e05f907dfbb\", \"label\": \"Transactions/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"tx_type\", \"columnId\": \"ea5d114a-d680-0107-62cf-37ad42883bde\", \"label\": \"tx_type\", \"customLabel\": false}], \"timeField\": \"@timestamp\", \"index\": \"91a0a170-1295-c801-8172-cb7365c756cc\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"91a0a170-1295-c801-8172-cb7365c756cc\", \"name\": \"indexpattern-datasource-layer-27f5209d-6bf3-5624-a42f-040c90d823a4\"}], \"adHocDataViews\": {\"91a0a170-1295-c801-8172-cb7365c756cc\": {\"id\": \"91a0a170-1295-c801-8172-cb7365c756cc\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"4ee27137-2f4c-6012-3c08-f1f261e62b4c\", \"gridData\": {\"x\": 24, \"y\": 35, \"w\": 24, \"h\": 10, \"i\": \"4ee27137-2f4c-6012-3c08-f1f261e62b4c\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Deadlocks Over Time\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"6b595b9d-a118-4a0b-53df-2ae50120a434\", \"accessors\": [\"f8aeb4bb-fdbd-07c9-7782-8732201e8a50\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.deadlocks IS NOT NULL\\n| STATS deadlock_rate = SUM(RATE(postgresql.deadlocks)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"6b595b9d-a118-4a0b-53df-2ae50120a434\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.deadlocks IS NOT NULL\\n| STATS deadlock_rate = SUM(RATE(postgresql.deadlocks)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"deadlock_rate\", \"columnId\": \"f8aeb4bb-fdbd-07c9-7782-8732201e8a50\", \"label\": \"Deadlocks/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"deadlock_rate\", \"columnId\": \"f8aeb4bb-fdbd-07c9-7782-8732201e8a50\", \"label\": \"Deadlocks/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"timeField\": \"@timestamp\", \"index\": \"fbfe0255-78bf-974f-500d-d33760f16efa\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"fbfe0255-78bf-974f-500d-d33760f16efa\", \"name\": \"indexpattern-datasource-layer-6b595b9d-a118-4a0b-53df-2ae50120a434\"}], \"adHocDataViews\": {\"fbfe0255-78bf-974f-500d-d33760f16efa\": {\"id\": \"fbfe0255-78bf-974f-500d-d33760f16efa\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"2a657d0b-8923-ab40-413f-c7aac99fcafe\", \"gridData\": {\"x\": 0, \"y\": 45, \"w\": 24, \"h\": 10, \"i\": \"2a657d0b-8923-ab40-413f-c7aac99fcafe\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Database Size by Database\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"55184005-e04e-dd29-1e9b-ddfd8c00417a\", \"accessors\": [\"98ba93c8-5cb6-d0c0-95a0-915098c635ba\"], \"layerType\": \"data\", \"seriesType\": \"bar_unstacked\", \"xAccessor\": \"d8d31f57-70aa-df71-5959-349a9f2dc555\", \"position\": \"top\", \"showGridlines\": false, \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"bar_unstacked\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.db_size IS NOT NULL\\n| STATS db_size = MAX(postgresql.db_size) BY resource.attributes.postgresql.database.name\\n| SORT db_size DESC\\n| LIMIT 10\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"55184005-e04e-dd29-1e9b-ddfd8c00417a\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.db_size IS NOT NULL\\n| STATS db_size = MAX(postgresql.db_size) BY resource.attributes.postgresql.database.name\\n| SORT db_size DESC\\n| LIMIT 10\\n\"}, \"columns\": [{\"fieldName\": \"db_size\", \"columnId\": \"98ba93c8-5cb6-d0c0-95a0-915098c635ba\", \"label\": \"Size\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"bytes\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"d8d31f57-70aa-df71-5959-349a9f2dc555\", \"label\": \"Database\", \"customLabel\": true}], \"allColumns\": [{\"fieldName\": \"db_size\", \"columnId\": \"98ba93c8-5cb6-d0c0-95a0-915098c635ba\", \"label\": \"Size\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"bytes\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"d8d31f57-70aa-df71-5959-349a9f2dc555\", \"label\": \"Database\", \"customLabel\": true}], \"timeField\": \"@timestamp\", \"index\": \"0063f734-7886-de24-8441-a60f765acaa2\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"0063f734-7886-de24-8441-a60f765acaa2\", \"name\": \"indexpattern-datasource-layer-55184005-e04e-dd29-1e9b-ddfd8c00417a\"}], \"adHocDataViews\": {\"0063f734-7886-de24-8441-a60f765acaa2\": {\"id\": \"0063f734-7886-de24-8441-a60f765acaa2\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"4a68d0ac-182e-5da8-3088-757b2ccc94df\", \"gridData\": {\"x\": 24, \"y\": 45, \"w\": 24, \"h\": 10, \"i\": \"4a68d0ac-182e-5da8-3088-757b2ccc94df\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Temp Files and I/O Over Time\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"630a05f5-4a4d-58ae-1d41-02569457eee4\", \"accessors\": [\"aa53803a-2d49-d3d9-29e7-05496ca768c9\", \"8b773010-80e7-4dfc-108c-8365417d8158\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp_files IS NOT NULL OR postgresql.temp.io IS NOT NULL\\n| STATS temp_files = SUM(RATE(postgresql.temp_files)), temp_io = SUM(RATE(postgresql.temp.io)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend)\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"630a05f5-4a4d-58ae-1d41-02569457eee4\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp_files IS NOT NULL OR postgresql.temp.io IS NOT NULL\\n| STATS temp_files = SUM(RATE(postgresql.temp_files)), temp_io = SUM(RATE(postgresql.temp.io)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend)\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"temp_files\", \"columnId\": \"aa53803a-2d49-d3d9-29e7-05496ca768c9\", \"label\": \"Temp Files/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"temp_io\", \"columnId\": \"8b773010-80e7-4dfc-108c-8365417d8158\", \"label\": \"Temp I/O bytes/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"bytes\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}], \"allColumns\": [{\"fieldName\": \"temp_files\", \"columnId\": \"aa53803a-2d49-d3d9-29e7-05496ca768c9\", \"label\": \"Temp Files/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"temp_io\", \"columnId\": \"8b773010-80e7-4dfc-108c-8365417d8158\", \"label\": \"Temp I/O bytes/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"bytes\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}], \"timeField\": \"@timestamp\", \"index\": \"f7eb2499-671a-4197-9710-86c1317f8310\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"f7eb2499-671a-4197-9710-86c1317f8310\", \"name\": \"indexpattern-datasource-layer-630a05f5-4a4d-58ae-1d41-02569457eee4\"}], \"adHocDataViews\": {\"f7eb2499-671a-4197-9710-86c1317f8310\": {\"id\": \"f7eb2499-671a-4197-9710-86c1317f8310\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}]", "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"kuery\"}}" diff --git a/packages/postgresql_otel/kibana/dashboard/postgresql_otel-query-performance.json b/packages/postgresql_otel/kibana/dashboard/postgresql_otel-query-performance.json index 4a03971abcf..e445d57f1fc 100644 --- a/packages/postgresql_otel/kibana/dashboard/postgresql_otel-query-performance.json +++ b/packages/postgresql_otel/kibana/dashboard/postgresql_otel-query-performance.json @@ -2,7 +2,7 @@ "attributes": { "title": "[PostgreSQL OTel] Query Performance", "description": "Query execution times, top queries from pg_stat_statements, temp file usage, and sequential scan rates.", - "panelsJSON": "[{\"panelIndex\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\", \"gridData\": {\"x\": 0, \"y\": 0, \"w\": 48, \"h\": 2, \"i\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\"}, \"type\": \"links\", \"embeddableConfig\": {\"enhancements\": {}, \"attributes\": {\"layout\": \"horizontal\", \"links\": [{\"id\": \"3af4ba12-6f83-488a-bdc9-0c7216a22d73\", \"order\": 0, \"label\": \"Overview\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_3af4ba12-6f83-488a-bdc9-0c7216a22d73_dashboard\"}, {\"id\": \"457f9dcd-ccf2-13f5-ae7c-fd660d496fe1\", \"order\": 1, \"label\": \"Connections\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_457f9dcd-ccf2-13f5-ae7c-fd660d496fe1_dashboard\"}, {\"id\": \"df38fd11-17eb-2a21-12aa-c07388280dff\", \"order\": 2, \"label\": \"Workload\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_df38fd11-17eb-2a21-12aa-c07388280dff_dashboard\"}, {\"id\": \"26830f56-d6ec-6d34-6a53-840ef67339ae\", \"order\": 3, \"label\": \"Query Performance\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_26830f56-d6ec-6d34-6a53-840ef67339ae_dashboard\"}, {\"id\": \"034096ad-700e-a9a9-bff4-3d46eeaa5872\", \"order\": 4, \"label\": \"I/O Health\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_034096ad-700e-a9a9-bff4-3d46eeaa5872_dashboard\"}, {\"id\": \"e9d78396-5608-90eb-32c4-2b41057b91b6\", \"order\": 5, \"label\": \"Locks\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_e9d78396-5608-90eb-32c4-2b41057b91b6_dashboard\"}, {\"id\": \"70498c6a-23a7-aafd-b3e4-b54790c59b66\", \"order\": 6, \"label\": \"Active Queries\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_70498c6a-23a7-aafd-b3e4-b54790c59b66_dashboard\"}]}}}, {\"panelIndex\": \"ddecfbc9-dfd1-45f0-db4e-3f3d89153ed0\", \"gridData\": {\"x\": 0, \"y\": 2, \"w\": 16, \"h\": 14, \"i\": \"ddecfbc9-dfd1-45f0-db4e-3f3d89153ed0\"}, \"type\": \"visualization\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"savedVis\": {\"type\": \"markdown\", \"id\": \"\", \"title\": \"\", \"description\": \"\", \"params\": {\"fontSize\": 12, \"openLinksInNewTab\": false, \"markdown\": \"## [PostgreSQL OTel] Query Performance\\n\\nThis dashboard monitors query performance:\\n- Temp file creation and I/O (queries spilling to disk)\\n- Buffer cache hit ratio\\n- Top queries by execution time and call volume\\n- Sequential scans (when available)\\n\"}, \"uiState\": {}, \"data\": {\"aggs\": [], \"searchSource\": {\"query\": {\"query\": \"\", \"language\": \"kuery\"}, \"filter\": []}}}}}, {\"panelIndex\": \"8bbe81e2-13c3-e279-1c5a-a9577850a1b0\", \"gridData\": {\"x\": 16, \"y\": 2, \"w\": 10, \"h\": 4, \"i\": \"8bbe81e2-13c3-e279-1c5a-a9577850a1b0\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Temp Files Created\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"73e94787-1769-763c-f935-ade79670e913\", \"layerType\": \"data\", \"metricAccessor\": \"a9d6feb0-0567-6bfe-2200-d50fe0259221\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp_files IS NOT NULL\\n| STATS temp_files = SUM(INCREASE(postgresql.temp_files))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"73e94787-1769-763c-f935-ade79670e913\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp_files IS NOT NULL\\n| STATS temp_files = SUM(INCREASE(postgresql.temp_files))\\n\"}, \"columns\": [{\"fieldName\": \"temp_files\", \"columnId\": \"a9d6feb0-0567-6bfe-2200-d50fe0259221\", \"label\": \"Temp Files\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"temp_files\", \"columnId\": \"a9d6feb0-0567-6bfe-2200-d50fe0259221\", \"label\": \"Temp Files\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"3fd1e639-4497-5703-d4b6-de8e34f657ea\", \"gridData\": {\"x\": 26, \"y\": 2, \"w\": 10, \"h\": 4, \"i\": \"3fd1e639-4497-5703-d4b6-de8e34f657ea\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Temp I/O (bytes)\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"3ce4078c-dcad-cea9-0c7a-68c35dbc9e25\", \"layerType\": \"data\", \"metricAccessor\": \"ebee03b4-98e3-a087-411e-f723a007e943\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp.io IS NOT NULL\\n| STATS temp_io = SUM(INCREASE(postgresql.temp.io))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"3ce4078c-dcad-cea9-0c7a-68c35dbc9e25\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp.io IS NOT NULL\\n| STATS temp_io = SUM(INCREASE(postgresql.temp.io))\\n\"}, \"columns\": [{\"fieldName\": \"temp_io\", \"columnId\": \"ebee03b4-98e3-a087-411e-f723a007e943\", \"label\": \"Temp I/O\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"bytes\", \"params\": {\"decimals\": 2}}}}], \"allColumns\": [{\"fieldName\": \"temp_io\", \"columnId\": \"ebee03b4-98e3-a087-411e-f723a007e943\", \"label\": \"Temp I/O\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"bytes\", \"params\": {\"decimals\": 2}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"b274b23e-4a78-2e9b-94aa-801f1d213389\", \"gridData\": {\"x\": 36, \"y\": 2, \"w\": 12, \"h\": 4, \"i\": \"b274b23e-4a78-2e9b-94aa-801f1d213389\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Buffer Hit Ratio\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"d194bb0f-3f2d-b53f-4994-a20326dd3396\", \"layerType\": \"data\", \"metricAccessor\": \"33e7b0a1-d80b-7465-0fec-5160ddaffe27\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.blks_hit IS NOT NULL OR postgresql.blks_read IS NOT NULL\\n| STATS hit = MAX(TO_DOUBLE(postgresql.blks_hit)), read = MAX(TO_DOUBLE(postgresql.blks_read))\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0.0)\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"d194bb0f-3f2d-b53f-4994-a20326dd3396\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.blks_hit IS NOT NULL OR postgresql.blks_read IS NOT NULL\\n| STATS hit = MAX(TO_DOUBLE(postgresql.blks_hit)), read = MAX(TO_DOUBLE(postgresql.blks_read))\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0.0)\\n\"}, \"columns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"33e7b0a1-d80b-7465-0fec-5160ddaffe27\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 1}}}}], \"allColumns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"33e7b0a1-d80b-7465-0fec-5160ddaffe27\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 1}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"8e72c81c-7912-ebae-0a30-317382c0a880\", \"gridData\": {\"x\": 16, \"y\": 6, \"w\": 32, \"h\": 10, \"i\": \"8e72c81c-7912-ebae-0a30-317382c0a880\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Temp Files Over Time\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"8603b7a6-756a-cfba-2e5e-06fc9a378472\", \"accessors\": [\"aa53803a-2d49-d3d9-29e7-05496ca768c9\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp_files IS NOT NULL\\n| STATS temp_files = SUM(RATE(postgresql.temp_files)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"8603b7a6-756a-cfba-2e5e-06fc9a378472\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp_files IS NOT NULL\\n| STATS temp_files = SUM(RATE(postgresql.temp_files)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"temp_files\", \"columnId\": \"aa53803a-2d49-d3d9-29e7-05496ca768c9\", \"label\": \"Temp Files/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"temp_files\", \"columnId\": \"aa53803a-2d49-d3d9-29e7-05496ca768c9\", \"label\": \"Temp Files/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"8996695c-f2f5-0aa0-874b-4937b90e614d\", \"gridData\": {\"x\": 0, \"y\": 16, \"w\": 48, \"h\": 10, \"i\": \"8996695c-f2f5-0aa0-874b-4937b90e614d\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Temp I/O Over Time\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"c8bb2da5-1b2d-a531-b19e-311eca707e07\", \"accessors\": [\"8b773010-80e7-4dfc-108c-8365417d8158\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp.io IS NOT NULL\\n| STATS temp_io = SUM(RATE(postgresql.temp.io)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"c8bb2da5-1b2d-a531-b19e-311eca707e07\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp.io IS NOT NULL\\n| STATS temp_io = SUM(RATE(postgresql.temp.io)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"temp_io\", \"columnId\": \"8b773010-80e7-4dfc-108c-8365417d8158\", \"label\": \"Temp I/O bytes/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"bytes\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"temp_io\", \"columnId\": \"8b773010-80e7-4dfc-108c-8365417d8158\", \"label\": \"Temp I/O bytes/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"bytes\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"002accbf-ca94-38ca-b0fc-b60142e8bf49\", \"gridData\": {\"x\": 0, \"y\": 26, \"w\": 48, \"h\": 15, \"i\": \"002accbf-ca94-38ca-b0fc-b60142e8bf49\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Top Queries by Execution Time (Delta)\", \"visualizationType\": \"lnsDatatable\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"columns\": [{\"columnId\": \"dc40c157-1f35-77c2-1f67-5330282e7615\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"3d628637-e647-a71e-2d77-507f2f1cc909\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"757e4b3f-66be-5a10-67eb-35b61d638b58\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"9cb69af4-def7-3c96-1e21-b71b2d24c002\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"0ad93dc2-2c9d-56e8-ff07-ed5f22f4bba0\", \"isTransposed\": false, \"isMetric\": true}], \"layerId\": \"bda859cc-b8c2-cbe5-ac87-cc4b864ec8a5\", \"layerType\": \"data\"}, \"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.top_query\\\"\\n| WHERE attributes.postgresql.total_exec_time IS NOT NULL\\n| STATS exec_time = SUM(attributes.postgresql.total_exec_time), calls = SUM(attributes.postgresql.calls), rows = SUM(attributes.postgresql.rows) BY query = attributes.db.query.text, attributes.db.namespace\\n| SORT exec_time DESC\\n| LIMIT 20\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"bda859cc-b8c2-cbe5-ac87-cc4b864ec8a5\": {\"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.top_query\\\"\\n| WHERE attributes.postgresql.total_exec_time IS NOT NULL\\n| STATS exec_time = SUM(attributes.postgresql.total_exec_time), calls = SUM(attributes.postgresql.calls), rows = SUM(attributes.postgresql.rows) BY query = attributes.db.query.text, attributes.db.namespace\\n| SORT exec_time DESC\\n| LIMIT 20\\n\"}, \"columns\": [{\"fieldName\": \"query\", \"columnId\": \"dc40c157-1f35-77c2-1f67-5330282e7615\", \"label\": \"Query\", \"customLabel\": true}, {\"fieldName\": \"attributes.db.namespace\", \"columnId\": \"3d628637-e647-a71e-2d77-507f2f1cc909\", \"label\": \"Database\", \"customLabel\": true}, {\"fieldName\": \"exec_time\", \"columnId\": \"757e4b3f-66be-5a10-67eb-35b61d638b58\", \"label\": \"Exec Time (ms)\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"calls\", \"columnId\": \"9cb69af4-def7-3c96-1e21-b71b2d24c002\", \"label\": \"Calls\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rows\", \"columnId\": \"0ad93dc2-2c9d-56e8-ff07-ed5f22f4bba0\", \"label\": \"Rows\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}], \"allColumns\": [{\"fieldName\": \"query\", \"columnId\": \"dc40c157-1f35-77c2-1f67-5330282e7615\", \"label\": \"Query\", \"customLabel\": true}, {\"fieldName\": \"attributes.db.namespace\", \"columnId\": \"3d628637-e647-a71e-2d77-507f2f1cc909\", \"label\": \"Database\", \"customLabel\": true}, {\"fieldName\": \"exec_time\", \"columnId\": \"757e4b3f-66be-5a10-67eb-35b61d638b58\", \"label\": \"Exec Time (ms)\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"calls\", \"columnId\": \"9cb69af4-def7-3c96-1e21-b71b2d24c002\", \"label\": \"Calls\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rows\", \"columnId\": \"0ad93dc2-2c9d-56e8-ff07-ed5f22f4bba0\", \"label\": \"Rows\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"d44ab96d-84b5-2a13-8596-0f2c56367684\", \"gridData\": {\"x\": 0, \"y\": 41, \"w\": 48, \"h\": 15, \"i\": \"d44ab96d-84b5-2a13-8596-0f2c56367684\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Top Queries by Call Volume\", \"visualizationType\": \"lnsDatatable\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"columns\": [{\"columnId\": \"dc40c157-1f35-77c2-1f67-5330282e7615\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"3d628637-e647-a71e-2d77-507f2f1cc909\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"9cb69af4-def7-3c96-1e21-b71b2d24c002\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"757e4b3f-66be-5a10-67eb-35b61d638b58\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"0ad93dc2-2c9d-56e8-ff07-ed5f22f4bba0\", \"isTransposed\": false, \"isMetric\": true}], \"layerId\": \"80c3ce42-506d-104c-faac-0effc2842e76\", \"layerType\": \"data\"}, \"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.top_query\\\"\\n| WHERE attributes.postgresql.calls IS NOT NULL\\n| STATS calls = SUM(attributes.postgresql.calls), exec_time = SUM(attributes.postgresql.total_exec_time), rows = SUM(attributes.postgresql.rows) BY query = attributes.db.query.text, attributes.db.namespace\\n| SORT calls DESC\\n| LIMIT 20\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"80c3ce42-506d-104c-faac-0effc2842e76\": {\"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.top_query\\\"\\n| WHERE attributes.postgresql.calls IS NOT NULL\\n| STATS calls = SUM(attributes.postgresql.calls), exec_time = SUM(attributes.postgresql.total_exec_time), rows = SUM(attributes.postgresql.rows) BY query = attributes.db.query.text, attributes.db.namespace\\n| SORT calls DESC\\n| LIMIT 20\\n\"}, \"columns\": [{\"fieldName\": \"query\", \"columnId\": \"dc40c157-1f35-77c2-1f67-5330282e7615\", \"label\": \"Query\", \"customLabel\": true}, {\"fieldName\": \"attributes.db.namespace\", \"columnId\": \"3d628637-e647-a71e-2d77-507f2f1cc909\", \"label\": \"Database\", \"customLabel\": true}, {\"fieldName\": \"calls\", \"columnId\": \"9cb69af4-def7-3c96-1e21-b71b2d24c002\", \"label\": \"Calls\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"exec_time\", \"columnId\": \"757e4b3f-66be-5a10-67eb-35b61d638b58\", \"label\": \"Exec Time (ms)\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rows\", \"columnId\": \"0ad93dc2-2c9d-56e8-ff07-ed5f22f4bba0\", \"label\": \"Rows\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}], \"allColumns\": [{\"fieldName\": \"query\", \"columnId\": \"dc40c157-1f35-77c2-1f67-5330282e7615\", \"label\": \"Query\", \"customLabel\": true}, {\"fieldName\": \"attributes.db.namespace\", \"columnId\": \"3d628637-e647-a71e-2d77-507f2f1cc909\", \"label\": \"Database\", \"customLabel\": true}, {\"fieldName\": \"calls\", \"columnId\": \"9cb69af4-def7-3c96-1e21-b71b2d24c002\", \"label\": \"Calls\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"exec_time\", \"columnId\": \"757e4b3f-66be-5a10-67eb-35b61d638b58\", \"label\": \"Exec Time (ms)\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rows\", \"columnId\": \"0ad93dc2-2c9d-56e8-ff07-ed5f22f4bba0\", \"label\": \"Rows\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}]", + "panelsJSON": "[{\"panelIndex\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\", \"gridData\": {\"x\": 0, \"y\": 0, \"w\": 48, \"h\": 2, \"i\": \"5ec9d4e9-3f1c-8f1e-41f0-eb022308081d\"}, \"type\": \"links\", \"embeddableConfig\": {\"enhancements\": {}, \"attributes\": {\"layout\": \"horizontal\", \"links\": [{\"id\": \"3af4ba12-6f83-488a-bdc9-0c7216a22d73\", \"order\": 0, \"label\": \"Overview\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_3af4ba12-6f83-488a-bdc9-0c7216a22d73_dashboard\"}, {\"id\": \"457f9dcd-ccf2-13f5-ae7c-fd660d496fe1\", \"order\": 1, \"label\": \"Connections\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_457f9dcd-ccf2-13f5-ae7c-fd660d496fe1_dashboard\"}, {\"id\": \"df38fd11-17eb-2a21-12aa-c07388280dff\", \"order\": 2, \"label\": \"Workload\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_df38fd11-17eb-2a21-12aa-c07388280dff_dashboard\"}, {\"id\": \"26830f56-d6ec-6d34-6a53-840ef67339ae\", \"order\": 3, \"label\": \"Query Performance\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_26830f56-d6ec-6d34-6a53-840ef67339ae_dashboard\"}, {\"id\": \"034096ad-700e-a9a9-bff4-3d46eeaa5872\", \"order\": 4, \"label\": \"I/O Health\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_034096ad-700e-a9a9-bff4-3d46eeaa5872_dashboard\"}, {\"id\": \"e9d78396-5608-90eb-32c4-2b41057b91b6\", \"order\": 5, \"label\": \"Locks\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_e9d78396-5608-90eb-32c4-2b41057b91b6_dashboard\"}, {\"id\": \"70498c6a-23a7-aafd-b3e4-b54790c59b66\", \"order\": 6, \"label\": \"Active Queries\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_70498c6a-23a7-aafd-b3e4-b54790c59b66_dashboard\"}]}}}, {\"panelIndex\": \"ddecfbc9-dfd1-45f0-db4e-3f3d89153ed0\", \"gridData\": {\"x\": 0, \"y\": 2, \"w\": 16, \"h\": 14, \"i\": \"ddecfbc9-dfd1-45f0-db4e-3f3d89153ed0\"}, \"type\": \"visualization\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"savedVis\": {\"type\": \"markdown\", \"id\": \"\", \"title\": \"\", \"description\": \"\", \"params\": {\"fontSize\": 12, \"openLinksInNewTab\": false, \"markdown\": \"## [PostgreSQL OTel] Query Performance\\n\\nThis dashboard monitors query performance:\\n- Temp file creation and I/O (queries spilling to disk)\\n- Buffer cache hit ratio\\n- Top queries by execution time and call volume\\n- Sequential scans (when available)\\n\"}, \"uiState\": {}, \"data\": {\"aggs\": [], \"searchSource\": {\"query\": {\"query\": \"\", \"language\": \"kuery\"}, \"filter\": []}}}}}, {\"panelIndex\": \"8bbe81e2-13c3-e279-1c5a-a9577850a1b0\", \"gridData\": {\"x\": 16, \"y\": 2, \"w\": 10, \"h\": 4, \"i\": \"8bbe81e2-13c3-e279-1c5a-a9577850a1b0\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Temp Files Created\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"73e94787-1769-763c-f935-ade79670e913\", \"layerType\": \"data\", \"metricAccessor\": \"a9d6feb0-0567-6bfe-2200-d50fe0259221\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp_files IS NOT NULL\\n| STATS temp_files = SUM(INCREASE(postgresql.temp_files))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"73e94787-1769-763c-f935-ade79670e913\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp_files IS NOT NULL\\n| STATS temp_files = SUM(INCREASE(postgresql.temp_files))\\n\"}, \"columns\": [{\"fieldName\": \"temp_files\", \"columnId\": \"a9d6feb0-0567-6bfe-2200-d50fe0259221\", \"label\": \"Temp Files\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"allColumns\": [{\"fieldName\": \"temp_files\", \"columnId\": \"a9d6feb0-0567-6bfe-2200-d50fe0259221\", \"label\": \"Temp Files\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 0}}}}], \"timeField\": \"@timestamp\", \"index\": \"d8d7622d-f4cb-87b9-43ce-4e6826a75cd2\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"d8d7622d-f4cb-87b9-43ce-4e6826a75cd2\", \"name\": \"indexpattern-datasource-layer-73e94787-1769-763c-f935-ade79670e913\"}], \"adHocDataViews\": {\"d8d7622d-f4cb-87b9-43ce-4e6826a75cd2\": {\"id\": \"d8d7622d-f4cb-87b9-43ce-4e6826a75cd2\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"3fd1e639-4497-5703-d4b6-de8e34f657ea\", \"gridData\": {\"x\": 26, \"y\": 2, \"w\": 10, \"h\": 4, \"i\": \"3fd1e639-4497-5703-d4b6-de8e34f657ea\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Temp I/O (bytes)\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"3ce4078c-dcad-cea9-0c7a-68c35dbc9e25\", \"layerType\": \"data\", \"metricAccessor\": \"ebee03b4-98e3-a087-411e-f723a007e943\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp.io IS NOT NULL\\n| STATS temp_io = SUM(INCREASE(postgresql.temp.io))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"3ce4078c-dcad-cea9-0c7a-68c35dbc9e25\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp.io IS NOT NULL\\n| STATS temp_io = SUM(INCREASE(postgresql.temp.io))\\n\"}, \"columns\": [{\"fieldName\": \"temp_io\", \"columnId\": \"ebee03b4-98e3-a087-411e-f723a007e943\", \"label\": \"Temp I/O\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"bytes\", \"params\": {\"decimals\": 2}}}}], \"allColumns\": [{\"fieldName\": \"temp_io\", \"columnId\": \"ebee03b4-98e3-a087-411e-f723a007e943\", \"label\": \"Temp I/O\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"bytes\", \"params\": {\"decimals\": 2}}}}], \"timeField\": \"@timestamp\", \"index\": \"020e8e68-65b7-6667-deb2-46f4cc68d192\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"020e8e68-65b7-6667-deb2-46f4cc68d192\", \"name\": \"indexpattern-datasource-layer-3ce4078c-dcad-cea9-0c7a-68c35dbc9e25\"}], \"adHocDataViews\": {\"020e8e68-65b7-6667-deb2-46f4cc68d192\": {\"id\": \"020e8e68-65b7-6667-deb2-46f4cc68d192\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"b274b23e-4a78-2e9b-94aa-801f1d213389\", \"gridData\": {\"x\": 36, \"y\": 2, \"w\": 12, \"h\": 4, \"i\": \"b274b23e-4a78-2e9b-94aa-801f1d213389\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Buffer Hit Ratio\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"d194bb0f-3f2d-b53f-4994-a20326dd3396\", \"layerType\": \"data\", \"metricAccessor\": \"33e7b0a1-d80b-7465-0fec-5160ddaffe27\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.blks_hit IS NOT NULL OR postgresql.blks_read IS NOT NULL\\n| STATS hit = MAX(TO_DOUBLE(postgresql.blks_hit)), read = MAX(TO_DOUBLE(postgresql.blks_read))\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0.0)\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"d194bb0f-3f2d-b53f-4994-a20326dd3396\": {\"query\": {\"esql\": \"FROM metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.blks_hit IS NOT NULL OR postgresql.blks_read IS NOT NULL\\n| STATS hit = MAX(TO_DOUBLE(postgresql.blks_hit)), read = MAX(TO_DOUBLE(postgresql.blks_read))\\n| EVAL hit_ratio = CASE(read + hit > 0, hit / (hit + read), 0.0)\\n\"}, \"columns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"33e7b0a1-d80b-7465-0fec-5160ddaffe27\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 1}}}}], \"allColumns\": [{\"fieldName\": \"hit_ratio\", \"columnId\": \"33e7b0a1-d80b-7465-0fec-5160ddaffe27\", \"label\": \"Hit Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 1}}}}], \"timeField\": \"@timestamp\", \"index\": \"bcf4bdb8-a22e-af84-5d19-96db6ef3c429\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"bcf4bdb8-a22e-af84-5d19-96db6ef3c429\", \"name\": \"indexpattern-datasource-layer-d194bb0f-3f2d-b53f-4994-a20326dd3396\"}], \"adHocDataViews\": {\"bcf4bdb8-a22e-af84-5d19-96db6ef3c429\": {\"id\": \"bcf4bdb8-a22e-af84-5d19-96db6ef3c429\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"8e72c81c-7912-ebae-0a30-317382c0a880\", \"gridData\": {\"x\": 16, \"y\": 6, \"w\": 32, \"h\": 10, \"i\": \"8e72c81c-7912-ebae-0a30-317382c0a880\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Temp Files Over Time\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"8603b7a6-756a-cfba-2e5e-06fc9a378472\", \"accessors\": [\"aa53803a-2d49-d3d9-29e7-05496ca768c9\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp_files IS NOT NULL\\n| STATS temp_files = SUM(RATE(postgresql.temp_files)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"8603b7a6-756a-cfba-2e5e-06fc9a378472\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp_files IS NOT NULL\\n| STATS temp_files = SUM(RATE(postgresql.temp_files)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"temp_files\", \"columnId\": \"aa53803a-2d49-d3d9-29e7-05496ca768c9\", \"label\": \"Temp Files/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"temp_files\", \"columnId\": \"aa53803a-2d49-d3d9-29e7-05496ca768c9\", \"label\": \"Temp Files/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"timeField\": \"@timestamp\", \"index\": \"6b929185-1b63-aec0-3edc-7f5c56221fdd\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"6b929185-1b63-aec0-3edc-7f5c56221fdd\", \"name\": \"indexpattern-datasource-layer-8603b7a6-756a-cfba-2e5e-06fc9a378472\"}], \"adHocDataViews\": {\"6b929185-1b63-aec0-3edc-7f5c56221fdd\": {\"id\": \"6b929185-1b63-aec0-3edc-7f5c56221fdd\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"8996695c-f2f5-0aa0-874b-4937b90e614d\", \"gridData\": {\"x\": 0, \"y\": 16, \"w\": 48, \"h\": 10, \"i\": \"8996695c-f2f5-0aa0-874b-4937b90e614d\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Temp I/O Over Time\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"c8bb2da5-1b2d-a531-b19e-311eca707e07\", \"accessors\": [\"8b773010-80e7-4dfc-108c-8365417d8158\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"position\": \"top\", \"showGridlines\": false, \"splitAccessor\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp.io IS NOT NULL\\n| STATS temp_io = SUM(RATE(postgresql.temp.io)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"c8bb2da5-1b2d-a531-b19e-311eca707e07\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.temp.io IS NOT NULL\\n| STATS temp_io = SUM(RATE(postgresql.temp.io)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend), resource.attributes.postgresql.database.name\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"temp_io\", \"columnId\": \"8b773010-80e7-4dfc-108c-8365417d8158\", \"label\": \"Temp I/O bytes/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"bytes\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"allColumns\": [{\"fieldName\": \"temp_io\", \"columnId\": \"8b773010-80e7-4dfc-108c-8365417d8158\", \"label\": \"Temp I/O bytes/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"bytes\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"df177ea9-5843-5979-3eb7-326180aaf9c1\", \"label\": \"Time\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}, {\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"b25facf4-1653-c8ee-01c8-423311f4f4a4\", \"label\": \"resource.attributes.postgresql.database.name\", \"customLabel\": false}], \"timeField\": \"@timestamp\", \"index\": \"d50ae282-3eb1-caba-24e8-a37aa151f1d3\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"d50ae282-3eb1-caba-24e8-a37aa151f1d3\", \"name\": \"indexpattern-datasource-layer-c8bb2da5-1b2d-a531-b19e-311eca707e07\"}], \"adHocDataViews\": {\"d50ae282-3eb1-caba-24e8-a37aa151f1d3\": {\"id\": \"d50ae282-3eb1-caba-24e8-a37aa151f1d3\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"002accbf-ca94-38ca-b0fc-b60142e8bf49\", \"gridData\": {\"x\": 0, \"y\": 26, \"w\": 48, \"h\": 15, \"i\": \"002accbf-ca94-38ca-b0fc-b60142e8bf49\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Top Queries by Execution Time (Delta)\", \"visualizationType\": \"lnsDatatable\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"columns\": [{\"columnId\": \"dc40c157-1f35-77c2-1f67-5330282e7615\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"3d628637-e647-a71e-2d77-507f2f1cc909\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"757e4b3f-66be-5a10-67eb-35b61d638b58\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"9cb69af4-def7-3c96-1e21-b71b2d24c002\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"0ad93dc2-2c9d-56e8-ff07-ed5f22f4bba0\", \"isTransposed\": false, \"isMetric\": true}], \"layerId\": \"bda859cc-b8c2-cbe5-ac87-cc4b864ec8a5\", \"layerType\": \"data\"}, \"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.top_query\\\"\\n| WHERE attributes.postgresql.total_exec_time IS NOT NULL\\n| STATS exec_time = SUM(attributes.postgresql.total_exec_time), calls = SUM(attributes.postgresql.calls), rows = SUM(attributes.postgresql.rows) BY query = attributes.db.query.text, attributes.db.namespace\\n| SORT exec_time DESC\\n| LIMIT 20\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"bda859cc-b8c2-cbe5-ac87-cc4b864ec8a5\": {\"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.top_query\\\"\\n| WHERE attributes.postgresql.total_exec_time IS NOT NULL\\n| STATS exec_time = SUM(attributes.postgresql.total_exec_time), calls = SUM(attributes.postgresql.calls), rows = SUM(attributes.postgresql.rows) BY query = attributes.db.query.text, attributes.db.namespace\\n| SORT exec_time DESC\\n| LIMIT 20\\n\"}, \"columns\": [{\"fieldName\": \"query\", \"columnId\": \"dc40c157-1f35-77c2-1f67-5330282e7615\", \"label\": \"Query\", \"customLabel\": true}, {\"fieldName\": \"attributes.db.namespace\", \"columnId\": \"3d628637-e647-a71e-2d77-507f2f1cc909\", \"label\": \"Database\", \"customLabel\": true}, {\"fieldName\": \"exec_time\", \"columnId\": \"757e4b3f-66be-5a10-67eb-35b61d638b58\", \"label\": \"Exec Time (ms)\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"calls\", \"columnId\": \"9cb69af4-def7-3c96-1e21-b71b2d24c002\", \"label\": \"Calls\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rows\", \"columnId\": \"0ad93dc2-2c9d-56e8-ff07-ed5f22f4bba0\", \"label\": \"Rows\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}], \"allColumns\": [{\"fieldName\": \"query\", \"columnId\": \"dc40c157-1f35-77c2-1f67-5330282e7615\", \"label\": \"Query\", \"customLabel\": true}, {\"fieldName\": \"attributes.db.namespace\", \"columnId\": \"3d628637-e647-a71e-2d77-507f2f1cc909\", \"label\": \"Database\", \"customLabel\": true}, {\"fieldName\": \"exec_time\", \"columnId\": \"757e4b3f-66be-5a10-67eb-35b61d638b58\", \"label\": \"Exec Time (ms)\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"calls\", \"columnId\": \"9cb69af4-def7-3c96-1e21-b71b2d24c002\", \"label\": \"Calls\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rows\", \"columnId\": \"0ad93dc2-2c9d-56e8-ff07-ed5f22f4bba0\", \"label\": \"Rows\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}], \"timeField\": \"@timestamp\", \"index\": \"5526f2b3-ea31-30ac-be4d-9eeec357fafa\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"5526f2b3-ea31-30ac-be4d-9eeec357fafa\", \"name\": \"indexpattern-datasource-layer-bda859cc-b8c2-cbe5-ac87-cc4b864ec8a5\"}], \"adHocDataViews\": {\"5526f2b3-ea31-30ac-be4d-9eeec357fafa\": {\"id\": \"5526f2b3-ea31-30ac-be4d-9eeec357fafa\", \"type\": \"esql\", \"name\": \"logs-postgresqlreceiver.otel-*\", \"title\": \"logs-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"d44ab96d-84b5-2a13-8596-0f2c56367684\", \"gridData\": {\"x\": 0, \"y\": 41, \"w\": 48, \"h\": 15, \"i\": \"d44ab96d-84b5-2a13-8596-0f2c56367684\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Top Queries by Call Volume\", \"visualizationType\": \"lnsDatatable\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"columns\": [{\"columnId\": \"dc40c157-1f35-77c2-1f67-5330282e7615\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"3d628637-e647-a71e-2d77-507f2f1cc909\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"9cb69af4-def7-3c96-1e21-b71b2d24c002\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"757e4b3f-66be-5a10-67eb-35b61d638b58\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"0ad93dc2-2c9d-56e8-ff07-ed5f22f4bba0\", \"isTransposed\": false, \"isMetric\": true}], \"layerId\": \"80c3ce42-506d-104c-faac-0effc2842e76\", \"layerType\": \"data\"}, \"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.top_query\\\"\\n| WHERE attributes.postgresql.calls IS NOT NULL\\n| STATS calls = SUM(attributes.postgresql.calls), exec_time = SUM(attributes.postgresql.total_exec_time), rows = SUM(attributes.postgresql.rows) BY query = attributes.db.query.text, attributes.db.namespace\\n| SORT calls DESC\\n| LIMIT 20\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"80c3ce42-506d-104c-faac-0effc2842e76\": {\"query\": {\"esql\": \"FROM logs-postgresqlreceiver.otel-*\\n| WHERE event_name == \\\"db.server.top_query\\\"\\n| WHERE attributes.postgresql.calls IS NOT NULL\\n| STATS calls = SUM(attributes.postgresql.calls), exec_time = SUM(attributes.postgresql.total_exec_time), rows = SUM(attributes.postgresql.rows) BY query = attributes.db.query.text, attributes.db.namespace\\n| SORT calls DESC\\n| LIMIT 20\\n\"}, \"columns\": [{\"fieldName\": \"query\", \"columnId\": \"dc40c157-1f35-77c2-1f67-5330282e7615\", \"label\": \"Query\", \"customLabel\": true}, {\"fieldName\": \"attributes.db.namespace\", \"columnId\": \"3d628637-e647-a71e-2d77-507f2f1cc909\", \"label\": \"Database\", \"customLabel\": true}, {\"fieldName\": \"calls\", \"columnId\": \"9cb69af4-def7-3c96-1e21-b71b2d24c002\", \"label\": \"Calls\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"exec_time\", \"columnId\": \"757e4b3f-66be-5a10-67eb-35b61d638b58\", \"label\": \"Exec Time (ms)\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rows\", \"columnId\": \"0ad93dc2-2c9d-56e8-ff07-ed5f22f4bba0\", \"label\": \"Rows\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}], \"allColumns\": [{\"fieldName\": \"query\", \"columnId\": \"dc40c157-1f35-77c2-1f67-5330282e7615\", \"label\": \"Query\", \"customLabel\": true}, {\"fieldName\": \"attributes.db.namespace\", \"columnId\": \"3d628637-e647-a71e-2d77-507f2f1cc909\", \"label\": \"Database\", \"customLabel\": true}, {\"fieldName\": \"calls\", \"columnId\": \"9cb69af4-def7-3c96-1e21-b71b2d24c002\", \"label\": \"Calls\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"exec_time\", \"columnId\": \"757e4b3f-66be-5a10-67eb-35b61d638b58\", \"label\": \"Exec Time (ms)\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rows\", \"columnId\": \"0ad93dc2-2c9d-56e8-ff07-ed5f22f4bba0\", \"label\": \"Rows\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}], \"timeField\": \"@timestamp\", \"index\": \"d68ddbad-a046-6d90-dc55-41c21b204097\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"d68ddbad-a046-6d90-dc55-41c21b204097\", \"name\": \"indexpattern-datasource-layer-80c3ce42-506d-104c-faac-0effc2842e76\"}], \"adHocDataViews\": {\"d68ddbad-a046-6d90-dc55-41c21b204097\": {\"id\": \"d68ddbad-a046-6d90-dc55-41c21b204097\", \"type\": \"esql\", \"name\": \"logs-postgresqlreceiver.otel-*\", \"title\": \"logs-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}]", "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"kuery\"}}" diff --git a/packages/postgresql_otel/kibana/dashboard/postgresql_otel-workload.json b/packages/postgresql_otel/kibana/dashboard/postgresql_otel-workload.json index fcb5a95c49d..079a449257b 100644 --- a/packages/postgresql_otel/kibana/dashboard/postgresql_otel-workload.json +++ b/packages/postgresql_otel/kibana/dashboard/postgresql_otel-workload.json @@ -2,7 +2,7 @@ "attributes": { "title": "[PostgreSQL OTel] Workload", "description": "Transaction throughput, tuple operations, and function call rates.", - "panelsJSON": "[{\"panelIndex\": \"91144e9b-fac7-b44d-0b1d-8339201b83cb\", \"gridData\": {\"x\": 0, \"y\": 0, \"w\": 48, \"h\": 2, \"i\": \"91144e9b-fac7-b44d-0b1d-8339201b83cb\"}, \"type\": \"links\", \"embeddableConfig\": {\"title\": \"Navigation\", \"enhancements\": {}, \"attributes\": {\"layout\": \"horizontal\", \"links\": [{\"id\": \"3af4ba12-6f83-488a-bdc9-0c7216a22d73\", \"order\": 0, \"label\": \"Overview\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_3af4ba12-6f83-488a-bdc9-0c7216a22d73_dashboard\"}, {\"id\": \"457f9dcd-ccf2-13f5-ae7c-fd660d496fe1\", \"order\": 1, \"label\": \"Connections\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_457f9dcd-ccf2-13f5-ae7c-fd660d496fe1_dashboard\"}, {\"id\": \"df38fd11-17eb-2a21-12aa-c07388280dff\", \"order\": 2, \"label\": \"Workload\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_df38fd11-17eb-2a21-12aa-c07388280dff_dashboard\"}, {\"id\": \"26830f56-d6ec-6d34-6a53-840ef67339ae\", \"order\": 3, \"label\": \"Query Performance\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_26830f56-d6ec-6d34-6a53-840ef67339ae_dashboard\"}, {\"id\": \"034096ad-700e-a9a9-bff4-3d46eeaa5872\", \"order\": 4, \"label\": \"I/O Health\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_034096ad-700e-a9a9-bff4-3d46eeaa5872_dashboard\"}, {\"id\": \"e9d78396-5608-90eb-32c4-2b41057b91b6\", \"order\": 5, \"label\": \"Locks\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_e9d78396-5608-90eb-32c4-2b41057b91b6_dashboard\"}, {\"id\": \"70498c6a-23a7-aafd-b3e4-b54790c59b66\", \"order\": 6, \"label\": \"Active Queries\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_70498c6a-23a7-aafd-b3e4-b54790c59b66_dashboard\"}]}}}, {\"panelIndex\": \"ddecfbc9-dfd1-45f0-db4e-3f3d89153ed0\", \"gridData\": {\"x\": 0, \"y\": 2, \"w\": 16, \"h\": 14, \"i\": \"ddecfbc9-dfd1-45f0-db4e-3f3d89153ed0\"}, \"type\": \"visualization\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"savedVis\": {\"type\": \"markdown\", \"id\": \"\", \"title\": \"\", \"description\": \"\", \"params\": {\"fontSize\": 12, \"openLinksInNewTab\": false, \"markdown\": \"## [PostgreSQL OTel] Workload\\n\\nThis dashboard monitors workload throughput:\\n- Transaction commit and rollback rates\\n- Tuple operations (insert, update, delete, fetch, return)\\n- Function call rates\\n- Rollback-to-commit ratio\\n\"}, \"uiState\": {}, \"data\": {\"aggs\": [], \"searchSource\": {\"query\": {\"query\": \"\", \"language\": \"kuery\"}, \"filter\": []}}}}}, {\"panelIndex\": \"d0a288ed-973e-3d6c-6062-d58ca57072ae\", \"gridData\": {\"x\": 16, \"y\": 2, \"w\": 8, \"h\": 4, \"i\": \"d0a288ed-973e-3d6c-6062-d58ca57072ae\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Commits/sec\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"338fc6ac-07e1-9511-2bc6-d24c2838b4c5\", \"layerType\": \"data\", \"metricAccessor\": \"42a1cf89-b882-1fc5-523e-a7ec3e566b9c\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.commits IS NOT NULL\\n| STATS commit_rate = SUM(RATE(postgresql.commits))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"338fc6ac-07e1-9511-2bc6-d24c2838b4c5\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.commits IS NOT NULL\\n| STATS commit_rate = SUM(RATE(postgresql.commits))\\n\"}, \"columns\": [{\"fieldName\": \"commit_rate\", \"columnId\": \"42a1cf89-b882-1fc5-523e-a7ec3e566b9c\", \"label\": \"Commits/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 1}}}}], \"allColumns\": [{\"fieldName\": \"commit_rate\", \"columnId\": \"42a1cf89-b882-1fc5-523e-a7ec3e566b9c\", \"label\": \"Commits/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 1}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"5bb1fd9c-0b61-d942-aa5a-f799cd6fa08e\", \"gridData\": {\"x\": 24, \"y\": 2, \"w\": 8, \"h\": 4, \"i\": \"5bb1fd9c-0b61-d942-aa5a-f799cd6fa08e\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Rollbacks/sec\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"d1b69031-6cf7-4157-d1a2-928cff077853\", \"layerType\": \"data\", \"metricAccessor\": \"9d15fada-641f-ca73-4164-1c5203b24101\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.rollbacks IS NOT NULL\\n| STATS rollback_rate = SUM(RATE(postgresql.rollbacks))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"d1b69031-6cf7-4157-d1a2-928cff077853\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.rollbacks IS NOT NULL\\n| STATS rollback_rate = SUM(RATE(postgresql.rollbacks))\\n\"}, \"columns\": [{\"fieldName\": \"rollback_rate\", \"columnId\": \"9d15fada-641f-ca73-4164-1c5203b24101\", \"label\": \"Rollbacks/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 1}}}}], \"allColumns\": [{\"fieldName\": \"rollback_rate\", \"columnId\": \"9d15fada-641f-ca73-4164-1c5203b24101\", \"label\": \"Rollbacks/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 1}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"b39918b1-fff7-9c24-fe1b-87e9869797d9\", \"gridData\": {\"x\": 32, \"y\": 2, \"w\": 8, \"h\": 4, \"i\": \"b39918b1-fff7-9c24-fe1b-87e9869797d9\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Tuples Inserted/sec\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"e0a28ae1-8151-108b-1c09-0cbcab5e2098\", \"layerType\": \"data\", \"metricAccessor\": \"b247f2b1-766d-51b0-908f-2e1ab7b8cb55\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.tup_inserted IS NOT NULL\\n| STATS tup_rate = SUM(RATE(postgresql.tup_inserted))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"e0a28ae1-8151-108b-1c09-0cbcab5e2098\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.tup_inserted IS NOT NULL\\n| STATS tup_rate = SUM(RATE(postgresql.tup_inserted))\\n\"}, \"columns\": [{\"fieldName\": \"tup_rate\", \"columnId\": \"b247f2b1-766d-51b0-908f-2e1ab7b8cb55\", \"label\": \"Inserts/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2, \"compact\": true}}}}], \"allColumns\": [{\"fieldName\": \"tup_rate\", \"columnId\": \"b247f2b1-766d-51b0-908f-2e1ab7b8cb55\", \"label\": \"Inserts/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2, \"compact\": true}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"bdc4546b-44b1-c933-0592-d71d22913a56\", \"gridData\": {\"x\": 40, \"y\": 2, \"w\": 8, \"h\": 4, \"i\": \"bdc4546b-44b1-c933-0592-d71d22913a56\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Tuples Returned/sec\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"90dad74b-86a4-b53f-fa2a-d90d6ccadcd7\", \"layerType\": \"data\", \"metricAccessor\": \"1f67ba70-92dd-aabb-0b39-9c5dc457de7f\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.tup_returned IS NOT NULL\\n| STATS tup_rate = SUM(RATE(postgresql.tup_returned))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"90dad74b-86a4-b53f-fa2a-d90d6ccadcd7\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.tup_returned IS NOT NULL\\n| STATS tup_rate = SUM(RATE(postgresql.tup_returned))\\n\"}, \"columns\": [{\"fieldName\": \"tup_rate\", \"columnId\": \"1f67ba70-92dd-aabb-0b39-9c5dc457de7f\", \"label\": \"Returned/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2, \"compact\": true}}}}], \"allColumns\": [{\"fieldName\": \"tup_rate\", \"columnId\": \"1f67ba70-92dd-aabb-0b39-9c5dc457de7f\", \"label\": \"Returned/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2, \"compact\": true}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"f03115a9-08e7-1249-e6a6-f3c8aa857d7e\", \"gridData\": {\"x\": 16, \"y\": 6, \"w\": 32, \"h\": 10, \"i\": \"f03115a9-08e7-1249-e6a6-f3c8aa857d7e\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Transaction Rate Over Time\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"8eb99e80-4f20-316d-316c-089407776c59\", \"accessors\": [\"afdb5443-f850-2fa5-592c-c644b63969e7\", \"9b440723-5a57-ba73-8ff7-e1f9b556a39e\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"position\": \"top\", \"showGridlines\": false, \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"isVisible\": true, \"position\": \"right\"}, \"valueLabels\": \"hide\", \"yTitle\": \"Transactions/sec\", \"yLeftTitle\": \"Transactions/sec\", \"axisTitlesVisibilitySettings\": {\"x\": true, \"yLeft\": true, \"yRight\": true}}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| STATS commits = SUM(RATE(postgresql.commits)), rollbacks = SUM(RATE(postgresql.rollbacks)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend)\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"8eb99e80-4f20-316d-316c-089407776c59\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| STATS commits = SUM(RATE(postgresql.commits)), rollbacks = SUM(RATE(postgresql.rollbacks)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend)\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"commits\", \"columnId\": \"afdb5443-f850-2fa5-592c-c644b63969e7\", \"label\": \"Commits/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rollbacks\", \"columnId\": \"9b440723-5a57-ba73-8ff7-e1f9b556a39e\", \"label\": \"Rollbacks/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"label\": \"time_bucket\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}], \"allColumns\": [{\"fieldName\": \"commits\", \"columnId\": \"afdb5443-f850-2fa5-592c-c644b63969e7\", \"label\": \"Commits/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rollbacks\", \"columnId\": \"9b440723-5a57-ba73-8ff7-e1f9b556a39e\", \"label\": \"Rollbacks/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"label\": \"time_bucket\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"3d9705dc-2f4a-e403-4a58-68c0520ae14a\", \"gridData\": {\"x\": 0, \"y\": 16, \"w\": 24, \"h\": 10, \"i\": \"3d9705dc-2f4a-e403-4a58-68c0520ae14a\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Tuple Throughput Over Time\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"49f6b134-f748-bd44-32a4-e8c74b4fd95c\", \"accessors\": [\"c19d0f09-fa3e-3bf7-b2c1-aab7f916be07\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"position\": \"top\", \"showGridlines\": false, \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"isVisible\": true, \"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.tup_inserted IS NOT NULL OR postgresql.tup_updated IS NOT NULL OR postgresql.tup_deleted IS NOT NULL OR postgresql.tup_fetched IS NOT NULL OR postgresql.tup_returned IS NOT NULL\\n| STATS inserted = SUM(RATE(postgresql.tup_inserted)), updated = SUM(RATE(postgresql.tup_updated)), deleted = SUM(RATE(postgresql.tup_deleted)), fetched = SUM(RATE(postgresql.tup_fetched)), returned = SUM(RATE(postgresql.tup_returned)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend)\\n| EVAL total = inserted + updated + deleted + fetched + returned\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"49f6b134-f748-bd44-32a4-e8c74b4fd95c\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.tup_inserted IS NOT NULL OR postgresql.tup_updated IS NOT NULL OR postgresql.tup_deleted IS NOT NULL OR postgresql.tup_fetched IS NOT NULL OR postgresql.tup_returned IS NOT NULL\\n| STATS inserted = SUM(RATE(postgresql.tup_inserted)), updated = SUM(RATE(postgresql.tup_updated)), deleted = SUM(RATE(postgresql.tup_deleted)), fetched = SUM(RATE(postgresql.tup_fetched)), returned = SUM(RATE(postgresql.tup_returned)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend)\\n| EVAL total = inserted + updated + deleted + fetched + returned\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"total\", \"columnId\": \"c19d0f09-fa3e-3bf7-b2c1-aab7f916be07\", \"label\": \"Tuples/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"label\": \"time_bucket\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}], \"allColumns\": [{\"fieldName\": \"total\", \"columnId\": \"c19d0f09-fa3e-3bf7-b2c1-aab7f916be07\", \"label\": \"Tuples/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"label\": \"time_bucket\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"51952ac1-530c-6165-7972-0de80765a842\", \"gridData\": {\"x\": 24, \"y\": 16, \"w\": 24, \"h\": 10, \"i\": \"51952ac1-530c-6165-7972-0de80765a842\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Tuple Operations by Type\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"bc19a1f8-a404-964d-bb41-e171119fc1be\", \"accessors\": [\"d1f7153d-8bbf-2c7e-f75e-3bb9655ca38a\", \"cd84fadf-3b81-df6e-9fe2-94e949b29a19\", \"657df529-7f21-6abf-61ae-3a3e96c9ce04\", \"8a61f45a-5e31-b5dd-0a9b-08bf76a57f24\", \"7d6f4dc4-9006-bbee-7180-ab4fe6da26e0\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"position\": \"top\", \"showGridlines\": false, \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"isVisible\": true, \"position\": \"right\"}, \"valueLabels\": \"hide\", \"yTitle\": \"Tuples/sec\", \"yLeftTitle\": \"Tuples/sec\", \"axisTitlesVisibilitySettings\": {\"x\": true, \"yLeft\": true, \"yRight\": true}}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.tup_inserted IS NOT NULL OR postgresql.tup_updated IS NOT NULL OR postgresql.tup_deleted IS NOT NULL OR postgresql.tup_fetched IS NOT NULL OR postgresql.tup_returned IS NOT NULL\\n| STATS inserted = SUM(RATE(postgresql.tup_inserted)), updated = SUM(RATE(postgresql.tup_updated)), deleted = SUM(RATE(postgresql.tup_deleted)), fetched = SUM(RATE(postgresql.tup_fetched)), returned = SUM(RATE(postgresql.tup_returned)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend)\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"bc19a1f8-a404-964d-bb41-e171119fc1be\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.tup_inserted IS NOT NULL OR postgresql.tup_updated IS NOT NULL OR postgresql.tup_deleted IS NOT NULL OR postgresql.tup_fetched IS NOT NULL OR postgresql.tup_returned IS NOT NULL\\n| STATS inserted = SUM(RATE(postgresql.tup_inserted)), updated = SUM(RATE(postgresql.tup_updated)), deleted = SUM(RATE(postgresql.tup_deleted)), fetched = SUM(RATE(postgresql.tup_fetched)), returned = SUM(RATE(postgresql.tup_returned)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend)\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"inserted\", \"columnId\": \"d1f7153d-8bbf-2c7e-f75e-3bb9655ca38a\", \"label\": \"Inserted/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"updated\", \"columnId\": \"cd84fadf-3b81-df6e-9fe2-94e949b29a19\", \"label\": \"Updated/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"deleted\", \"columnId\": \"657df529-7f21-6abf-61ae-3a3e96c9ce04\", \"label\": \"Deleted/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"fetched\", \"columnId\": \"8a61f45a-5e31-b5dd-0a9b-08bf76a57f24\", \"label\": \"Fetched/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"returned\", \"columnId\": \"7d6f4dc4-9006-bbee-7180-ab4fe6da26e0\", \"label\": \"Returned/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"label\": \"time_bucket\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}], \"allColumns\": [{\"fieldName\": \"inserted\", \"columnId\": \"d1f7153d-8bbf-2c7e-f75e-3bb9655ca38a\", \"label\": \"Inserted/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"updated\", \"columnId\": \"cd84fadf-3b81-df6e-9fe2-94e949b29a19\", \"label\": \"Updated/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"deleted\", \"columnId\": \"657df529-7f21-6abf-61ae-3a3e96c9ce04\", \"label\": \"Deleted/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"fetched\", \"columnId\": \"8a61f45a-5e31-b5dd-0a9b-08bf76a57f24\", \"label\": \"Fetched/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"returned\", \"columnId\": \"7d6f4dc4-9006-bbee-7180-ab4fe6da26e0\", \"label\": \"Returned/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"label\": \"time_bucket\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"f4c840c3-82c5-242f-a238-5f7b33ff063f\", \"gridData\": {\"x\": 0, \"y\": 26, \"w\": 48, \"h\": 12, \"i\": \"f4c840c3-82c5-242f-a238-5f7b33ff063f\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Top Databases by Transaction Rate\", \"visualizationType\": \"lnsDatatable\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"columns\": [{\"columnId\": \"51e681e6-78fa-47f5-18ea-a83a64757d24\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"7d8e003b-a8d3-2cce-28e5-7f13af863de2\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"1a76f8ee-41b5-8810-74ea-f95caf938563\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"e3f961a8-56b8-6cef-c4f6-bb30c8adda2f\", \"isTransposed\": false, \"isMetric\": true}], \"layerId\": \"4448df2a-43d1-be4f-12a4-4ef42a75073c\", \"layerType\": \"data\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.commits IS NOT NULL OR postgresql.rollbacks IS NOT NULL\\n| STATS commits = SUM(RATE(postgresql.commits)), rollbacks = SUM(RATE(postgresql.rollbacks)) BY resource.attributes.postgresql.database.name\\n| EVAL rollback_ratio = CASE(commits > 0, rollbacks / commits, 0.0)\\n| SORT commits DESC\\n| LIMIT 20\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"4448df2a-43d1-be4f-12a4-4ef42a75073c\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.commits IS NOT NULL OR postgresql.rollbacks IS NOT NULL\\n| STATS commits = SUM(RATE(postgresql.commits)), rollbacks = SUM(RATE(postgresql.rollbacks)) BY resource.attributes.postgresql.database.name\\n| EVAL rollback_ratio = CASE(commits > 0, rollbacks / commits, 0.0)\\n| SORT commits DESC\\n| LIMIT 20\\n\"}, \"columns\": [{\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"51e681e6-78fa-47f5-18ea-a83a64757d24\", \"label\": \"Database\", \"customLabel\": true}, {\"fieldName\": \"commits\", \"columnId\": \"7d8e003b-a8d3-2cce-28e5-7f13af863de2\", \"label\": \"Commits/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rollbacks\", \"columnId\": \"1a76f8ee-41b5-8810-74ea-f95caf938563\", \"label\": \"Rollbacks/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rollback_ratio\", \"columnId\": \"e3f961a8-56b8-6cef-c4f6-bb30c8adda2f\", \"label\": \"Rollback Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 2}}}}], \"allColumns\": [{\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"51e681e6-78fa-47f5-18ea-a83a64757d24\", \"label\": \"Database\", \"customLabel\": true}, {\"fieldName\": \"commits\", \"columnId\": \"7d8e003b-a8d3-2cce-28e5-7f13af863de2\", \"label\": \"Commits/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rollbacks\", \"columnId\": \"1a76f8ee-41b5-8810-74ea-f95caf938563\", \"label\": \"Rollbacks/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rollback_ratio\", \"columnId\": \"e3f961a8-56b8-6cef-c4f6-bb30c8adda2f\", \"label\": \"Rollback Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 2}}}}], \"timeField\": \"@timestamp\"}}}}, \"internalReferences\": [], \"adHocDataViews\": {}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}]", + "panelsJSON": "[{\"panelIndex\": \"91144e9b-fac7-b44d-0b1d-8339201b83cb\", \"gridData\": {\"x\": 0, \"y\": 0, \"w\": 48, \"h\": 2, \"i\": \"91144e9b-fac7-b44d-0b1d-8339201b83cb\"}, \"type\": \"links\", \"embeddableConfig\": {\"title\": \"Navigation\", \"enhancements\": {}, \"attributes\": {\"layout\": \"horizontal\", \"links\": [{\"id\": \"3af4ba12-6f83-488a-bdc9-0c7216a22d73\", \"order\": 0, \"label\": \"Overview\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_3af4ba12-6f83-488a-bdc9-0c7216a22d73_dashboard\"}, {\"id\": \"457f9dcd-ccf2-13f5-ae7c-fd660d496fe1\", \"order\": 1, \"label\": \"Connections\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_457f9dcd-ccf2-13f5-ae7c-fd660d496fe1_dashboard\"}, {\"id\": \"df38fd11-17eb-2a21-12aa-c07388280dff\", \"order\": 2, \"label\": \"Workload\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_df38fd11-17eb-2a21-12aa-c07388280dff_dashboard\"}, {\"id\": \"26830f56-d6ec-6d34-6a53-840ef67339ae\", \"order\": 3, \"label\": \"Query Performance\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_26830f56-d6ec-6d34-6a53-840ef67339ae_dashboard\"}, {\"id\": \"034096ad-700e-a9a9-bff4-3d46eeaa5872\", \"order\": 4, \"label\": \"I/O Health\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_034096ad-700e-a9a9-bff4-3d46eeaa5872_dashboard\"}, {\"id\": \"e9d78396-5608-90eb-32c4-2b41057b91b6\", \"order\": 5, \"label\": \"Locks\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_e9d78396-5608-90eb-32c4-2b41057b91b6_dashboard\"}, {\"id\": \"70498c6a-23a7-aafd-b3e4-b54790c59b66\", \"order\": 6, \"label\": \"Active Queries\", \"type\": \"dashboardLink\", \"destinationRefName\": \"link_70498c6a-23a7-aafd-b3e4-b54790c59b66_dashboard\"}]}}}, {\"panelIndex\": \"ddecfbc9-dfd1-45f0-db4e-3f3d89153ed0\", \"gridData\": {\"x\": 0, \"y\": 2, \"w\": 16, \"h\": 14, \"i\": \"ddecfbc9-dfd1-45f0-db4e-3f3d89153ed0\"}, \"type\": \"visualization\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"savedVis\": {\"type\": \"markdown\", \"id\": \"\", \"title\": \"\", \"description\": \"\", \"params\": {\"fontSize\": 12, \"openLinksInNewTab\": false, \"markdown\": \"## [PostgreSQL OTel] Workload\\n\\nThis dashboard monitors workload throughput:\\n- Transaction commit and rollback rates\\n- Tuple operations (insert, update, delete, fetch, return)\\n- Function call rates\\n- Rollback-to-commit ratio\\n\"}, \"uiState\": {}, \"data\": {\"aggs\": [], \"searchSource\": {\"query\": {\"query\": \"\", \"language\": \"kuery\"}, \"filter\": []}}}}}, {\"panelIndex\": \"d0a288ed-973e-3d6c-6062-d58ca57072ae\", \"gridData\": {\"x\": 16, \"y\": 2, \"w\": 8, \"h\": 4, \"i\": \"d0a288ed-973e-3d6c-6062-d58ca57072ae\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Commits/sec\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"338fc6ac-07e1-9511-2bc6-d24c2838b4c5\", \"layerType\": \"data\", \"metricAccessor\": \"42a1cf89-b882-1fc5-523e-a7ec3e566b9c\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.commits IS NOT NULL\\n| STATS commit_rate = SUM(RATE(postgresql.commits))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"338fc6ac-07e1-9511-2bc6-d24c2838b4c5\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.commits IS NOT NULL\\n| STATS commit_rate = SUM(RATE(postgresql.commits))\\n\"}, \"columns\": [{\"fieldName\": \"commit_rate\", \"columnId\": \"42a1cf89-b882-1fc5-523e-a7ec3e566b9c\", \"label\": \"Commits/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 1}}}}], \"allColumns\": [{\"fieldName\": \"commit_rate\", \"columnId\": \"42a1cf89-b882-1fc5-523e-a7ec3e566b9c\", \"label\": \"Commits/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 1}}}}], \"timeField\": \"@timestamp\", \"index\": \"8a5c84c0-975a-763a-4018-8800496d4ffc\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"8a5c84c0-975a-763a-4018-8800496d4ffc\", \"name\": \"indexpattern-datasource-layer-338fc6ac-07e1-9511-2bc6-d24c2838b4c5\"}], \"adHocDataViews\": {\"8a5c84c0-975a-763a-4018-8800496d4ffc\": {\"id\": \"8a5c84c0-975a-763a-4018-8800496d4ffc\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"5bb1fd9c-0b61-d942-aa5a-f799cd6fa08e\", \"gridData\": {\"x\": 24, \"y\": 2, \"w\": 8, \"h\": 4, \"i\": \"5bb1fd9c-0b61-d942-aa5a-f799cd6fa08e\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Rollbacks/sec\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"d1b69031-6cf7-4157-d1a2-928cff077853\", \"layerType\": \"data\", \"metricAccessor\": \"9d15fada-641f-ca73-4164-1c5203b24101\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.rollbacks IS NOT NULL\\n| STATS rollback_rate = SUM(RATE(postgresql.rollbacks))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"d1b69031-6cf7-4157-d1a2-928cff077853\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.rollbacks IS NOT NULL\\n| STATS rollback_rate = SUM(RATE(postgresql.rollbacks))\\n\"}, \"columns\": [{\"fieldName\": \"rollback_rate\", \"columnId\": \"9d15fada-641f-ca73-4164-1c5203b24101\", \"label\": \"Rollbacks/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 1}}}}], \"allColumns\": [{\"fieldName\": \"rollback_rate\", \"columnId\": \"9d15fada-641f-ca73-4164-1c5203b24101\", \"label\": \"Rollbacks/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 1}}}}], \"timeField\": \"@timestamp\", \"index\": \"e652c92d-1d29-9df1-da3f-0db9d95352d0\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"e652c92d-1d29-9df1-da3f-0db9d95352d0\", \"name\": \"indexpattern-datasource-layer-d1b69031-6cf7-4157-d1a2-928cff077853\"}], \"adHocDataViews\": {\"e652c92d-1d29-9df1-da3f-0db9d95352d0\": {\"id\": \"e652c92d-1d29-9df1-da3f-0db9d95352d0\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"b39918b1-fff7-9c24-fe1b-87e9869797d9\", \"gridData\": {\"x\": 32, \"y\": 2, \"w\": 8, \"h\": 4, \"i\": \"b39918b1-fff7-9c24-fe1b-87e9869797d9\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Tuples Inserted/sec\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"e0a28ae1-8151-108b-1c09-0cbcab5e2098\", \"layerType\": \"data\", \"metricAccessor\": \"b247f2b1-766d-51b0-908f-2e1ab7b8cb55\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.tup_inserted IS NOT NULL\\n| STATS tup_rate = SUM(RATE(postgresql.tup_inserted))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"e0a28ae1-8151-108b-1c09-0cbcab5e2098\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.tup_inserted IS NOT NULL\\n| STATS tup_rate = SUM(RATE(postgresql.tup_inserted))\\n\"}, \"columns\": [{\"fieldName\": \"tup_rate\", \"columnId\": \"b247f2b1-766d-51b0-908f-2e1ab7b8cb55\", \"label\": \"Inserts/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2, \"compact\": true}}}}], \"allColumns\": [{\"fieldName\": \"tup_rate\", \"columnId\": \"b247f2b1-766d-51b0-908f-2e1ab7b8cb55\", \"label\": \"Inserts/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2, \"compact\": true}}}}], \"timeField\": \"@timestamp\", \"index\": \"6026667e-280e-49ab-b05d-4bc7768dc91f\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"6026667e-280e-49ab-b05d-4bc7768dc91f\", \"name\": \"indexpattern-datasource-layer-e0a28ae1-8151-108b-1c09-0cbcab5e2098\"}], \"adHocDataViews\": {\"6026667e-280e-49ab-b05d-4bc7768dc91f\": {\"id\": \"6026667e-280e-49ab-b05d-4bc7768dc91f\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"bdc4546b-44b1-c933-0592-d71d22913a56\", \"gridData\": {\"x\": 40, \"y\": 2, \"w\": 8, \"h\": 4, \"i\": \"bdc4546b-44b1-c933-0592-d71d22913a56\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"hidePanelTitles\": true, \"attributes\": {\"title\": \"Tuples Returned/sec\", \"visualizationType\": \"lnsMetric\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layerId\": \"90dad74b-86a4-b53f-fa2a-d90d6ccadcd7\", \"layerType\": \"data\", \"metricAccessor\": \"1f67ba70-92dd-aabb-0b39-9c5dc457de7f\", \"showBar\": false, \"applyColorTo\": \"background\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.tup_returned IS NOT NULL\\n| STATS tup_rate = SUM(RATE(postgresql.tup_returned))\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"90dad74b-86a4-b53f-fa2a-d90d6ccadcd7\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.tup_returned IS NOT NULL\\n| STATS tup_rate = SUM(RATE(postgresql.tup_returned))\\n\"}, \"columns\": [{\"fieldName\": \"tup_rate\", \"columnId\": \"1f67ba70-92dd-aabb-0b39-9c5dc457de7f\", \"label\": \"Returned/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2, \"compact\": true}}}}], \"allColumns\": [{\"fieldName\": \"tup_rate\", \"columnId\": \"1f67ba70-92dd-aabb-0b39-9c5dc457de7f\", \"label\": \"Returned/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2, \"compact\": true}}}}], \"timeField\": \"@timestamp\", \"index\": \"b24e3cd4-ca69-5bcc-77c1-655824909c43\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"b24e3cd4-ca69-5bcc-77c1-655824909c43\", \"name\": \"indexpattern-datasource-layer-90dad74b-86a4-b53f-fa2a-d90d6ccadcd7\"}], \"adHocDataViews\": {\"b24e3cd4-ca69-5bcc-77c1-655824909c43\": {\"id\": \"b24e3cd4-ca69-5bcc-77c1-655824909c43\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"f03115a9-08e7-1249-e6a6-f3c8aa857d7e\", \"gridData\": {\"x\": 16, \"y\": 6, \"w\": 32, \"h\": 10, \"i\": \"f03115a9-08e7-1249-e6a6-f3c8aa857d7e\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Transaction Rate Over Time\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"8eb99e80-4f20-316d-316c-089407776c59\", \"accessors\": [\"afdb5443-f850-2fa5-592c-c644b63969e7\", \"9b440723-5a57-ba73-8ff7-e1f9b556a39e\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"position\": \"top\", \"showGridlines\": false, \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"isVisible\": true, \"position\": \"right\"}, \"valueLabels\": \"hide\", \"yTitle\": \"Transactions/sec\", \"yLeftTitle\": \"Transactions/sec\", \"axisTitlesVisibilitySettings\": {\"x\": true, \"yLeft\": true, \"yRight\": true}}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| STATS commits = SUM(RATE(postgresql.commits)), rollbacks = SUM(RATE(postgresql.rollbacks)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend)\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"8eb99e80-4f20-316d-316c-089407776c59\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| STATS commits = SUM(RATE(postgresql.commits)), rollbacks = SUM(RATE(postgresql.rollbacks)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend)\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"commits\", \"columnId\": \"afdb5443-f850-2fa5-592c-c644b63969e7\", \"label\": \"Commits/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rollbacks\", \"columnId\": \"9b440723-5a57-ba73-8ff7-e1f9b556a39e\", \"label\": \"Rollbacks/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"label\": \"time_bucket\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}], \"allColumns\": [{\"fieldName\": \"commits\", \"columnId\": \"afdb5443-f850-2fa5-592c-c644b63969e7\", \"label\": \"Commits/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rollbacks\", \"columnId\": \"9b440723-5a57-ba73-8ff7-e1f9b556a39e\", \"label\": \"Rollbacks/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"label\": \"time_bucket\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}], \"timeField\": \"@timestamp\", \"index\": \"09f4c62c-093b-804e-f12b-1207f4ba2e9e\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"09f4c62c-093b-804e-f12b-1207f4ba2e9e\", \"name\": \"indexpattern-datasource-layer-8eb99e80-4f20-316d-316c-089407776c59\"}], \"adHocDataViews\": {\"09f4c62c-093b-804e-f12b-1207f4ba2e9e\": {\"id\": \"09f4c62c-093b-804e-f12b-1207f4ba2e9e\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"3d9705dc-2f4a-e403-4a58-68c0520ae14a\", \"gridData\": {\"x\": 0, \"y\": 16, \"w\": 24, \"h\": 10, \"i\": \"3d9705dc-2f4a-e403-4a58-68c0520ae14a\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Tuple Throughput Over Time\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"49f6b134-f748-bd44-32a4-e8c74b4fd95c\", \"accessors\": [\"c19d0f09-fa3e-3bf7-b2c1-aab7f916be07\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"position\": \"top\", \"showGridlines\": false, \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"isVisible\": true, \"position\": \"right\"}, \"valueLabels\": \"hide\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.tup_inserted IS NOT NULL OR postgresql.tup_updated IS NOT NULL OR postgresql.tup_deleted IS NOT NULL OR postgresql.tup_fetched IS NOT NULL OR postgresql.tup_returned IS NOT NULL\\n| STATS inserted = SUM(RATE(postgresql.tup_inserted)), updated = SUM(RATE(postgresql.tup_updated)), deleted = SUM(RATE(postgresql.tup_deleted)), fetched = SUM(RATE(postgresql.tup_fetched)), returned = SUM(RATE(postgresql.tup_returned)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend)\\n| EVAL total = inserted + updated + deleted + fetched + returned\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"49f6b134-f748-bd44-32a4-e8c74b4fd95c\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.tup_inserted IS NOT NULL OR postgresql.tup_updated IS NOT NULL OR postgresql.tup_deleted IS NOT NULL OR postgresql.tup_fetched IS NOT NULL OR postgresql.tup_returned IS NOT NULL\\n| STATS inserted = SUM(RATE(postgresql.tup_inserted)), updated = SUM(RATE(postgresql.tup_updated)), deleted = SUM(RATE(postgresql.tup_deleted)), fetched = SUM(RATE(postgresql.tup_fetched)), returned = SUM(RATE(postgresql.tup_returned)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend)\\n| EVAL total = inserted + updated + deleted + fetched + returned\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"total\", \"columnId\": \"c19d0f09-fa3e-3bf7-b2c1-aab7f916be07\", \"label\": \"Tuples/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"label\": \"time_bucket\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}], \"allColumns\": [{\"fieldName\": \"total\", \"columnId\": \"c19d0f09-fa3e-3bf7-b2c1-aab7f916be07\", \"label\": \"Tuples/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"label\": \"time_bucket\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}], \"timeField\": \"@timestamp\", \"index\": \"14c54075-d0b0-bb96-8f12-829dacb5e3fd\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"14c54075-d0b0-bb96-8f12-829dacb5e3fd\", \"name\": \"indexpattern-datasource-layer-49f6b134-f748-bd44-32a4-e8c74b4fd95c\"}], \"adHocDataViews\": {\"14c54075-d0b0-bb96-8f12-829dacb5e3fd\": {\"id\": \"14c54075-d0b0-bb96-8f12-829dacb5e3fd\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"51952ac1-530c-6165-7972-0de80765a842\", \"gridData\": {\"x\": 24, \"y\": 16, \"w\": 24, \"h\": 10, \"i\": \"51952ac1-530c-6165-7972-0de80765a842\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Tuple Operations by Type\", \"visualizationType\": \"lnsXY\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"layers\": [{\"layerId\": \"bc19a1f8-a404-964d-bb41-e171119fc1be\", \"accessors\": [\"d1f7153d-8bbf-2c7e-f75e-3bb9655ca38a\", \"cd84fadf-3b81-df6e-9fe2-94e949b29a19\", \"657df529-7f21-6abf-61ae-3a3e96c9ce04\", \"8a61f45a-5e31-b5dd-0a9b-08bf76a57f24\", \"7d6f4dc4-9006-bbee-7180-ab4fe6da26e0\"], \"layerType\": \"data\", \"seriesType\": \"line\", \"xAccessor\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"position\": \"top\", \"showGridlines\": false, \"colorMapping\": {\"assignments\": [], \"specialAssignments\": [{\"rule\": {\"type\": \"other\"}, \"color\": {\"type\": \"loop\"}, \"touched\": false}], \"paletteId\": \"eui_amsterdam_color_blind\", \"colorMode\": {\"type\": \"categorical\"}}}], \"preferredSeriesType\": \"line\", \"legend\": {\"isVisible\": true, \"position\": \"right\"}, \"valueLabels\": \"hide\", \"yTitle\": \"Tuples/sec\", \"yLeftTitle\": \"Tuples/sec\", \"axisTitlesVisibilitySettings\": {\"x\": true, \"yLeft\": true, \"yRight\": true}}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.tup_inserted IS NOT NULL OR postgresql.tup_updated IS NOT NULL OR postgresql.tup_deleted IS NOT NULL OR postgresql.tup_fetched IS NOT NULL OR postgresql.tup_returned IS NOT NULL\\n| STATS inserted = SUM(RATE(postgresql.tup_inserted)), updated = SUM(RATE(postgresql.tup_updated)), deleted = SUM(RATE(postgresql.tup_deleted)), fetched = SUM(RATE(postgresql.tup_fetched)), returned = SUM(RATE(postgresql.tup_returned)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend)\\n| SORT time_bucket ASC\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"bc19a1f8-a404-964d-bb41-e171119fc1be\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.tup_inserted IS NOT NULL OR postgresql.tup_updated IS NOT NULL OR postgresql.tup_deleted IS NOT NULL OR postgresql.tup_fetched IS NOT NULL OR postgresql.tup_returned IS NOT NULL\\n| STATS inserted = SUM(RATE(postgresql.tup_inserted)), updated = SUM(RATE(postgresql.tup_updated)), deleted = SUM(RATE(postgresql.tup_deleted)), fetched = SUM(RATE(postgresql.tup_fetched)), returned = SUM(RATE(postgresql.tup_returned)) BY time_bucket = BUCKET(@timestamp, 20, ?_tstart, ?_tend)\\n| SORT time_bucket ASC\\n\"}, \"columns\": [{\"fieldName\": \"inserted\", \"columnId\": \"d1f7153d-8bbf-2c7e-f75e-3bb9655ca38a\", \"label\": \"Inserted/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"updated\", \"columnId\": \"cd84fadf-3b81-df6e-9fe2-94e949b29a19\", \"label\": \"Updated/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"deleted\", \"columnId\": \"657df529-7f21-6abf-61ae-3a3e96c9ce04\", \"label\": \"Deleted/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"fetched\", \"columnId\": \"8a61f45a-5e31-b5dd-0a9b-08bf76a57f24\", \"label\": \"Fetched/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"returned\", \"columnId\": \"7d6f4dc4-9006-bbee-7180-ab4fe6da26e0\", \"label\": \"Returned/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"label\": \"time_bucket\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}], \"allColumns\": [{\"fieldName\": \"inserted\", \"columnId\": \"d1f7153d-8bbf-2c7e-f75e-3bb9655ca38a\", \"label\": \"Inserted/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"updated\", \"columnId\": \"cd84fadf-3b81-df6e-9fe2-94e949b29a19\", \"label\": \"Updated/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"deleted\", \"columnId\": \"657df529-7f21-6abf-61ae-3a3e96c9ce04\", \"label\": \"Deleted/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"fetched\", \"columnId\": \"8a61f45a-5e31-b5dd-0a9b-08bf76a57f24\", \"label\": \"Fetched/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"returned\", \"columnId\": \"7d6f4dc4-9006-bbee-7180-ab4fe6da26e0\", \"label\": \"Returned/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"time_bucket\", \"columnId\": \"8b6c092d-4958-56d9-3b12-85fe36d1775a\", \"label\": \"time_bucket\", \"customLabel\": true, \"meta\": {\"type\": \"date\", \"esType\": \"date\"}}], \"timeField\": \"@timestamp\", \"index\": \"05de2df1-d67c-0043-3050-cfb57b136adc\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"05de2df1-d67c-0043-3050-cfb57b136adc\", \"name\": \"indexpattern-datasource-layer-bc19a1f8-a404-964d-bb41-e171119fc1be\"}], \"adHocDataViews\": {\"05de2df1-d67c-0043-3050-cfb57b136adc\": {\"id\": \"05de2df1-d67c-0043-3050-cfb57b136adc\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}, {\"panelIndex\": \"f4c840c3-82c5-242f-a238-5f7b33ff063f\", \"gridData\": {\"x\": 0, \"y\": 26, \"w\": 48, \"h\": 12, \"i\": \"f4c840c3-82c5-242f-a238-5f7b33ff063f\"}, \"type\": \"lens\", \"embeddableConfig\": {\"enhancements\": {\"dynamicActions\": {\"events\": []}}, \"attributes\": {\"title\": \"Top Databases by Transaction Rate\", \"visualizationType\": \"lnsDatatable\", \"type\": \"lens\", \"references\": [], \"state\": {\"visualization\": {\"columns\": [{\"columnId\": \"51e681e6-78fa-47f5-18ea-a83a64757d24\", \"isTransposed\": false, \"isMetric\": false}, {\"columnId\": \"7d8e003b-a8d3-2cce-28e5-7f13af863de2\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"1a76f8ee-41b5-8810-74ea-f95caf938563\", \"isTransposed\": false, \"isMetric\": true}, {\"columnId\": \"e3f961a8-56b8-6cef-c4f6-bb30c8adda2f\", \"isTransposed\": false, \"isMetric\": true}], \"layerId\": \"4448df2a-43d1-be4f-12a4-4ef42a75073c\", \"layerType\": \"data\"}, \"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.commits IS NOT NULL OR postgresql.rollbacks IS NOT NULL\\n| STATS commits = SUM(RATE(postgresql.commits)), rollbacks = SUM(RATE(postgresql.rollbacks)) BY resource.attributes.postgresql.database.name\\n| EVAL rollback_ratio = CASE(commits > 0, rollbacks / commits, 0.0)\\n| SORT commits DESC\\n| LIMIT 20\\n\"}, \"filters\": [], \"datasourceStates\": {\"textBased\": {\"layers\": {\"4448df2a-43d1-be4f-12a4-4ef42a75073c\": {\"query\": {\"esql\": \"TS metrics-postgresqlreceiver.otel-*\\n| WHERE postgresql.commits IS NOT NULL OR postgresql.rollbacks IS NOT NULL\\n| STATS commits = SUM(RATE(postgresql.commits)), rollbacks = SUM(RATE(postgresql.rollbacks)) BY resource.attributes.postgresql.database.name\\n| EVAL rollback_ratio = CASE(commits > 0, rollbacks / commits, 0.0)\\n| SORT commits DESC\\n| LIMIT 20\\n\"}, \"columns\": [{\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"51e681e6-78fa-47f5-18ea-a83a64757d24\", \"label\": \"Database\", \"customLabel\": true}, {\"fieldName\": \"commits\", \"columnId\": \"7d8e003b-a8d3-2cce-28e5-7f13af863de2\", \"label\": \"Commits/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rollbacks\", \"columnId\": \"1a76f8ee-41b5-8810-74ea-f95caf938563\", \"label\": \"Rollbacks/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rollback_ratio\", \"columnId\": \"e3f961a8-56b8-6cef-c4f6-bb30c8adda2f\", \"label\": \"Rollback Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 2}}}}], \"allColumns\": [{\"fieldName\": \"resource.attributes.postgresql.database.name\", \"columnId\": \"51e681e6-78fa-47f5-18ea-a83a64757d24\", \"label\": \"Database\", \"customLabel\": true}, {\"fieldName\": \"commits\", \"columnId\": \"7d8e003b-a8d3-2cce-28e5-7f13af863de2\", \"label\": \"Commits/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rollbacks\", \"columnId\": \"1a76f8ee-41b5-8810-74ea-f95caf938563\", \"label\": \"Rollbacks/sec\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"number\", \"params\": {\"decimals\": 2}}}}, {\"fieldName\": \"rollback_ratio\", \"columnId\": \"e3f961a8-56b8-6cef-c4f6-bb30c8adda2f\", \"label\": \"Rollback Ratio\", \"customLabel\": true, \"meta\": {\"type\": \"number\", \"esType\": \"long\"}, \"inMetricDimension\": true, \"params\": {\"format\": {\"id\": \"percent\", \"params\": {\"decimals\": 2}}}}], \"timeField\": \"@timestamp\", \"index\": \"2ea16e3b-b42d-61b9-a7ba-f0c5f5cb4f21\"}}}}, \"internalReferences\": [{\"type\": \"index-pattern\", \"id\": \"2ea16e3b-b42d-61b9-a7ba-f0c5f5cb4f21\", \"name\": \"indexpattern-datasource-layer-4448df2a-43d1-be4f-12a4-4ef42a75073c\"}], \"adHocDataViews\": {\"2ea16e3b-b42d-61b9-a7ba-f0c5f5cb4f21\": {\"id\": \"2ea16e3b-b42d-61b9-a7ba-f0c5f5cb4f21\", \"type\": \"esql\", \"name\": \"metrics-postgresqlreceiver.otel-*\", \"title\": \"metrics-postgresqlreceiver.otel-*\", \"timeFieldName\": \"@timestamp\", \"allowHidden\": false, \"allowNoIndex\": false, \"fieldAttrs\": {}, \"fieldFormats\": {}, \"runtimeFieldMap\": {}, \"sourceFilters\": []}}}}, \"syncTooltips\": false, \"syncColors\": false, \"syncCursor\": true, \"filters\": [], \"query\": {\"query\": \"\", \"language\": \"kuery\"}}}]", "optionsJSON": "{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}", "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"kuery\"}}" diff --git a/packages/postgresql_otel/manifest.yml b/packages/postgresql_otel/manifest.yml index c07b57a9d5a..7d9a66b0427 100644 --- a/packages/postgresql_otel/manifest.yml +++ b/packages/postgresql_otel/manifest.yml @@ -1,7 +1,7 @@ format_version: 3.5.0 name: postgresql_otel title: "PostgreSQL OpenTelemetry Assets" -version: 0.4.0 +version: 0.5.0 source: license: "Elastic-2.0" description: "PostgreSQL Assets for OpenTelemetry Collector" From f166ed48d4afce85fa7418b44db8c8cb2e95a7b6 Mon Sep 17 00:00:00 2001 From: jakubgalecki0 Date: Wed, 8 Jul 2026 14:57:51 +0200 Subject: [PATCH 2/2] update pr link --- packages/postgresql_otel/changelog.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/postgresql_otel/changelog.yml b/packages/postgresql_otel/changelog.yml index bc415b59c22..c7ee9b2e5ef 100644 --- a/packages/postgresql_otel/changelog.yml +++ b/packages/postgresql_otel/changelog.yml @@ -3,7 +3,7 @@ changes: - description: Add adHocDataViews to dashboards type: enhancement - link: https://github.com/elastic/integrations/pull/1 + link: https://github.com/elastic/integrations/pull/20036 - version: "0.4.0" changes: - description: Add description and artifact fields to alerting rule template.